📄 串口实验程序0.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 + -