|
大家帮我看看这个程序错在哪???
stc89c52的单片机 输出pwm
频率为100Hz是完全正常
现在频率为1000hz 就不行了
?????????
高手给研究研究
#include
sbit PWM=P2^0;//PWM输出口
int x;
void delay(unsigned int z) //延时函数
{
unsigned int m,n;
for(m=0;m<1000;m++)
for(n=0;n
}
void main()
{
PWM=1;
TMOD=0x01;//设置定时器0为工作方式1.GATE,C/T^,M1,M0:0001
EA=1; //开总中断式
ET0=1;//开定时器0中断
while(1)
{
TR0=0;//关闭定时器
x=900;
TR0=1;//启动定时器0
delay(250); //输出4秒左右的占空比为90%的方波
TR0=0;//关闭定时器
x=500;
TR0=1;//启动定时器0
delay(250); //输出4秒左右的占空比为50%的方波
TR0=0;
x=100;
TR0=1;
delay(250); //输出4秒左右的占空比为50%的方波
}
}
void dingshi0() interrupt 1
{
if(PWM==1)
{
PWM=0; //翻转
TH0=(65536-x)/256;
TL0=(65536-x)%256; //赋低电平时间
}
else
{
PWM=1;
TH0=(65536-(1000-x))/256; //频率为1kHz
TL0=(65536-(1000-x))%256; //赋高电平时间
}
}
|
|