51单片机串行接收并显示

有个题目,要求写一个汇编语言的程序,把串口收到的一个字节,以十进制显示。

题目链接: http://zhidao.baidu.com/question/2139761066572566628

做而论道回答如下:

可以重新编写。

    ORG   0000H
    JMP   MAIN
MAIN:
    MOV   SCON, #50H
    MOV   TMOD, #20H
    MOV   TH1, #0FDH
    SETB  TR1

    MOV   DPTR, #TAB
    MOV   P2, #0

    MOV   R2, #0
    MOV   R3, #0
    MOV   R4, #0
LOOP:
    JNB   RI, DISP
    CLR   RI
    MOV   A, SBUF
    MOV   B, #100
    DIV   AB
    MOV   R2, A
    MOV   A, B
    MOV   B, #10
    DIV   AB
    MOV   R3, A
    MOV   R4, B
DISP:
    MOV   A, R2
    MOVC  A, @A + DPTR
    MOV   P0, A
    SETB  P2.0
    DJNZ  R7, $
    DJNZ  R7, $
    CLR   P2.0

    MOV   A, R3
    MOVC  A, @A + DPTR
    MOV   P0, A
    SETB  P2.1
    DJNZ  R7, $
    DJNZ  R7, $
    CLR   P2.1

    MOV   A, R4
    MOVC  A, @A + DPTR
    MOV   P0, A
    SETB  P2.2
    DJNZ  R7, $
    DJNZ  R7, $
    CLR   P2.2

    SJMP  LOOP
TAB:
    DB   0xC0, 0xF9, 0xA4, 0xB0, 0x99
    DB   0x92, 0x82, 0xF8, 0x80, 0x90
END

用 PROTEUS 仿真调试截图如下:
 
键入符号A,数码管上就显示出来A的ASCII码值65。
键入 z,就显示 122。

本答案已经经过提问者的验证,并采纳。

你可能感兴趣的:(串口通信)