#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar speed=0,compare,count=0;
sbit key1=P3^4; //独立按键
sbit moter=P1^0; //电机
void delay(uint xms) //延时
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init() //函数初始化
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void keyscan() //通过key1按键使speed进行增加,通过中断里compare来改变PWM的占空比,不断循环
{
if(key1==0)
{
delay(50);
if(key1==0)
{
speed++;
speed%=4;
if(speed==0)
{
compare=0;
}
else if(speed==1)
{
compare=50;
}
else if(speed==2)
{
compare=75;
}
else if(speed==3)
{
compare=100;
}
}
}
}
void main()
{
init();
while(1)
{
keyscan();
}
}
void timer0() interrupt 1 //设置count与比较值compare比较,小于compare,moter停止,反之。
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
count%=100;
if(count<compare)
{
moter=1;
}
else
{
moter=0;
}
}
|