基于汇编语言的串口通信源码 很久以前做的
0赞RS EQU P3.2
RW EQU P3.3
E EQUP3.7
DATE EQU P0
BF EQU P0.7
KEY EQU P1
COUNT EQU 31H ;HANGSHU
SCAN EQU 32H ;LIESHU
KEYCOUNT EQU 34H
SHOWWHAT EQU 35H;JIANHAO
KEYF EQU 36H
TIMES EQU 37H;新增
;*****************
ORG 0000H
AJMP START
ORG 0030H
START:
MOV KEYCOUNT,#0
MOV TIMES,#0;新增
MOV SP,#5FH
MOV DATE,#00000001B
CALL WRITES
MOV DATE,#00000010B
CALL WRITES
MOV DATE,#00111000B
ACALL WRITES
MOV DATE,#00001111B
ACALL WRITES
MOV DATE,#00000110B
ACALL WRITES
MOV DATE,#10000100B
ACALL WRITES
MOV DPTR,#TAB
MOV A,#10H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
MOV A,#11H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
MOV A,#12H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
MOV A,#13H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
MOV A,#14H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
MOV A,#15H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
MOV A,#16H
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
MOV SP,#5FH
MOV DATE,#00000001B
CALL WRITES
MOV DATE,#00111000B
ACALL WRITES
MOV DATE,#00001111B
ACALL WRITES
MOV DATE,#00000110B
ACALL WRITES
MAIN:
MOV R3,#4
MOV R4,#2
MOV KEY,#0F0H
MOV 30H,#0FEH
MOV COUNT ,#0
MOV SCAN,#0
MOV SHOWWHAT,#0
MOV KEYF,#0
;******************
CALL KEYSCAN
MOV A,KEYF
CJNE A,#1,MAIN
INC TIMES ;新增
MOV KEYF,#0
MOV DATE,#00H
ACALL WRITES
CLR C
MOV A,SHOWWHAT
SUBB A,#0CH
JZ CLEAN
CLR C
MOV A,TIMES
SUBB A,#1
JZ CHECK1
CLR C
MOV A,TIMES
SUBB A,#2
JZ CHECK2
CLEAN:
MOV KEYCOUNT,#0
MOV TIMES,#0;新增
MOV DATE,#00000001B
ACALL WRITES
LJMP MAIN ;...................
CHECK1:
CLR C
MOV A,SHOWWHAT
SUBB A,#00H
JZ K2
CLR C
MOV A,SHOWWHAT
SUBB A,#03H
JZ K2
CLR C
MOV A,SHOWWHAT
SUBB A,#04H
JZ K2
CLR C
MOV A,SHOWWHAT
SUBB A,#07H
JZ K2
CLR C
MOV A,SHOWWHAT
SUBB A,#08H
JZ K2
CLR C
MOV A,SHOWWHAT
SUBB A,#0BH
JZ K2
CLR C
MOV A,SHOWWHAT
SUBB A,#0FH
JZ K2
MOV TIMES,#0;新增
LJMP MAIN
K2:
LJMP K22
CHECK2:
MOV TIMES,#1;新增
CLR C
MOV A,SHOWWHAT
SUBB A,#00H
JZ OUT
CLR C
MOV A,SHOWWHAT
SUBB A,#03H
JZ OUT
CLR C
MOV A,SHOWWHAT
SUBB A,#04H
JZ OUT
CLR C
MOV A,SHOWWHAT
SUBB A,#07H
JZ OUT
CLR C
MOV A,SHOWWHAT
SUBB A,#08H
JZ OUT
CLR C
MOV A,SHOWWHAT
SUBB A,#0BH
JZ OUT
CLR C
MOV A,SHOWWHAT
SUBB A,#0FH
JZ OUT
LJMP K3
OUT:
LJMP MAIN
K3:
MOV TIMES,#0;新增
MOV DPTR,#TAB2
MOV A,SHOWWHAT
MOVC A,@A+DPTR
ACALL PPP ;发送
ACALL OOO
MOV DPTR,#TAB
MOV A,SHOWWHAT
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE;显示
LJMP MAIN
K22:
MOV TIMES,#1
CLR C
MOV A,SHOWWHAT
SUBB A,#0FH
JZ LAST
ACALL OOO
MOV DPTR,#TAB2
MOV A,SHOWWHAT
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
ACALL OOO
MOV DPTR,#TAB
MOV A,SHOWWHAT
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE;只显示,不发送
MOV DPTR,#TAB3
MOV A,SHOWWHAT
MOVC A,@A+DPTR
ACALL PPP ;发送
LJMP MAIN
;*********************
LAST:
ACALL OOO
MOV DPTR,#TAB
MOV A,SHOWWHAT
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
MOV DPTR,#TAB3
MOV A,SHOWWHAT
MOVC A,@A+DPTR
ACALL PPP
LJMP MAIN
