wuyouwuyou

基于汇编语言的串口通信源码 很久以前做的

0
阅读(2533)

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