📄 串口实验程序乙.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,#DONG0
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,#DONG0
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,#DONG1
MOV B,#0A0H
LJMP WORDSED
KEY2: ;CLR P3.5
SETB P3.6
JB P3.6,KEY3
LCALL delay ;DELAY 60mS
JB P3.6,KEY3
MOV DPTR,#DONG2
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,#DONG3
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
;---------------------------------
;---------------------------------
DONG0:
db 000h,000h,010h,010h,030h,010h,090h,019h;"东"
db 0D0h,00Dh,0F0h,016h,0B0h,026h,0Bch,020h
db 0FCh,07fh,0D0h,03Fh,090h,000h,090h,006h
db 090h,00Ch,0B0h,018h,020h,030h,000h,010h
DONG1:
db 000h,000h,030h,020h,010h,030h,0D0h,03Fh;"南"
db 0D0h,00Fh,050h,00Dh,0D0h,005h,07ch,03Fh
db 07Ch,03fh,0D0h,005h,050h,005h,050h,000h
db 0D0h,07Fh,0F0h,03Fh,010h,000h,000h,000h
DONG2:
db 000h,000h,018h,000h,0D8h,00Fh,0C8h,03Fh;"西"
db 048h,034h,048h,036h,0F8h,033h,048h,030h
db 048h,030h,0F8h,037h,048h,034h,048h,034h
db 0D8h,03Fh,0D8h,03Fh,018h,000h,000h,000h
DONG3:
db 000h,000h,000h,018h,0C0h,018h,040h,008h;"北"
db 040h,00Ch,0FCh,03Fh,0fCh,03Fh,000h,000h
db 000h,000h,0FCh,01Fh,0FCh,01Fh,080h,038h
db 040h,038h,060h,030h,060h,038h,000h,018h
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -