
51匯編:E:\D[J\PCTO51數碼管\PCTO51.ASM
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;
} |