用定时器0中断做的1KHZ(每100us中断一次)PWM终于调试成功!
不知道是为什么,用while(1){。。。}老是不行,换成do{。。。}while(1)就成功了。
单片机代码如下:
#include <reg52.h> //头文件
#include <intrins.h>
#define uchar unsigned char // 数据类型简化-起别名
uchar count=0;
uchar x; //x=1~10,占空比档位分别对应10%~100%
sbit S8050_b=P2^0;
void T0_init()
{
TMOD |= 0x01;
TH0 = 0xff; //100us 中断一次
TL0 =0xa4;
EA=1;
ET0=1;
TR0 =1;
}
void T0_interrupt() interrupt 1
{
TH0 = 0xff; //重装初值
TL0 =0xa4;
count++; //中断次数+1
}
void main()
{ S8050_b=0; x=2;
T0_init() ;
do //1KHZ,PWM
{
if(count>0 && count<=x) {S8050_b=1;}
if(count>x && count<10) {S8050_b=0;}
if(count==10) {count=0;}
}
while(1);
}
|