|
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar speed=0,compare,count=0;
sbit key1=P3^4; //獨(dú)立按鍵
sbit moter=P1^0; //電機(jī)
void delay(uint xms) //延時(shí)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init() //函數(shù)初始化
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void keyscan() //通過key1按鍵使speed進(jìn)行增加,通過中斷里compare來改變PWM的占空比,不斷循環(huán)
{
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 //設(shè)置count與比較值compare比較,小于compare,moter停止,反之。
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
count%=100;
if(count<compare)
{
moter=1;
}
else
{
moter=0;
}
}
|
|