//串口调试助手上输入数据,然后再数码管显示
#include
#include "uart.h"
//数码管从0-F
uint8 number[]={0x0c0,0x0F9,0x0A4,0x0B0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};
uint16 n,m,num=0;
void UART_init()
{
TMOD = 0x20; //0010 0000 说明在定时器1的工作方式2下工作
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1; //定时器1运行控制位=1,说明开始计时
SCON = 0x50; //0101 0000 前两位说明在串口工作方式1 第三位SM2在方式1设置为0 第四位REN=1允许串口接收
ES=1;
EA=1;
}
main()
{
P0 = 0xFF; // led初始化
ENLED1 = 0;
ENLED2 = 1; //3/8译码器使能
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0; //选中第一个数码管
UART_init();
while (1);
}
void uart_interrupt() interrupt 4
{
if(TI==1)
{
TI=0;
REN=1;
}
if(RI==1)
{
RI=0;
num=SBUF;
if(num>=48&&num<=57)
P0=number[num%16];
else if((num>=65&&num<=70)|| (num>=97&&num<=102))
{
P0=number[9+num%16];
}
else P0=0xFF;
SBUF=num;
REN=0;
}
}