ch552使用定时器输出PWM,按键控制输出占空比,定时器正常工作,按键控制也是可以,引脚没有输出Pwm波形是什么问题?

#define uchar unsigned char

sbit key1 = P3^2;   

sbit key2 = P3^0;   

sbit pin1 = P1^4;

sbit led1 = P3^1;

uchar condition=0,time;

void Time0_Init()

{

mTimer0Clk12DivFsys();                                     //T0定时器时钟设置

mTimer_x_ModInit(0,1);                                     //T0定时器模式设置16位定时器

mTimer_x_SetData(0,0xC350);                                //T0定时器赋值5MS

mTimer0RunCTL(1);                                          //T0定时器启动

ET0   = 1;                                                 //T0定时器中断开启

EA    = 1;

}

voidmTimer0Interrupt( void ) interrupt INT_NO_TMR0 using 1           //timer0中断服务程序,使用寄存器组1

{

mTimer_x_SetData(0,0xC350);                                          //非自动重载方式需重新给TH0和TL0赋值

time++;

if(time

{

pin1=1;

}

else

pin1=0;

if(time>=100)

{

time=0;

}

}

void main( ) 

{

CfgFsys( );                                                                //CH554时钟选择配置   

    mDelaymS(5);                                                               //配置时钟后,建议延时稳定时钟

Time0_Init();

mDelaymS(5);

while(1)

{

if(key1==0)

{

mDelaymS(50);

if(key1==0)

{

led1=0;

condition+=10;

if(condition>=100)

{

condition=100;

}

}

}

if(key2==0)

{

mDelaymS(50);

if(key2==0)

{

led1=1;

condition-=10;

if(condition<=0)

{

condition=0;

}

}

}

}

}


每次你贴的代码都不全,参考的价值不是很大,这次贴出来的代码也显示不全。

要请教问题先自己排除问题,可以把你的解决问题的思路描述出来,看是不是自己想法上的问题。

ctrl+c ctrl+v贴代码解决不了现在的问题和以后可能遇到的问题。


每次回复您的帖子我即使想帮助您解决问题但也没有一次是实质性的指出了问题是什么

例如这次中断函数中的"if"条件不完整。

image.png

我们欢迎您提出问题,但是务必将问题描述完整、清晰、有条理:

我的代码是这样(现状)-----我觉得这样子(理论支撑)-----可以实现-----但是现在的现象是(异常)------我怀疑这里(歧义)------但是不生效(结果)--------

best regard

沁恒原厂技术支持,欢迎您直接和我联系

image.png


仅针对这次的问题,从你的描述可以获取信息:

image.png

1、ch552使用定时器输出PWM

我们最终的目的,P14实现一个翻转,通过time这个变量实现一些宽度上的控制

2、按键控制输出占空比

结合4,主循环中执行的部分工作正常

3、定时器正常工作

从当前代码来看定时器唯一的宏观上我们能够观察的现象就是P14的翻转输出,但是根据前述该功能是不正常的,那是如何判断定时器工作正常的呢?是否可以在中断函数中加上一些printf来监控?

4、按键控制也是可以

同2

5、引脚没有输出Pwm波形是什么问题

代码中没有对P14引脚进行初始化,那就是一个大约70K上拉的准双向,这个驱动很弱。外部是如何观察的,按照你计算的定时器5毫秒,这个相对人的主观意识是一个很微观的东西,是否有借助外部可靠仪器来分析?是如果判断P14引脚没有动作的?是否P14外部有实际连接的器件、电路导致的无法实现高电平的输出,如果这个引脚悬空有进行测试过吗?



1、最终目的使用定时器模拟可控PWM占空比输出

2、定时器工作正常,是通过串口检测的

3、P14引脚有示波器检测信号输出,没有输出波形变化

4、按键检测是否按下,通过led亮灭表示


那问题就单一成:

1、pin1 P14能否通过写1写0来实现翻转

2、中断中的time变量判断条件是否有问题


A1:led1能够翻转,那将pin1和led1对换,看pin1是否有反应,结果共有4种情况,这个可以排除或定位到硬件上面的问题

A2:分别在if和else种printf不同的东西,判断条件是否合理,这个应该可以排除掉软件的问题


软硬结合应该就可以解决这个问题了


问题已解决


只有登录才能回复,可以选择微信账号登录