📄 hkbus16.asm
字号:
MOV SBUF,A
clr c
mov a,dpl
subb a,#02
mov dpl,a
mov a,dph
subb a,#0
mov dph,a
JNB TI,$
CLR TI
CLR P3.4
DJNZ R4,RIGVn ;接收3个字节
mov a,#01 ;所有数据接收完毕,返回LIST0开始显示
lcall px ;断开主板2,接通主板1显示
NOP
LCALL CDX
LCALL W29C040 ;写628128的1区数据到29C040的1区
mov 20h,#00h
mov SCON,#0f0h
SETB ES
pop DPH
pop DPL
mov dptr,#list0
push dpl
push dph
RETI
;------------------------------------------------------
RKEYPAD:LCALL REC
MOV A,SBUF
MOV @R0,A
INC R0
CJNE A,#0DH,RKEYPAD
RET
;------------------------------------------------------
SENDOK:MOV R0,#30H
MOV A,#'%'
MOV @R0,A ;IF OK 发送acknowledge to KEYPAD
INC R0
MOV B,A
MOV A,#'0'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'0'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'F'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'E'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'A'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'E'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
LJMP CSUS
;------------------------------------------------------
SENDER:MOV R0,#30H
MOV A,#'%'
MOV @R0,A ;IF error 发送acknowledge to KEYPAD
INC R0
MOV B,A
MOV A,#'0'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'0'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'F'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'E'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'e'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
LJMP CSUS
;------------------------------------------------------
SENDTE:MOV R0,#30H ;TEST ACK
MOV A,#'%'
MOV @R0,A
INC R0
MOV B,A
MOV A,#'0'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'0'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'F'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'E'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'A'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,#'S'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
MOV A,R4 ;#'1'OR#'2'
MOV @R0,A
INC R0
ADD A,B
MOV B,A
CSUS:ANL A,#0F0H ;CHECK SUM
SWAP A
CJNE A,#10,CSUS1
CSUS1:JC CSUS2
ADD A,#07H
CSUS2:ADD A,#30H
MOV @R0,A
INC R0
MOV A,B
ANL A,#0FH
CJNE A,#10,CSUS3
CSUS3:JC CSUS4
ADD A,#07H
CSUS4:ADD A,#30H
MOV @R0,A
INC R0
MOV A,#0DH
MOV @R0,A
MOV R1,#0FFH ;延时
DJNZ R1,$
DJNZ R1,$
SETB P3.4 ;发控制端置为发送
MOV R1,#0FFH ;延时
DJNZ R1,$
MOV R0,#30H
OUTES:MOV A,@R0
INC R0
MOV SBUF,A
JNB TI,$
CLR TI
CJNE A,#0DH,OUTES
CLR P3.4
RET
;------------------------------------------------------
TEST:MOV A,#01
LCALL PX
MOV DPTR,#0F000H
MOV R5,#VER
TEST1:MOV R4,#HOR
TEST2:MOV A,R1
MOVX @DPTR,A
INC DPTR
DJNZ R4,TEST2
DJNZ R5,TEST1
MOV R7,#01
MOV 40H,#00H ;某幕的起始地址41H,40H
MOV 41H,#0F0H
LCALL CDX1
MOV 73H,#01 ;亮度等级参数73H
LCALL ZHUZ71 ;HOR-HOR/10*73H==>74H
MOV R4,#01
TEST3:MOV R5,#0FFH
TEST4:LCALL DISS
DJNZ R5,TEST4
DJNZ R4,TEST3
RET
;------------------------------------------------------
TESV:MOV A,#01
LCALL PX
MOV DPTR,#0F000H
MOV R5,#VER
TESV1:MOV R4,#HOR
CPL 0FH
MOV A,#0
JB 0FH,TESV2
MOV A,#0FFH
TESV2:MOVX @DPTR,A
INC DPTR
DJNZ R4,TESV2
DJNZ R5,TESV1
MOV R7,#01
MOV 40H,#00H ;某幕的起始地址41H,40H
MOV 41H,#0F0H
LCALL CDX1
MOV 73H,#01 ;亮度等级参数73H
LCALL ZHUZ71 ;HOR-HOR/10*73H==>74H
MOV R4,#01
TESV3:MOV R5,#0FFH
TESV4:LCALL DISS
DJNZ R5,TESV4
DJNZ R4,TESV3
RET
;------------------------------------------------------
CHECKA:CLR C
CJNE A,#10,CHECK1 ;限制A为0-9
CHECK1:JC CHECK2
MOV A,#0
CHECK2:RET
;--------------------------
CDX: ;入口参数:R7总幕数
MOV 40H,#00H ;某幕的起始地址41H,40H
MOV 41H,#00H
CDX1: LCALL RESORT
LCALL CHANGD ;转换数据为1/8扫描方式
MOV 40H,44H
MOV 41H,45H
DJNZ R7,CDX1
RET
;--------
RESORT:
MOV 45H,#0C0H ;整理后放的缓冲区的起始地址45H,44H=C000H
MOV 44H,#00H
MOV R5,#VER ;R5中存放图文屏共有几行
RESORT1:
MOV A,R5
DEC A
MOV B,#HOR
MUL AB
ADD A,40H
MOV 42H,A
MOV A,B
ADDC A,41H
MOV 43H,A
MOV R4,#HOR ;R4中存放图文屏一行有几字节
RESORT2:MOV A,#01H
LCALL PX
MOV DPL,42H
MOV DPH,43H
MOVX A,@DPTR
MOV B,A
INC DPTR
MOV 42H,DPL
MOV 43H,DPH
MOV A,#0
LCALL PX
MOV DPL,44H
MOV DPH,45H
MOV A,B
MOVX @DPTR,A
INC DPTR
MOV 44H,DPL
MOV 45H,DPH
DJNZ R4,RESORT2
DJNZ R5,RESORT1
RET
;------------
CHANGD: ;转换数据为1/8扫描方式
MOV A,#TIAO
RL A
DEC A
MOV R5,A
MOV A,#HOR
MOV B,#08
MUL AB
MOV 3EH,A
MOV 3FH,B ;1/8扫描块的总字节数3FH,3EH
MOV 30H,#00H ;起始地址C000HH放31H,30H
MOV 31H,#0C0H
MOV R0,#30H
MOV R1,#32H
CHANG1:MOV A,@R0 ;从30H,31H开始放每个1/8扫描块的起始地址
ADD A,3EH
MOV @R1,A
INC R0
INC R1
MOV A,@R0
ADDC A,3FH
MOV @R1,A
INC R0
INC R1
DJNZ R5,CHANG1
MOV 43H,41H ;整理后放的显示缓冲区的起始地址43H,42H
MOV 42H,40H
MOV A,42H
ADD A,#SUM1 ;一幕的最终地址45H,44H
MOV 44H,A
MOV A,43H
ADDC A,#SUM2
MOV 45H,A
CHANG2:MOV A,#TIAO
RL A
MOV R5,A
MOV R0,#30H
CHANG3:MOV A,#0
LCALL PX
MOV A,@R0
MOV DPL,A
INC R0
MOV A,@R0
MOV DPH,A
MOVX A,@DPTR
MOV B,A ;取出数据暂放B
INC DPTR ;指针加1,保存
DEC R0
MOV A,DPL
MOV @R0,A
INC R0
MOV A,DPH
MOV @R0,A
INC R0
MOV A,#01
LCALL PX
MOV DPL,42H
MOV DPH,43H
MOV A,B
MOVX @DPTR,A
INC DPTR
MOV 42H,DPL
MOV 43H,DPH
DJNZ R5,CHANG3
MOV A,DPL
CJNE A,44H,CHANG2
MOV A,DPH
CJNE A,45H,CHANG2
RET
;--------------------------
DELAY: mov r2,#15 ;延时一段时间
delay0:mov r0,#0ffh
delay1:mov r1,#0ffh
djnz r1,$
djnz r0,delay1
djnz r2,delay0
RET
;- - - - - - - - - - - - - - - - - - - - - - - - - - -
;以下为时间显示子程序
;********************************
DATE:MOV A,#00H
LCALL PX
XIAN: LCALL AMP
MOV 6AH,#00H
MOV 6BH,#00H
;------------------------------------------------------------
DDEL:NOP ;立即显示方式
CLR P1.4
CLR P1.5
CLR P1.6
CLR P1.7
MOV 68H,6AH ;(69H,68H)中存放第一个条屏显示内容的起始地址
MOV 69H,6BH
MOV 72H,#00H ;72H中存放显示一个条屏的第几行
MOV 73H,#00H ;73H中存放要显示的时间.
MOV 74H,#00H
LLOPZZ:
MOV DPL,69H ;把要显示的条屏的内容的首址送DPTR.
MOV DPH,68H
LOOPZ:
CLR P1.0 ;P1.1,P1.0两端口选择4个条屏.
CLR P1.1
MOV A,#HOR
RR A ;把一行有几字送R2.
MOV R2,a
ULOOP:MOVX A,@DPTR
MOV SBUF,A
INC DPTR
MOVX A,@DPTR ;显示内容的数据和时钟由P3.0和P3.1送出.
JNB TI,$
CLR TI
MOV SBUF,A
INC DPTR
JNB TI,$
CLR TI
DJNZ R2,ULOOP
CLR P1.0
SETB P1.1
MOV R2,#HOR
MOV A,#0
CRQ1:MOV SBUF,A
JNB TI,$
CLR TI
DJNZ R2,CRQ1
CLR P1.1
SETB P1.0
MOV R2,#HOR
MOV A,#0
CRQ2:MOV SBUF,A
JNB TI,$
CLR TI
DJNZ R2,CRQ2
SETB P1.0
SETB P1.1
MOV R2,#HOR
MOV A,#0
CRQ3:MOV SBUF,A
JNB TI,$
CLR TI
DJNZ R2,CRQ3
mov r2,#30
DJNZ R2,$
SETB P3.3 ;关显示
MOV A,P1
CLR C
SUBB A,#10H
mov c,acc.7
mov p1.7,c
mov c,acc.6
mov p1.6,c
mov c,acc.5
mov p1.5,c
mov c,acc.4
mov p1.4,c ;行选
mov r2,#30
DJNZ R2,$
CLR P3.3 ;开显示
INC 72H
MOV A,72H
CJNE A,#10H,BDA9 ;判是否一屏显示完成
MOV 72H,#0H
INC 73H
MOV A,73H
CJNE A,#200,BDA99 ;判显示时间到否?到则该子程序完成,返回.否则,继续显示.
mov 73h,#00h
INC 74H
MOV A,74H
CJNE A,#04,BDA99
MOV A,#01
LCALL PX
RET
BDA99:LJMP LLOPZZ
BDA9:LJMP LOOPZ
;------------------------------------------------------------
R1287:MOV A,#04H
LCALL PX
MOV DPTR,#7F0AH
MOVX A,@DPTR
JBC ACC.7,R1287
MOV DPTR,#7F80H
MOVX A,@DPTR
MOV 78H,A ;秒
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV 7FH,A ;分
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV 7EH,A ;时
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV 7DH,A ;星期
INC DPTR
MOVX A,@DPTR
MOV 7CH,A ;日
INC DPTR
MOVX A,@DPTR
MOV 7BH,A ;月
INC DPTR
MOVX A,@DPTR
MOV 7AH,A ;年低
CLR C
CJNE A,#98H,R12K
R12K:JC R12L
MOV 79H,#19H
LJMP R122
R12L:MOV 79H,#20H ;年高
R122:MOV DPTR,#7F0CH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -