|
|
#include "reg52.h"
#include<intrins.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit moto=P1^0;
sbit k2=P3^0;
sbit k3=P3^2;
//sbit k00=P2^2;
unsigned char timer1;
unsigned char timer0;
uint n=1;
uint m=2;
uint sunumber;
uint worksign;
void TimeConfig();
void delay1ms(uint t);
void sudu();
void moshi();
void ziran();
void main(void)
{
TimeConfig();
while(1)
{
moshi();
}
}
void delay1ms(uint t){
char i;
while(t--)
{
for(i=0;i<50;i++);
}
}
void TimeConfig()
{
TMOD|= 0x11;
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1;
EA = 1;
TR1 = 1;
TH0=0xD8;//(65536-10000)/256;
TL0=0xF0;//(65536-10000)%256;//10ms
ET0=1;
TR0=1;
}
void Time1(void) interrupt 3
{
TR0=0;
TH1 = 0xFE;
TL1 = 0x0C;
TR0=1;
timer1++;
}
void Time0(void) interrupt 1
{
TR1=0;
TH0=0xD8;
TL0=0xF0;
TR1=1;
timer0++;
if(timer0>1200)
{
timer0=0;
}
}
void sudu()
{
if(k2==0)
{
delay1ms(10);
if(k2==0)
{
n+=1;
if(n>3)
{n=1;
}
while(!k2);
}
}
switch(n)
{
case 1:sunumber=15;break;
case 2:sunumber=50;break;
case 3:sunumber=90;break;
}
if(timer1>100)
{
timer1=0;
}
if(timer1<sunumber)
{
moto=1;
}
else
{
moto=0;
}
}
void moshi()
{
if(k3==0)
{
delay1ms(10);
if(k3==0)
{
m+=1;
if(m>2)
{m=1;
}
while(!k3);
}
}
switch(m)
{
case 1:sudu();break;
case 2:ziran();break;
// case 3:sunumber=90;break;
}
}
void ziran()
{
ET0=1;
TR0=1;
if(timer0<400)
{
sudu();
}
else
{
moto=0;
}
}
|
|