⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 串口实验程序0.a51

📁 单片机串口实验的原程序 其简要的概括了程序的手写规范 对单片机初学者来说是很有意义的哟
💻 A51
字号:
ORG 0000h
       AJMP start
       ORG     0003H   ;INT0
       ORG     000BH   ;T0 INT
       ORG     0013H   ;1NT1
       ORG     001BH   ;T1 INT
       ORG     0023H   ;S PORT INT
        LJMP   RECIVE
       ORG     002BH   ;T2 INT
;=====================================
       ORG     0030H
start:
        MOV     R0,#07FH
        MOV     A, #00H
CLE0FFH:
        MOV     @R0,A
        DJNZ    R0,CLE0FFH

        MOV     SP,#70h
        MOV     P0,#00H
        MOV     P1,#00H
        MOV     P2,#00H
        MOV     P3,#00H
        MOV     R5,#80H
        MOV     DPTR,#SHANG0
        LCALL   MOVWORD

        MOV     TMOD,#20h
        MOV     PCON,#00h
        MOV     TL1,#0FDh
        MOV     TH1,#0FDh
        SETB    EA
        SETB    TR1
        SETB    ES
        MOV     SCON,#70h
       
;====================================
AGAIN:  NOP
        LCALL   BGN
        LCALL   KEYSCAN
        AJMP    AGAIN
;====================================
RECIVE: NOP
        PUSH    A
        PUSH    PSW
        MOV     PSW,#08H
        CLR     RI
        MOV     A,SBUF
        CJNE    A,#0AAH,RECIOUT
RECWAI0:JNB     RI,RECWAI0
        MOV     R0,SBUF
        CLR     RI
        MOV     R7,#32
RECWAI: NOP
        JNB     RI,RECWAI
        CLR     RI
        MOV     @R0,SBUF
        INC     R0
        DJNZ    R7,RECWAI
        CLR     RI
RECIOUT:
        POP     PSW
        POP     A
        RETI
;1. -----------------------------------------------------------------
;KEYSCAN:
;      KEY SCAN SUBRUTIN
;
;       1. 8032 P1 PORT PIN DEFINITION
;                  P3.2== THE 1 WORD
;                  P3.5== THE 2 WORD
;                  P3.6== THE 3 WORD
;                  P3.7== THE 4 WORD
;--------------------------------------------------------------------
KEYSCAN:NOP
        SETB    P3.2
        JB      P3.2,KEY1
        LCALL   delay         ;DELAY 60mS
        JB      P3.2,KEY1
        MOV     DPTR,#SHANG0
        MOV     B,#080H
        LJMP    WORDSED

KEY1:   ;CLR     P3.2
        SETB    P3.7
        JB      P3.7,KEY2
        LCALL   delay         ;DELAY 60mS
        JB      P3.7,KEY2
        MOV     DPTR,#SHANG1
        MOV     B,#0A0H
        LJMP    WORDSED

KEY2:   ;CLR     P3.7
        SETB    P3.6
        JB      P3.6,KEY3
        LCALL   delay         ;DELAY 60mS
        JB      P3.6,KEY3
        MOV     DPTR,#SHANG2
        MOV     B,#0C0H
        LJMP    WORDSED

KEY3:   ;CLR     P3.6
        SETB    P3.5
        JB      P3.5,KEYSOUT
        LCALL   delay         ;DELAY 60mS
        JB      P3.5,KEYSOUT
        MOV     DPTR,#SHANG3
        MOV     B,#0E0H

WORDSED:
        CLR     ES
        MOV     SBUF,#0AAH
WAIT0:  JNB     TI,WAIT0
        CLR     TI
        MOV     SBUF,B
WAIT1:  JNB     TI,WAIT1
        MOV     R7,#32
        MOV     A,#0
SEND0:  CLR     TI
        PUSH    A
        MOVC    A,@A+DPTR
        MOV     SBUF,A
WAIT2:  JNB     TI,WAIT2
        POP     A
        INC     A
        DJNZ    R7,SEND0
        CLR     TI

KEYSOUT:SETB    ES
        ;CLR     P3.5
        RET
;--------------------------------------------------------------------

;------------------------------------
BGN:
        INC R5
        INC R5
        CJNE R5,#0,CCC
        MOV R5,#80H
CCC:   
       MOV R4,#03H      ;每帧显示次数
BGN0:
       MOV A,R5         ;每帧起始位置
       MOV R0,A
;       MOV P3,#00H
;       MOV R1,#01h
       MOV P3,#0FFH
       MOV R1,#0FEh
       SETB C 
BGN1:     
       MOV A,@R0
       CPL A
       MOV P0,A         ;80h,A
       INC R0
       MOV A,@R0
       CPL A
       MOV P2,A         ;0a0h,A
       INC R0
       CJNE R0,#0,AAA0
       MOV R0,#80H
       LJMP AAA
AAA0:
       MOV A,R5
       ADD A,#32
       CJNE A,#128,AAA1
AAA1:  JNC AAA2
       ADD A,#128       
AAA2:
       MOV 2EH,R0
       CJNE A,2EH,AAA
       MOV A,R5
       MOV R0,A
AAA:      
       MOV P1,R1
       ACALL delay

       MOV A,R1
;       CLR C
       SETB C
       RLC A 
;       JC BGN2
       JNC BGN2
       MOV R1,A
       AJMP BGN1

BGN2:  
;       MOV P1,#00H
;       MOV R1,#01h
;       CLR C
       MOV P1,#0FFH
       MOV R1,#0FEh
       SETB C 
BGN3:
       MOV A,@R0
       CPL A
       MOV P0,A         ;80h,A
       INC R0
       MOV A,@R0
       CPL A
       MOV P2,A         ;0a0h,A
       INC R0
       CJNE R0,#0,BBB0
       MOV R0,#80H
BBB0:
       MOV A,R5
       ADD A,#32
       CJNE A,#128,BBB1
BBB1:  JNC BBB2
       ADD A,#128       
BBB2: 
       MOV 2EH,R0
       CJNE A,2EH,BBB
       MOV A,R5
       MOV R0,A
BBB:      
        MOV     A,R1
;        ORL     A,#03
       MOV P3,A
       ACALL delay
       MOV A,R1
;       CLR C
       SETB C
       RLC A 
;       JC BGN4
       JNC BGN4
       MOV R1,A
       AJMP BGN3

BGN4:  DJNZ R4,BGN0

        RET
;---------------------------------
;---------------------------------
delay:
       MOV R7,#2H
M1:
       MOV R6,#0FFh
M2:    NOP
       DJNZ R6,M2
       DJNZ R7,M1
       RET
;---------------------------------
;---------------------------------
MOVWORD:
        MOV     R0,#07FH
        MOV     R1,#0FFH
WORD:
        MOV     A,R0
        MOVC    A,@A+DPTR
        MOV     @R1,A
        DEC     R1
        DJNZ    R0,WORD
        RET
;---------------------------------
;---------------------------------
SHANG0:
    db 000h,000h,000h,030h,000h,038h,000h,018h;"上"
    db 000h,010h,000h,018h,0f8h,01fh,0fch,01fh
    db 0fch,01fh,060h,018h,060h,018h,060h,018h
    db 060h,038h,000h,030h,000h,010h,000h,000h
SHANG1:
    db 000h,000h,008h,000h,00ch,000h,00ch,000h;"下"
    db 00ch,000h,004h,000h,004h,010h,0fch,03fh
    db 0fch,03fh,064h,000h,0c4h,000h,0cch,000h
    db 08ch,001h,00ch,001h,00ch,000h,000h,000h
SHANG2:
    db 000h,000h,000h,008h,020h,00ch,030h,006h;"左"
    db 010h,033h,090h,031h,0f0h,033h,07ch,033h
    db 03ch,03fh,010h,03fh,010h,033h,010h,033h
    db 030h,032h,030h,030h,010h,020h,000h,000h
SHANG3:
    db 000h,000h,060h,00Ch,030h,006h,030h,007h;"右"
    db 030h,03Fh,0D0h,03Fh,0fCh,022h,07ch,022h
    db 038h,022h,030h,022h,030h,032h,030h,07Fh
    db 070h,01Eh,070h,000h,030h,000h,000h,000h

    END
       

      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -