#include <reg52.h>
unsigned char Dat_com; //接收的数据(控制字)
unsigned char Number;
unsigned char Angle;
unsigned char TimeOutCounter = 0,zhengfan= 0;//TimeOutCounter:定时器溢出计数
static speed;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
//****************外中断和定时器初始化程序**********************
void Timer_init()
{
TMOD = 0x01;
TH0 = 0x0FF;
TL0 = 0x9C;
EA = 1;
ET0 = 1;
TR0 = 1;
}
//****************延时程序**********************
void delay(unsigned char i) //误差 0us
{
unsigned char b;
for(i=1;i>0;i--)
for(b=97;b>0;b--);
}
/************************************************************
函数功能:主函数
*************************************************************/
void main(void)
(
{
if (key1==0)
Delay(20);
if (key1==0)
(P0_4=0)
{ if (key3==0)
Delay(20);
if (key3==1)
(P0_4=0);
}
if (key4==0&&Key5==0)
Dekay(20)
if (key4==0&&Key5==0)
Zhengfan==0;
if (key4==1&&Key5==0)
Dekay(20)
if (key4==1&&Key5==0)
Zhengfan==1;
if (key4==0&&Key5==1)
Dekay(20)
if (key4==0&&Key5==1)
Zhengfan==2;
if (key2==0)
Dekay(20)
if (key2==0)
Zhengfan==3
)
}
//**************************************
void timer0() interrupt 1//定时0.1ms
{TH0 = 0x0FF;
TL0 = 0x9C;
TimeOutCounter ++;
switch ( zhengfan)
{
case 0 : //脉宽1.2ms
{
key4=0;key5=0;
if( TimeOutCounter <= 12)
{
P0_1 = 1;
}
else
{
P0_1 = 0;
}
break;
}
case 1 : //脉宽1.5ms
{
key4=1;key5=0;
if( TimeOutCounter <= 15)
{
P0_1 = 1;
}
else
{
P0_1 = 0;
}
break;
}
case 2 : //脉宽1.0ms
{
key4=0;key5=1
if( TimeOutCounter <= 10)
{
P0_1 = 1;
}
else
{
P0_1 = 0;
}
break;
case 3 : //脉宽0ms
{
key2=1
if( TimeOutCounter <= 25)
{
P0_1 = 0;
}
}
}
default : break;
}
if( TimeOutCounter == 25 ) //
{
TimeOutCounter = 0;
}
}
此帖出自
小平头技术问答
一周热门 更多>