#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P1^4;//定义电机;
sbit IN2=P1^5;
sbit IN3=P1^6;
sbit IN4=P1^7;
//sbit ENA=P3^4;//定义电机使能端;
//sbit ENB=P3^5;
sbit DO1=P3^6;
sbit DO2=P3^7;
uint dec;
uint f=0;//定义f为一秒内码盘转动所测的的码盘的齿轮数
uchar i=0;//定时器T1计数值;
uchar code Segcode[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//规定数码管显示0-9,是个字符;
/*定时器初始化*/
void go()
{
IN1=1,IN2=0;
IN3=1,IN4=0;
//ENA=1;
//ENB=1;
}
void init()
{
TMOD=0x51; //T1计数器,T0定时器,方式1
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TL1=0;
TH1=0;
ET0=1;
EA=1;
TR0=1;
TR1=1;
}
/*延时子函数*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*显示程序*/
void display(uint dec)
{
dec=dec/10;
P2=0xfe;
P0=Segcode[dec%1000%100%10]; //个位
delay(10);
P2|=0xff;
P2=0xfd;
P0=Segcode[dec%1000%100/10]; //十位
delay(10);
P2|=0xff;
P2=0xfb ;
P0=Segcode[dec%1000/100];
delay(10);
P2|=0xff; //百位
P2=0xf7;
P0=Segcode[dec/1000]; //千位
delay(10);
P2|=0xff;
}
void main(void)
{
init();
while(1)
{
go();
display(f);
}
}
timer()interrupt 1
{
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
i=i+1;
if(i==100)
{ i=0;
f=TH1*256+TL1;
TL1=0;
TH1=0;
}
}