简单的PWM,控制电机加速。不知道哪里出了问题。

xuguoqi 2010-10-20 11:07:11
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

uint i=0;
uint PWM=0;
void Timer1_Init(); // T1
void Timer0_Init(); //
void main()
{
//P1=0xFF;

TMOD=0X11; //
EA=1;
Timer1_Init();
Timer0_Init();
while(1);

}


void Timer1_Int() interrupt 3
{
TH1=0XD8;
TL1=0XEF;
P1=0xFF;
TH0=(65535-PWM)/256 ;
TL0=(65535-PWM)%256 ;
TR0=1;
}


void Timer0_Int() interrupt 1
{

P1=0X00;
TR0=0;
PWM=PWM+20;
if(PWM==10000)
PWM=0;
}
void Timer1_Init()
{
TH1=0XD8;
TL1=0XEF;
ET1=1;
TR1=1;
}

void Timer0_Init()
{
TH0=(65535-PWM)/256;
TL0=(65535-PWM)%256 ;
ET0=1;
}
...全文
204 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2010-10-21
  • 打赏
  • 举报
回复
Timer0_Int() Timer1_Int() 要2个中断?如何同步?改用一个中断试试。
wackestar 2010-10-20
  • 打赏
  • 举报
回复
现在是什么现象啊?光一个程序怎么看啊。
liuweixiaocainiao 2010-10-20
  • 打赏
  • 举报
回复
既然是第一次是对的,可以肯定问题出在你的main()函数里面了,你的while(1);放错位置了.改一下就可以了.问题知道了应该知道怎么改吧
xuguoqi 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wackestar 的回复:]

现在是什么现象啊?光一个程序怎么看啊。
[/Quote]
我仿真看的PWM的波形。理应是不断增大,然后循环。
可是仿真输出的波形不是很规律,第一次是对的,接下来(开头的波形不对)的就不怎么对了!不知道怎么回事。

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧