找回密码
 立即注册
查看: 823|回复: 8

范例修改了一下,P1还是全口有信号输出。

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-30 09:08:24

10

主题

30

回帖

256

积分

中级会员

积分
256
发表于 2023-5-27 10:29:51 | 显示全部楼层 |阅读模式
本帖最后由 MWX 于 2023-5-29 19:25 编辑

#define TIM1_BaseAddress    0xFEC0

#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)
#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1)
#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)
#define PWM1_1       0x00                    //P:P1.0  N:P1.1


sfr     P0M0    =   0x94;
sfr     P0M1    =   0x93;
sfr     P1M0    =   0x92;
sfr     P1M1    =   0x91;
sfr     P3M0    =   0xb2;
sfr     P3M1    =   0xb1;
sfr     P_SW2   =   0xba;

sbit    P03     =   P0^3;

void main(void)
{
    P_SW2 = 0x80;

    P0M1 = 0x00;
    P0M0 = 0xFF;
    P1M1 = 0x00;
    P1M0 = 0xFF;

          PWMA_PS |= 0;                             //00:PWM at P1

    PWMA_ENO = 0xFF;                            //IO输出PWM

/**********************************************************
PWMx_duty = [CCRx/(ARR + 1)]*100
***********************************************************/
    TIM1-> PSCRH = 0x00;                        //预分频寄存器
    TIM1-> PSCRL = 0x00;
    TIM1-> DTR = 0x00;                          //死区时间配置

    TIM1-> CCMR1 = 0x68;                        //通道模式配置
    TIM1-> CCMR2 = 0x68;
    TIM1-> CCMR3 = 0x68;
    TIM1-> CCMR4 = 0x68;

    TIM1-> ARRH = 0x08;                         //自动重装载寄存器,计数器overflow点
    TIM1-> ARRL = 0x00;

    TIM1-> CCR1H = 0x04;                        //计数器比较值
    TIM1-> CCR1L = 0x00;
    TIM1-> CCR2H = 0x02;
    TIM1-> CCR2L = 0x00;
    TIM1-> CCR3H = 0x01;
    TIM1-> CCR3L = 0x00;
    TIM1-> CCR4H = 0x01;
    TIM1-> CCR4L = 0x00;

    TIM1-> CCER1 = 0x55;                        //配置通道输出使能和极性
    TIM1-> CCER2 = 0x55;                        //配置通道输出使能和极性

    TIM1-> BKR = 0x80;                          //主输出使能 相当于总开关
    TIM1-> IER = 0x02;                          //使能中断
    TIM1-> CR1 = 0x01;                          //使能计数器

    EA = 1;
    while (1);

只需要P1.0-P1.1输出PWM,上面程序无法关闭P1其它口输出?版主指导一下。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:490
  • 最近打卡:2025-05-03 06:32:49
已绑定手机

20

主题

293

回帖

4444

积分

论坛元老

积分
4444
发表于 2023-5-27 11:00:56 | 显示全部楼层
楼主可以看看冲哥的视频。应该马上就明白了
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=323
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15646
发表于 2023-5-27 21:30:47 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-5-27 22:48:52 | 显示全部楼层
PWM是稳定的波形,其他口是什么波形?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-30 09:08:24

10

主题

30

回帖

256

积分

中级会员

积分
256
发表于 2023-5-28 08:55:38 | 显示全部楼层
本帖最后由 MWX 于 2023-5-29 19:24 编辑

图1 是P1.0P1.1对称,图二三是其它P1口。范例程序上片后,P口输出不是同样的波形?有几人出来问过?这种现象是否设计上的问题?。

P1.0P1.1对称

P1.0P1.1对称

其它P1口

其它P1口

其它P1口

其它P1口

点评

你的程序是输出4路互补PWM,所以整个P1口都有输出,反而是正常的,没有输出才是不正常。 请明确你要什么样的输出,我 改一个给你。  详情 回复 发表于 2023-5-29 15:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-5-29 15:24:47 | 显示全部楼层
本帖最后由 梁工 于 2023-5-29 15:28 编辑
MW*** 发表于 2023-5-28 08:55
图1 是P1.0P1.1对称,图二三是其它P1口。马思克敢于创新就是要证明原来的落后。范例程序上片后,P口输出不 ...

“马思克敢于创新就是要证明原来的落后”
====这是什么意思?
范例程序上片后,P口输出不是同样的波形?有几人出来问过?这种现象是否设计上的问题?。
====你的程序是输出4路互补PWM,所以整个P1口都有输出,反而是正常的,没有输出才是不正常。每路PWM的占空比不同,所以波形不同。


请明确你要什么样的输出,我 改一个给你。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-30 09:08:24

10

主题

30

回帖

256

积分

中级会员

积分
256
发表于 2023-5-29 18:52:12 | 显示全部楼层
本帖最后由 MWX 于 2023-5-29 19:07 编辑

谢谢,最好是慢启动,P1.0和P1.1输出外部按键可调互补PWM  其它P1口都空置。

点评

你没说型号,给你STC8H8K64U的。 先别修改程序, 直接下载"01A-PWMA-P1.0-P1.1输出互补PWM"里的"pwm.hex"测试, 下载时选择主频11.0592MHz. 例子输出IO: PWM1N PWM1P P1.1 P1.0  详情 回复 发表于 2023-5-29 23:03
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-5-29 23:03:09 | 显示全部楼层
MW*** 发表于 2023-5-29 18:52
谢谢,最好是慢启动,P1.0和P1.1输出外部按键可调互补PWM  其它P1口都空置。

你没说型号,给你STC8H8K64U的。

先别修改程序, 直接下载"01A-PWMA-P1.0-P1.1输出互补PWM"里的"pwm.hex"测试, 下载时选择主频11.0592MHz.

例子输出IO:
PWM1N PWM1P
  P1.1     P1.0

01A-PWMA-P1.0-P1.1输出互补PWM.rar (48.4 KB, 下载次数: 72)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-30 09:08:24

10

主题

30

回帖

256

积分

中级会员

积分
256
发表于 2023-5-30 11:20:06 | 显示全部楼层
表示敬意。问题出在PWMA_ENO = 0xFF; 范例只修改 PWMA_ENO = 0x3 就可以了。以为PWMA_PS |= 0;  是指定,实际没有都可以。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 14:28 , Processed in 0.197563 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表