?? lcd89527.bak
字號:
CJNE A,#3,SETUP_LOOPE
MOV R1,#KEY_AERA+2
MOV A,@R1
AJMP SETUP_LOOPF
SETUP_LOOPE:
MOV R1,#KEY_AERA+2
MOV A,@R1
INC R1
SWAP A
ORL A,@R1
LCALL BCDH_1BYTE
SETUP_LOOPF:
;DEC A
MOV XmtDat,A
MOV SlvAdr,#EEPROM ;取器件地址
MOV ByteCnt,#01H ;將這1個數據寫入24WC02 中
NOP
NOP
LCALL SendData
MOV R0,#KEY_AERA
MOV KEY_GESHU,#0
CLR F_GENGGAI_STEP0
MOV R1,#OLD_Y_ADD ;放在高的RAM中,只能采用寄存器間接尋址
MOV @R1,#0
SETUP_LOOPD:
NOP
NOP
JNB F_KEY_VALUE,SETUP_LOOPD
CLR F_KEY_VALUE
MOV A,KEY_NO
CJNE A,#0FH,SETUP_LOOPD
NOP
NOP
LJMP SETUP_GENGGAI
SETUP_LOOP_WRONG: ;數字輸入錯誤,就把錯誤部分清掉。
NOP
MOV X_ADD,#6 ;空白
MOV Y_ADD,#96
MOV DPTR,#BLANK16
LCALL OUTHZ16
MOV X_ADD,#6 ;空白
MOV Y_ADD,#112
MOV DPTR,#BLANK16
LCALL OUTHZ16
MOV R0,#KEY_AERA+2
MOV KEY_GESHU,#2
SETB F_GENGGAI_STEP0
MOV OLD_Y_ADD,#88
LJMP SETUP_LOOP7
NOT_END_2:
MOV @R0,KEY_NO ;按鍵存放,第2區R0是作為按鍵的輸入存放的指針的
INC KEY_GESHU
INC R0
MOV A,KEY_NO
LCALL KEY_COMPARE
MOV A,OLD_Y_ADD
ADD A,#8
MOV OLD_Y_ADD,A
MOV Y_ADD,A
MOV X_ADD,#6 ;
LCALL OUTSHUZI
JB F_GENGGAI_STEP0,NOT_END_2_1
NOP ;此處加入關于個數的判斷
MOV A,KEY_GESHU
CJNE A,#3,NOT_END_2_0
NOT_END_2_0:
JC NOT_END_2_2
NOP
NOP
LJMP SETUP_GENGGAI ;如果個數大于2,說明輸入錯誤,重新顯示畫面
NOT_END_2_2:
LJMP SETUP_LOOP4
;*******兩個階段不同的處理方法。************************
NOT_END_2_1:
NOP ;此處加入關于個數的判斷
MOV A,KEY_GESHU
CJNE A,#5,NOT_END_2_3
NOT_END_2_3:
JC NOT_END_2_4
NOP
NOP
LJMP SETUP_LOOP_WRONG
NOT_END_2_4:
LJMP SETUP_LOOP7
;*******************進行初始化設置的程序*******************************
SETUP_CHUSHIHUA:
LCALL CLRLCD ;清屏
LCALL DISPLAY_CHUSHIHUA
MOV R0,#KEY_AERA
MOV KEY_GESHU,#0
MOV OLD_Y_ADD,#32
MOV TAI_GESHU,#0
MOV SHUZI_GESHU,#0
CHUSHIHUA_LOOP0:
NOP
NOP
JNB F_KEY_VALUE,CHUSHIHUA_LOOP0
CLR F_KEY_VALUE
CJNE A,#0FH,TO_CHUSHIHUA_DISKEY_0
MOV A,KEY_GESHU
CJNE A,#01,CHUSHIHUA_LOOP1 ;輸進來的數字只有1個
MOV R1,#KEY_AERA
MOV A,@R1
CJNE A,#0,CHUSHIHUA_LOOP2 ;不能單個為0
NOP
NOP
LJMP SETUP_CHUSHIHUA
CHUSHIHUA_LOOP2:
MOV @R1,#0 ;前面自動補0
INC R1
MOV @R1,A
INC KEY_GESHU
AJMP CHUSHIHUA_LOOP4
CHUSHIHUA_LOOP1:
CJNE A,#02,CHUSHIHUA_LOOP3
MOV R1,#KEY_AERA
MOV A,@R1
SWAP A
INC R1
ORL A,@R1
CJNE A,#0,CHUSHIHUA_LOOP1_0 ;不能為0
NOP
NOP
LJMP SETUP_CHUSHIHUA
CHUSHIHUA_LOOP1_0:
LCALL BCDH_1BYTE ;轉化成16進制
CHUSHIHUA_LOOP4:
MOV CALL_BAK,A ;把公共的CALL機號碼保存起來
AJMP CHUSHIHUA_LOOP5
CHUSHIHUA_LOOP3: ;如果只有一個F,就返回
NOP
NOP
LJMP CHUSHIHUA_LOOP0
;*******輸入CALL機號碼時,檢測是否有清除鍵*****************************
TO_CHUSHIHUA_DISKEY_0:
MOV A,KEY_GESHU
CJNE A,#0,TO_CHUSHIHUA_DISKEY_3
MOV A,KEY_NO
CJNE A,#0CH,TO_CHUSHIHUA_DISKEY_2
NOP ;在沒有任何按鍵只有清除時,就回到上一層
NOP
LJMP SETUP_MAIN
TO_CHUSHIHUA_DISKEY_2:
CJNE A,#10,TO_CHUSHIHUA_DISKEY_21 ;<10
TO_CHUSHIHUA_DISKEY_21:
JNC CHUSHIHUA_LOOP0
NOP ;不是清除,就去顯示
NOP
LJMP CHUSHIHUA_DISKEY_0
TO_CHUSHIHUA_DISKEY_3:
MOV A,KEY_NO
CJNE A,#0CH,TO_CHUSHIHUA_DISKEY_4
MOV X_ADD,#6 ;在有按鍵的情況下清除掉顯示
MOV A,OLD_Y_ADD
;SUBB A,#8
;MOV OLD_Y_ADD,A
MOV Y_ADD,A
MOV DPTR,#BLANK8
LCALL OUTSHUZI
DEC KEY_GESHU
DEC R0 ;按鍵數據存放的指針
MOV A,OLD_Y_ADD
SUBB A,#08
MOV OLD_Y_ADD,A
LJMP CHUSHIHUA_LOOP0
TO_CHUSHIHUA_DISKEY_4:
MOV A,KEY_NO
CJNE A,#10,TO_CHUSHIHUA_DISKEY_5
TO_CHUSHIHUA_DISKEY_5:
JC TO_CHUSHIHUA_DISKEY_6
LJMP CHUSHIHUA_LOOP0
TO_CHUSHIHUA_DISKEY_6:
LJMP CHUSHIHUA_DISKEY_0
;**************************************************************
CHUSHIHUA_LOOP5:
NOP
LCALL CLRLCD ;清屏
MOV R1,#KEY_AERA+1
MOV A,@R1
LCALL KEY_COMPARE
MOV X_ADD,#0
MOV Y_ADD,#24
LCALL OUTSHUZI
DEC R1
MOV A,@R1
CJNE A,#0,CHUSHIHUA_LOOP5_1
MOV X_ADD,#0
MOV Y_ADD,#16
AJMP CHUSHIHUA_LOOP5_2
CHUSHIHUA_LOOP5_1:
LCALL KEY_COMPARE
MOV X_ADD,#0
MOV Y_ADD,#16
LCALL OUTSHUZI
MOV X_ADD,#0
MOV Y_ADD,#8
CHUSHIHUA_LOOP5_2:
MOV DPTR,#ZIMU_NO ;#
LCALL OUTSHUZI
NOP
LCALL CHUSHIHUA_DISLCD_0 ;
CHUSHIHUA_LOOP7:
MOV R0,#KEY_AERA ;上次輸入的不留
MOV KEY_GESHU,#0
MOV OLD_Y_ADD,#0
MOV OLD_X_ADD,#3
;*************************循環等待輸入臺號*********************
CHUSHIHUA_LOOP6:
NOP
NOP
JNB F_KEY_VALUE,CHUSHIHUA_LOOP6
CLR F_KEY_VALUE
MOV A,KEY_NO
CJNE A,#0FH,TO_CHUSHIHUA_DISKEY_1
MOV A,KEY_GESHU
CJNE A,#0,CHUSHIHUA_LOOP6_1
NOP
NOP
LJMP SETUP_CHUSHIHUA ;如果只是檢測到一個F,就回到上一級
;****************************************************
TO_CHUSHIHUA_DISKEY_1:
NOP
NOP
LJMP CHUSHIHUA_DISKEY_1
;****************************************************
CHUSHIHUA_LOOP6_1: ;檢測到正常的F結束
MOV R0,#KEY_AERA
MOV R1,#SAVE_BUFF
CHUSHIHUA_LOOP6_3:
MOV A,@R0
CJNE A,#0BH,CHUSHIHUA_LOOP6_2
INC TAI_GESHU ;統計臺號的個數
CJNE R4,#1,CHUSHIHUA_LOOP6_4
DEC R0
MOV A,@R0
MOV @R1,A
AJMP CHUSHIHUA_LOOP6_5
CHUSHIHUA_LOOP6_4:
CJNE R4,#2,CHUSHIHUA_LOOP6_5
DEC R0
DEC R0
MOV A,@R0
SWAP A
INC R0
ORL A,@R0
LCALL BCDH_1BYTE
MOV @R1,A
CHUSHIHUA_LOOP6_5:
INC R0
INC R0
INC R1
MOV R4,#0
DJNZ BLANK_GESHU,CHUSHIHUA_LOOP6_3
NOP ;合并并且移位完畢
AJMP CHUSHIHUA_LOOP6_END
CHUSHIHUA_LOOP6_2:
INC R0
INC R4 ;R4用來統計兩個空格鍵之間的數字的個數,
AJMP CHUSHIHUA_LOOP6_3
;*************************************************
;從這里開始顯示:#XX機設置完成
;*************************************************
CHUSHIHUA_LOOP6_END:
NOP
LCALL CLRLCD ;清屏
MOV A,CALL_BAK
LCALL HBCD
MOV R4,A
ANL A,#0FH
LCALL KEY_COMPARE
MOV X_ADD,#3
MOV Y_ADD,#24
LCALL OUTSHUZI
MOV A,R4
ANL A,#0F0H
SWAP A
CJNE A,#0,CHUSHIHUA_LOOP6_END1
MOV X_ADD,#3
MOV Y_ADD,#16
AJMP CHUSHIHUA_LOOP6_END0
CHUSHIHUA_LOOP6_END1:
LCALL KEY_COMPARE
MOV X_ADD,#3
MOV Y_ADD,#16
LCALL OUTSHUZI
MOV X_ADD,#3
MOV Y_ADD,#8
CHUSHIHUA_LOOP6_END0:
MOV DPTR,#ZIMU_NO ;#
LCALL OUTSHUZI
NOP
LCALL DIS_CHUSHIHUA_OK
;**********************************
; 寫2402
;**********************************
MOV A,CALL_BAK
MOV R0,#XmtDat
MOV @R0,A
MOV R3,TAI_GESHU
INC R3
MOV R1,#SAVE_BUFF
SAVE_ALL:
MOV SubAdr,@R1
MOV SlvAdr,#EEPROM ;取器件地址
MOV ByteCnt,#01H ;將這1個數據寫入24WC02 中
LCALL SendData
INC R1
DJNZ R3,SAVE_ALL
CHUSHIHUA_LOOP6_END2:
NOP
NOP
JNB F_KEY_VALUE,CHUSHIHUA_LOOP6_END2
CLR F_KEY_VALUE
NOP
NOP
LJMP SETUP_CHUSHIHUA
;*************************************************************************
;初始化第一步:輸入CALL 機號的顯示
;*************** **********************************************************
CHUSHIHUA_DISKEY_0:
MOV A,KEY_GESHU
CJNE A,#3,CHUSHIHUA_DISKEY_01
CHUSHIHUA_DISKEY_01:
JC CHUSHIHUA_DISKEY_02
NOP
NOP
LJMP SETUP_CHUSHIHUA
CHUSHIHUA_DISKEY_02:
MOV @R0,KEY_NO ;按鍵存放,第2區R0是作為按鍵的輸入存放的指針的
INC KEY_GESHU
INC R0
MOV A,KEY_NO
LCALL KEY_COMPARE
MOV A,OLD_Y_ADD
ADD A,#8
MOV OLD_Y_ADD,A
MOV Y_ADD,A
MOV X_ADD,#6 ;
LCALL OUTSHUZI
LJMP CHUSHIHUA_LOOP0
;******************************************************
;初始化第二步:輸入臺號的顯示
;*********************************************************
CHUSHIHUA_DISKEY_1:
MOV A,KEY_NO
CJNE A,#0BH,CHUSHIHUA_DISKEY_12
;************************************
; 空格的處理
;************************************
MOV A,KEY_GESHU
CJNE A,#0,CHUSHIHUA_DISKEY_11
NOP
NOP
LJMP CHUSHIHUA_LOOP6
CHUSHIHUA_DISKEY_11:
JNB F_BLANK,CHUSHIHUA_DISKEY_110
NOP
NOP
LJMP CHUSHIHUA_LOOP6
CHUSHIHUA_DISKEY_110: ;是否是輸入一次“空格”鍵的標志
SETB F_BLANK
INC BLANK_GESHU
MOV @R0,KEY_NO
INC R0
INC KEY_GESHU
MOV A,KEY_GESHU ;根據按鍵的個數來判斷是否換行
CJNE A,#15,CHUSHIHUA_DISKEY_16
MOV OLD_X_ADD,#06
MOV OLD_Y_ADD,#0 ;換行
AJMP CHUSHIHUA_DISKEY_15
CHUSHIHUA_DISKEY_16:
CJNE A,#30,CHUSHIHUA_DISKEY_15
NOP
SETB F_FULL ;FULL
CHUSHIHUA_DISKEY_15:
MOV A,OLD_Y_ADD
ADD A,#8
MOV OLD_Y_ADD,A
MOV SHUZI_GESHU,#0
LJMP CHUSHIHUA_DISKEY_END
;*******************************************
CHUSHIHUA_DISKEY_12:
CJNE A,#0CH,CHUSHIHUA_NUMBER
LJMP CHUSHIHUA_CLEAR ;取判斷是否是取消按鍵
;***************************************
; 數字 按鍵的處理和顯示
;***************************************
CHUSHIHUA_NUMBER:
JNB F_FULL,CHUSHIHUA_DISKEY_120 ;如果已經滿了,就不在接收和處理任何數據按鍵,除了F
NOP
NOP
LJMP CHUSHIHUA_DISKEY_END
CHUSHIHUA_DISKEY_120:
MOV A,KEY_NO ;除了0--9,和“空格鍵” 和“取消”,其他的按鍵不于處理
CJNE A,#010,CHUSHIHUA_DISKEY_13
CHUSHIHUA_DISKEY_13:
JC CHUSHIHUA_DISKEY_14
NOP
NOP
LJMP CHUSHIHUA_DISKEY_END ;
;*************************
CHUSHIHUA_DISKEY_14:
MOV A,SHUZI_GESHU ;檢測的數字的個數,不能大于2位
CJNE A,#02,CHUSHIHUA_DISKEY_140
LJMP CHUSHIHUA_DISKEY_END
CHUSHIHUA_DISKEY_140:
CLR F_BLANK ;清除空格鍵的標志
MOV @R0,KEY_NO
INC R0
INC KEY_GESHU ;總共的按鍵的個數
INC SHUZI_GESHU ;兩個空格之間的數字的個數
MOV A,KEY_NO
LCALL KEY_COMPARE
MOV A,OLD_Y_ADD
;LCALL HBCD
MOV Y_ADD,A
MOV A,OLD_X_ADD
MOV X_ADD,A ;按鍵值的顯示
LCALL OUTSHUZI
MOV A,OLD_Y_ADD
ADD A,#8
MOV OLD_Y_ADD,A
CHUSHIHUA_DISKEY_END:
LJMP CHUSHIHUA_LOOP6
;***********************************
; 輸入臺號時判斷 是否是清除按鍵的判斷處理
;*********************************
CHUSHIHUA_CLEAR:
NOP
NOP
MOV A,KEY_GESHU
C
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -