#include <STC89C5xRC.H>
unsigned char code DIG_CODE[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
char buf;
void delay()//提供时延
{
int i, j;
for(i = 0; i < 15; i ++)
for(j = 0; j < 15; j ++)
;
}
void disp_digit(char d)
{
//显示个位数字
P0 = DIG_CODE[d % 10];
P2 = 0;// 0000 0000 -> (P24, P23, P22) = (0, 0, 0) -> 右数第一个数字亮
delay();
//显示十位数字
P0 = DIG_CODE[d / 10];
P2 = 1 << 2;// 0000 0100 -> (P24, P23, P22) = (0, 0, 1) -> 右数第二个数字亮
delay();
}
void UART_INT() interrupt 4 //UART中断
{
if(RI == 1)
{
RI = 0;
buf = SBUF;
}
}
int main()
{
TMOD = 0x21; //设定timer1的工作模式
SCON = 0x50; //设置串行通信格式
TH1 = 0xE6; //设定timer1的初始值
TL1 = 0xE6;
IE = 0x90;//总开关闭合(EA) + 串口中断开关闭合(ES)
TR1 = 1; //开启timer1
while(1)
{
disp_digit(buf);
}
return 0;
}