ORG 00H
AJMP MAIN
ORG 23H
AJMP UART
ORG 30H
MAIN:
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#50H
MOV DPTR,#TAB
SETB EA
SETB ES
SETB TR1
AJMP $
UART:
MOV A,SBUF
JNB RI,$
CLR RI ;这2 条放在A,SBUF前而且用JB RI,$也可以收,便还是这样写合理 。
MOVC A,@A+DPTR
MOV P0,A
RETI
TAB:
DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 099H;4
DB 092H;5
DB 082H;6
DB 0F8H;7
DB 080H;8
DB 090H;9
END
51c: E:\DPJ_C\PCTO51数码管\PCTO51.C
#include <reg51.h>
#define uchar unsigned char
uchar code tab[ ]={0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};
void initUART(void)
{
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
EA=1;
ES=1;
TR1=1;
}
void main( )
{
initUART( );
}
void uartinterrupt(void) interrupt 4
{
uchar a;
a=SBUF;
P0=tab[a];
if(RI) //这2 条放在a=SBUF 前也可以。但放在后面更合理 。
RI=0;
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |