|
#include<reg51.h>
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
sbit motor1=P1^1;
unsigned int speed;
unsigned int value;
unsigned int T;
unsigned char code ZF[]=" Speed= "; //8個(gè)字符
void INIT();
void INIT0();
void INIT1();
void Timer();
void Timer0();
void delay(unsigned t);
void init_lcd(void);
void writecom(unsigned char com);
void writedate(unsigned char date);
void motor(int speed);
main()
{
int i;
T=0;
speed=0;
INIT();
Timer();
init_lcd();
for(i=0;i<8;i++)
{
writedate(ZF[i]);
}
while(1)
{
if(k1==0)
{
delay(10);
if(k1==0)
{ int a;
motor1=0;
while((a<50)&&k1==0)
{
delay(10);
a++;
}
a=0;
}
motor(speed);
writecom(0x88);
writedate('1');
}
else
{
if(k2==0)
{
delay(10);
if(k2==0)
{ int b;
motor1=1;
while((b<50)&&k2==0)
{
delay(10);
b++;
}
b=0;
}
}
motor(speed);
writecom(0x88);
writedate('4');
}
}
}
void INIT() //k2,k3外部中斷初始化
{
IT0=1;
EX0=1;
IT1=1;
EX1=1;
EA=0;
}
void INIT0()interrupt 0 //外部中斷0服務(wù)函數(shù)
{
delay(10);
if(k3==0)
{
speed++;
}
}
void INIT1()interrupt 2//外部中斷1服務(wù)函數(shù)
{
delay(10);
if(k4==0)
{
if(speed>0)
{
speed--;
}
else
speed=0;
}
}
void Timer() //定時(shí)器初始化
{
TMOD=0x01;
TH0=0xfc; //初值fc18---1ms
TL0=0x18;
EA=1;
ET0=1;
TR0=1;
}
void Timer0()interrupt 1 //定時(shí)器服務(wù)函數(shù)
{
TH0=0xfc;
TL0=0x18;
T++;
}
void delay(unsigned t) //延時(shí)函數(shù)精確到ms
{
if(T=t)
{
while(--t);
}
T=0;
}
|
|