接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题
0-9显示没问题,10-16我想让他显示A,b,C,d,E,F,可是总是显示乱的程序代码:
#include<reg52.h> #define uchar unsigned char #define uint unsigned int unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void main() { uchar temp=0; SCON = 0x50; //设置为工作方式1,方式1要确定波特率,设置定时器 01010000 方式一,10位异步收发器(8位数据) 第二个1是REN允许串行接收位 TMOD = 0x20; //8位重装载 00100000 0打开定时器 PCON = 0x00; //波特率不倍增 TH1 = 0xFA; //波特率4800 TL1 = 0xFA; ES = 1; //打开通信中断 EA = 1; //打开总中断 TR1 = 1; //打开计数器 P2 = 0xa0;P0 = 0x00;P2 = 0; //选中蜂鸣器,关闭蜂鸣器 P2 = 0xE0; //选中数码管 打开Y7 P2=0XC0;P0=0X01;P2=0xFF;P0=0XFF; //一个数码管亮 while(1) { temp=SBUF; //SBUF是接收区 P0=duan[temp]; RI=0; //清除接收中断标志位 } }