?? lcd89527.asm
字號(hào):
MAIN4_251:
CJNE A,#10,MAIN4_26
MAIN4_26:
JC MAIN4_27
NOP
NOP
LJMP MAIN5 ;如果是不為C、0--9的其他數(shù),不于處理
MAIN4_27:
MOV R0,#KEY_AERA+2 ;第3個(gè)數(shù)字的存儲(chǔ)
MOV @R0,KEY_NO
MOV X_ADD,#6 ;顯示第3個(gè)數(shù)據(jù)
MOV Y_ADD,#88
LCALL KEY_COMPARE
LCALL OUTSHUZI
MOV X_ADD,#6 ;顯示第4光標(biāo)
MOV Y_ADD,#96
MOV DPTR,#ZIMU_GUANGBIAO
LCALL OUTSHUZI
INC KEY_GESHU
LJMP MAIN5
;*******輸入的第4個(gè)數(shù)據(jù)的處理*************
THREE_KEYS:
CJNE A,#03,MAIN4_40 ;
MOV A,KEY_NO
CJNE A,#0CH,MAIN4_39
MOV X_ADD,#6 ;顯示第3光標(biāo)
MOV Y_ADD,#88
MOV DPTR,#ZIMU_GUANGBIAO
LCALL OUTSHUZI
MOV X_ADD,#6 ;清除第4光標(biāo)
MOV Y_ADD,#96
MOV DPTR,#BLANK8
LCALL OUTSHUZI
DEC KEY_GESHU
LJMP MAIN5
MAIN4_39:
CJNE A,#010,MAIN4_3A
MAIN4_3A:
JNC MAIN4_3B ;0--9
MOV R0,#KEY_AERA+3 ;第4個(gè)數(shù)字的存儲(chǔ)
MOV @R0,KEY_NO
MOV X_ADD,#6 ;顯示第4個(gè)數(shù)據(jù)
MOV Y_ADD,#96
LCALL KEY_COMPARE
LCALL OUTSHUZI
INC KEY_GESHU
LJMP MAIN5
MAIN4_3B:
CJNE A,#0FH,MAIN4_3C
MOV R0,#KEY_AERA+2
MOV A,@R0
MOV @R0,#0
INC R0
MOV @R0,A
NOP
NOP
LJMP MAIN4_4OK
MAIN4_3C:
NOP ;其他的按鍵不處理
LJMP MAIN5
;*****************************************************
MAIN4_40: ;等待的是第5個(gè)數(shù)據(jù)是F或C
MOV A,KEY_NO
CJNE A,#0CH,MAIN4_41
MOV X_ADD,#6 ;清除第4個(gè)數(shù)據(jù)
MOV Y_ADD,#96
MOV DPTR,#ZIMU_GUANGBIAO
LCALL OUTSHUZI
DEC KEY_GESHU
LJMP MAIN5
;****************
MAIN4_41:
CJNE A,#0FH,MAIN4_42
MAIN4_4OK: ;確定之后,查表出對(duì)應(yīng)CALL機(jī)號(hào)碼,然后整理信息
NOP
CLR F_DIS_CALL_2
MOV KEY_GESHU,#0
MOV R0,#KEY_AERA ;收到兩個(gè)數(shù)據(jù)就合并
MOV A,@R0
SWAP A
INC R0
ORL A,@R0
LCALL BCDH_1BYTE
DEC R0
MOV @R0,A ;暫時(shí)存放的地點(diǎn)
MOV R0,#KEY_AERA+2 ;收到兩個(gè)數(shù)據(jù)就合并
MOV A,@R0
SWAP A
INC R0
ORL A,@R0
LCALL BCDH_1BYTE
DEC R0
DEC R0
MOV @R0,A
MOV R0,#OUT_BUFF
MOV @R0,#0 ;暫時(shí)的地址時(shí)0000,正式的應(yīng)該是查表之后得到的4位地址
INC R0
MOV @R0,#0
INC R0
MOV @R0,#0
INC R0
MOV @R0,#0
INC R0
MOV R1,#KEY_AERA+1
MOV A,@R1
MOV @R0,A
AJMP MAIN4_43
MAIN4_42:
NOP
NOP
LJMP MAIN5
MAIN4_43:
LCALL CLRLCD
LCALL DIS_CALL_END ;顯示呼叫完成的畫面
;整理完數(shù)據(jù)區(qū)后,啟動(dòng)發(fā)送
DATA_OUT: ;這里啟動(dòng)串口數(shù)據(jù)發(fā)送
SETB RS0
SETB RS1
CLR F_SEND_END
MOV R3,#5 ;發(fā)送的數(shù)據(jù)的個(gè)數(shù)
MOV R0,#OUT_BUFF
MOV A,@R0
MOV SBUF,A
NOP
;DATA_OUT_1:
; NOP
; NOP
; JNB F_SEND,DATA_OUT_1
CLR RS0
CLR RS1
CALL_OUT: ;恢復(fù)顯示畫面
LCALL DELAY_S
LCALL DELAY_S
LCALL DELAY_S
NOP
SETB F_REFRESH
SETB F_MOVED
CLR F_DIS_CALL
MAIN5:
NOP
NOP
LJMP MAIN
;**************************************************
DIS_CALL:
MOV X_ADD,#0
MOV Y_ADD,#32
MOV DPTR,#HZ_QING_3 ;請(qǐng)
LCALL OUTHZ16
MOV X_ADD,#0
MOV Y_ADD,#048
MOV DPTR,#HZ_SHU_1 ;輸
LCALL OUTHZ16
MOV X_ADD,#0
MOV Y_ADD,#064
MOV DPTR,#HZ_RU_4 ;入
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#00
MOV DPTR,#HZ_FU_2 ;服
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#16
MOV DPTR,#HZ_WU_4 ;務(wù)
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#032
MOV DPTR,#HZ_YUAN_2_1 ;員
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#48
MOV DPTR,#HZ_HAO_4 ;號(hào)
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#064
MOV DPTR,#HZ_MA_3 ;碼
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#80
MOV DPTR,#ZIMU_MAOHAO ;:
LCALL OUTSHUZI
MOV X_ADD,#6
MOV Y_ADD,#0
MOV DPTR,#HZ_XU_1 ;需
LCALL OUTHZ16
MOV X_ADD,#6
MOV Y_ADD,#016
MOV DPTR,#HZ_FU_2 ;服
LCALL OUTHZ16
MOV X_ADD,#6
MOV Y_ADD,#32
MOV DPTR,#HZ_WU_4 ;務(wù)
LCALL OUTHZ16
MOV X_ADD,#6
MOV Y_ADD,#48
MOV DPTR,#HZ_TAI_2 ;臺(tái)
LCALL OUTHZ16
MOV X_ADD,#6
MOV Y_ADD,#64
MOV DPTR,#HZ_HAO_4 ;號(hào)
LCALL OUTHZ16
MOV X_ADD,#6
MOV Y_ADD,#80
MOV DPTR,#ZIMU_MAOHAO ;:
LCALL OUTSHUZI
MOV X_ADD,#3 ;顯示第一個(gè)光標(biāo)
MOV Y_ADD,#88
MOV DPTR,#ZIMU_GUANGBIAO
LCALL OUTSHUZI
RET
;*******************************************************
DIS_CALL_END:
MOV X_ADD,#3
MOV Y_ADD,#032
MOV DPTR,#HZ_HU_1 ;呼
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#48
MOV DPTR,#HZ_JIAO_4 ;叫
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#064
MOV DPTR,#HZ_WAN_2 ;號(hào)
LCALL OUTHZ16
MOV X_ADD,#3
MOV Y_ADD,#80
MOV DPTR,#HZ_CHENG_2 ;碼
LCALL OUTHZ16
MOV X_ADD,#3 ;
MOV Y_ADD,#96
MOV DPTR,#ZIMU_TANHAO ;!
LCALL OUTSHUZI
RET
;********************************************************
; 串行中斷
;通過串口,發(fā)送接收到的數(shù)據(jù)到電腦
;********************************************************
S_INT:
PUSH A
PUSH PSW
SETB RS0
SETB RS1
JB RI,RECEIVE_INS ;首先判斷是出還是入
CLR TI
NOP
NOP
JB F_SEND_END,TO_INTS_RETI
INC R0
MOV A,@R0
MOV SBUF,A
NOP
NOP
DJNZ R3,INTS_RETI
SETB F_SEND_END ;結(jié)束標(biāo)志
TO_INTS_RETI: NOP ;最后一個(gè)數(shù)據(jù)發(fā)送完,走這里.放棄控制發(fā)送區(qū)
NOP
LJMP INTS_RETI
RECEIVE_INS:
CLR RI
MOV A,PAIDUI
ADD A,#GET_BUFF
MOV R0,A
MOV A,SBUF
;LCALL HBCD
MOV @R0,A
MOV R1,#OUT_BUFF+4 ;預(yù)先存放在OUT_BUFF相應(yīng)位置
MOV @R1,A
SETB F_GET
INTS_RETI:
POP PSW
POP A
RETI
;***********************************************************************
; 每2秒鐘刷新一次屏幕,或在沒有滿6個(gè)的情況下,有新的進(jìn)來,也啟動(dòng)刷新
; 如果6個(gè)都顯示,耗時(shí)最長:100MS
;
;**************************************************************************
DIS_REFRESH:
LCALL CLRLCD
MOV A,PAIDUI
CJNE A,#00H,DIS_REFRESH_0 ;根據(jù)排隊(duì)的個(gè)數(shù)判斷是否需要顯示
NOP
NOP
LJMP DIS_REFRESH_OTHER ;沒有要顯示的,就清屏或顯示其他畫面
DIS_REFRESH_0:
MOV R3,PAIDUI
MOV R0,#GET_BUFF
DIS_REFRESH_1:
MOV X_ADD,#0 ;1
MOV Y_ADD,#0
MOV DPTR,#SHUZI_1
LCALL OUTSHUZI
MOV X_ADD,#00 ;、
MOV Y_ADD,#08
MOV DPTR,#ZIMU_DUNHAO
LCALL OUTSHUZI
MOV X_ADD,#0 ;臺(tái)
MOV Y_ADD,#32
MOV DPTR,#HZ_TAI_2
LCALL OUTHZ16
MOV SHUZI,@R0
LCALL SHUZI_PRO ;計(jì)算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中
MOV X_ADD,#0
MOV Y_ADD,#24
LCALL OUTSHUZI
MOV X_ADD,#0
MOV Y_ADD,#16
MOV DPH,DPH_BAK
MOV DPL,DPL_BAK
LCALL OUTSHUZI
;***************************************************************
INC R0
DJNZ R3,DIS_NEXT_0
LJMP DIS_REFRESH_END
;********************************************************************
DIS_NEXT_0:
MOV X_ADD,#0 ;2
MOV Y_ADD,#77
MOV DPTR,#SHUZI_2
LCALL OUTSHUZI
MOV X_ADD,#00 ;、
MOV Y_ADD,#85
MOV DPTR,#ZIMU_DUNHAO
LCALL OUTSHUZI
MOV X_ADD,#0 ;臺(tái)
MOV Y_ADD,#112
MOV DPTR,#HZ_TAI_2
LCALL OUTHZ16
MOV SHUZI,@R0
LCALL SHUZI_PRO ;計(jì)算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中
MOV X_ADD,#0
MOV Y_ADD,#104
LCALL OUTSHUZI
MOV X_ADD,#0
MOV Y_ADD,#96
MOV DPH,DPH_BAK
MOV DPL,DPL_BAK
LCALL OUTSHUZI
;***************************************************************
INC R0
DJNZ R3,DIS_NEXT_1
LJMP DIS_REFRESH_END
;***********第2行**********************************************
DIS_NEXT_1:
MOV X_ADD,#3 ;3
MOV Y_ADD,#0
MOV DPTR,#SHUZI_3
LCALL OUTSHUZI
MOV X_ADD,#03 ;、
MOV Y_ADD,#08
MOV DPTR,#ZIMU_DUNHAO
LCALL OUTSHUZI
MOV X_ADD,#3 ;臺(tái)
MOV Y_ADD,#32
MOV DPTR,#HZ_TAI_2
LCALL OUTHZ16
MOV SHUZI,@R0
LCALL SHUZI_PRO ;計(jì)算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中
MOV X_ADD,#3
MOV Y_ADD,#24
LCALL OUTSHUZI
MOV X_ADD,#3
MOV Y_ADD,#16
MOV DPH,DPH_BAK
MOV DPL,DPL_BAK
LCALL OUTSHUZI
;***************************************************************
INC R0
DJNZ R3,DIS_NEXT_2
LJMP DIS_REFRESH_END
;********************************************************************
DIS_NEXT_2:
MOV X_ADD,#3 ;4
MOV Y_ADD,#77
MOV DPTR,#SHUZI_4
LCALL OUTSHUZI
MOV X_ADD,#3 ;、
MOV Y_ADD,#85
MOV DPTR,#ZIMU_DUNHAO
LCALL OUTSHUZI
MOV X_ADD,#3 ;臺(tái)
MOV Y_ADD,#112
MOV DPTR,#HZ_TAI_2
LCALL OUTHZ16
MOV SHUZI,@R0
LCALL SHUZI_PRO ;計(jì)算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中
MOV X_ADD,#3
MOV Y_ADD,#104
LCALL OUTSHUZI
MOV X_ADD,#3
MOV Y_ADD,#96
MOV DPH,DPH_BAK
MOV DPL,DPL_BAK
LCALL OUTSHUZI
;***************************************************************
INC R0
DJNZ R3,DIS_NEXT_3
LJMP DIS_REFRESH_END
;*********************第3行*******************************
DIS_NEXT_3:
MOV X_ADD,#6 ;5
MOV Y_ADD,#0
MOV DPTR,#SHUZI_5
LCALL OUTSHUZI
MOV X_ADD,#06 ;、
MOV Y_ADD,#08
MOV DPTR,#ZIMU_DUNHAO
LCALL OUTSHUZI
MOV X_ADD,#6 ;臺(tái)
MOV Y_ADD,#32
MOV DPTR,#HZ_TAI_2
LCALL OUTHZ16
MOV SHUZI,@R0
LCALL SHUZI_PRO ;計(jì)算出低位的DPTR,高位的放在DPH_BAK,和DPL_BAK中
MOV X_ADD,#6
MOV Y_ADD,#24
LCALL OUTSHUZI
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -