第1个回答 推荐于2017-07-02
正在做AT89S52的PWM调速,应该是一样的
#include<reg52.h>
#define uchar unsigned char
sbit zz=P1^0;
sbit fz=P1^1;
sbit K1=P3^2;
sbit K2=P3^3;
uchar PWM,a=0;
void main()
{
TMOD=0X01;
TH0=0XFF;
TL0=0XF6;
TR0=1;
ET0=1;
EA=1;
PWM=40;
zz=1;
fz=1;
while(1)
{
if(!K1)
{
PWM+=10;
}
if(!K2)
{
PWM-=10;
}
if(PWM>=100)
PWM=1;
if(PWM<=0)
PWM=99;
}
}
void timer0() interrupt 1
{
TH0=0XFF;
TL0=0XF6;
a++;
if(a>=100)
a=0;
if(a<=PWM)
{
zz=0;
}
else
{
zz=1;
}
}本回答被网友采纳