#include <reg52.H>
#include <ABSACC.H>
#define KEY_X_ADD XBYTE[0x8001]
#define KEY_Y_ADD XBYTE[0x8002]
#define LEDCODEADD XBYTE[0x8004]
#define LEDBITADD XBYTE[0x8002]
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar code ledcode[] = {0x3F,0x06,0x5B,0x4F, //0,1,2,3,
0x66,0x6D,0x7F,0x07, //4,5,6,7,
0x7F,0x6F,0x77,0x7C, //8,9,A,B,
0x39,0x5E,0x79,0x71, //C,D,E,F
0x00};
uchar code ledbitcode[] = {0x20,0x10,0x08,0x04,0x02,0x01};
uchar dispbuff[] = {16,16,16,16,16,16};
uchar T1_time = 0; //T1定时器计满次数
uchar T0_count = 0; //C0计数器计满次数
uchar flag = 0;
ulong f;
delay(int t)
{
while(t--);
}
display()
{
int i;
for(i=0;i<6;i++)
{
LEDCODEADD = ledcode[dispbuff[i]];
LEDBITADD = ledbitcode[i];
delay(200);
}
}
void t1(void) interrupt 3
{
TH1 = 0x3C;
TL1 = 0xB0;
T1_time++;
if(T1_time == 10)
{
TR0 = 0;
TR1 = 0;
T1_time = 0;
flag = 1;
}
}
void t0(void) interrupt 1
{
T0_count++;
}
main()
{
int i;
TMOD = 0x15; //0001 0101 T0计数器,工作于方式1,T1定时器,工作于方式1
TH1 = 0x3C; //定时100ms
TL1 = 0xB0;
TH0 = 0; //计数器清0
TL0 = 0;
TR0 = 1; //开计数器C0;
TR1 = 1; //开定时器T1;
ET0 = 1; //允许计数器C0溢出中断
ET1 = 1; //允许定时器T1溢出中断
EA = 1;
while(1)
{
if(flag == 1)
{
flag = 0;
f = T0_count*65535 + TH0*256 + TL0;
i = 5;
while(f/10)
{
dispbuff[i] = f%10;
f = f/10;
i--;
}
dispbuff[i] = f;
T0_count = 0;
T1_time = 0;
TH0 = 0;
TL0 = 0;
TR0 = 1;
TR1 = 1;
}
display();
}
}