?? cs1694_詳細注釋版.asm
字號:
SETB CS1694_STB
NOP
MOV CS1694_REG,#DATA_RAM_SET
CLR CS1694_STB
LCALL CS1694_8BIT_WRITE
MOV TEMP_1,#0EH
MOV R0,#GRID1_REG
CS1694_DIS_RAM_WRITE_1:
MOV A,@R0
MOV CS1694_REG,A
LCALL CS1694_8BIT_WRITE
INC R0
DJNZ TEMP_1,CS1694_DIS_RAM_WRITE_1
NOP
RET
;--------------------------------------------------------
CS1694_KEY_RAM_TEST:
CLR KEY_FLAG
LCALL DELAY_20MS
SETB CS1694_STB
NOP
MOV CS1694_REG,#MODE_DATA_READ_1
CLR CS1694_STB
NOP
LCALL CS1694_8BIT_WRITE
NOP
SETB CS1694_DATA
NOP
MOV TEMP_4,#05H
MOV R1,#KEY_RAM_1
KEY_READ_LOOP: ;讀入5字節KEY_RAM
LCALL CS1694_8BIT_READ
MOV @R1,KEY_REG
INC R1
DJNZ TEMP_4,KEY_READ_LOOP
MOV TEMP_4,#05H
MOV R1,#KEY_RAM_1
KEY_VALUE_JUDGE:
MOV A,@R1
JZ CS1694_KEY_READ_EXIT
INC R1
DJNZ TEMP_4,KEY_VALUE_JUDGE
SETB KEY_FLAG
CS1694_KEY_READ_EXIT:
NOP
RET
;--------------------------------------------------------
CS1694_KEY_JUDGE:
MOV A,KEY_REG
XRL A,#01H
JZ KEY_01
MOV A,KEY_REG
XRL A,#08H
JZ KEY_02
;SETB ERROR_FLAG_4
LJMP CS1694_KEY_JUDGE_EXIT_1
KEY_01:
SETB KEY_FLAG_1
;LJMP CS1694_KEY_JUDGE_EXIT
MOV R6,#06H
;MOV R0,#DIS_CLASS_H_LED
CLR A
KEY_01_1:
MOV @R0,A
INC R0
DJNZ R6,KEY_01_1
MOV @R0,#3FH
INC R0
MOV @R0,#06H
NOP
;LCALL CS1694_DISPLAY
LJMP CS1694_KEY_JUDGE_EXIT
KEY_02:
SETB KEY_FLAG_2
;LJMP CS1694_KEY_JUDGE_EXIT
MOV R6,#06H
CLR A
KEY_02_1:
MOV @R0,A
INC R0
DJNZ R6,KEY_02_1
MOV @R0,#3FH
INC R0
MOV @R0,#5BH
NOP
;LCALL CS1694_DISPLAY
LJMP CS1694_KEY_JUDGE_EXIT
CS1694_KEY_JUDGE_EXIT_1:
;SETB ERROR_FLAG_4
CS1694_KEY_JUDGE_EXIT:
NOP
RET
;--------------------------------------------------------
;********************************************************
;--------------------------------------------------------
CS1694_DIS_RAM_TEST:
NOP
RET
;--------------------------------------------------------
CS1694_8BIT_WRITE:
CLR C
MOV R7,#08H
MOV A,CS1694_REG
CS1694_8BIT_WRITE_1:
NOP
NOP ;CS1694_STB置低后延時一段時間
CLR CS1694_CLK
NOP
NOP
RRC A ;順序寫入B0 B1...B7
MOV CS1694_DATA,C
NOP
NOP
SETB CS1694_CLK
NOP
NOP
DJNZ R7,CS1694_8BIT_WRITE_1
RET
;--------------------------------------------------------
CS1694_4BIT_WRITE:
CLR C
MOV A,#00H
MOV R7,#04H
CS1694_4BIT_WRITE_1:
CLR CS1694_CLK
RRC A
MOV CS1694_DATA,C
NOP
NOP
SETB CS1694_CLK
NOP
NOP
DJNZ R7,CS1694_4BIT_WRITE_1
RET
;--------------------------------------------------------
;--------------------------------------------------------
CS1694_8BIT_READ:
CLR C
MOV R7,#08H
CS1694_8BIT_READ_1:
MOV R6,#20H
DJNZ R6,$ ;CS1694_STB置低后延時一段時間
CLR CS1694_CLK
NOP
NOP
NOP
NOP
SETB CS1694_CLK
NOP
MOV C,CS1694_DATA
RRC A
DJNZ R7,CS1694_8BIT_READ_1
ANL A,#1BH
MOV KEY_REG,A
RET
;---------------通用延時子程序---------------------------
DELAY_0:
MOV TH1_DATA,#DELAY_3MS_H
MOV TL1_DATA,#DELAY_3MS_L
MOV TH1,TH1_DATA
MOV TL1,TL1_DATA
DELAY_0_1:
MOV TMOD,#00010000B
MOV IE,#10001000B
MOV TCON,#00000000B
LCALL DELAY_TIME_SET
RET
;--------------------------------------------------------
DELAY_1:
MOV TH1_DATA,#DELAY_5MS_H
MOV TL1_DATA,#DELAY_5MS_L
MOV TH1,TH1_DATA
MOV TL1,TL1_DATA
DELAY_1_1:
MOV TMOD,#00010000B
MOV IE,#10001000B
MOV TCON,#00000000B
LCALL DELAY_TIME_SET
RET
;--------------------------------------------------------
DELAY_2:
MOV TH1_DATA,#DELAY_10MS_H
MOV TL1_DATA,#DELAY_10MS_L
MOV TH1,TH1_DATA
MOV TL1,TL1_DATA
DELAY_2_1:
MOV TMOD,#00010000B
MOV IE,#10001000B
MOV TCON,#00000000B
LCALL DELAY_TIME_SET
RET
;--------------------------------------------------------
DELAY_3:
MOV TH1_DATA,#DELAY_15MS_H
MOV TL1_DATA,#DELAY_15MS_L
MOV TH1,TH1_DATA
MOV TL1,TL1_DATA
DELAY_3_1:
MOV TMOD,#00010000B
MOV IE,#10001000B
MOV TCON,#00000000B
LCALL DELAY_TIME_SET
RET
;--------------------------------------------------------
DELAY_4:
MOV TH1_DATA,#9EH
MOV TL1_DATA,#58H
MOV TH1,TH1_DATA
MOV TL1,TL1_DATA
DELAY_4_1:
MOV TMOD,#00010000B
MOV IE,#10001000B
MOV TCON,#00000000B
LCALL DELAY_TIME_SET
RET
;;--------------------------------------------------------
;;********************************************************
;;--------------------------------------------------------
DELAY_TIME_SET:
SETB TR1
DELAY_TIME_SET_1:
JB DELAY_FLAG,DELAY_TIME_EXIT
LJMP DELAY_TIME_SET_1
DELAY_TIME_EXIT:
CLR DELAY_FLAG
RET
;;--------------------------------------------------------
;;*********************************************************
;;--------------------------------------------------------
TIMER1_SERV:
DJNZ TIME_COUNTER,TIMER1_SERV_RELOAD
CLR TR1
SETB DELAY_FLAG
RETI
TIMER1_SERV_RELOAD:
MOV TL1,TL1_DATA
MOV TH1,TH1_DATA
RETI
;;--------------------------------------------------------
INT1_SERV:
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
NOP
LCALL CS1694_ALL_DISPLAY
MOV TEMP_4,#00H
INT1_SERV_1:
MOV TEMP_3,#00H
INT1_SERV_2:
MOV TEMP_2,#00H
DJNZ TEMP_2,$
DJNZ TEMP_3,INT1_SERV_2
DJNZ TEMP_4,INT1_SERV_1
NOP
POP DPH
POP DPL
POP PSW
POP ACC
RETI
;;********************************************************
;;--------------------------------------------------------
DELAY_3MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#01H
LCALL DELAY_0
RET
;--------------------------------------------------------
DELAY_5MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#01H
LCALL DELAY_1
RET
;--------------------------------------------------------
DELAY_10MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#01H
LCALL DELAY_2
RET
;--------------------------------------------------------
DELAY_15MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#01H
LCALL DELAY_3
RET
;--------------------------------------------------------
DELAY_20MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#02H
LCALL DELAY_2
RET
;--------------------------------------------------------
DELAY_80MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#08H
LCALL DELAY_2
RET
;--------------------------------------------------------
DELAY_100MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#0AH
LCALL DELAY_2
RET
;--------------------------------------------------------
DELAY_200MS:
CLR DELAY_FLAG
MOV TIME_COUNTER,#14H
LCALL DELAY_2
RET
;---------------------------------------------------------
DELAY_500MS:
LCALL DELAY_200MS
LCALL DELAY_200MS
LCALL DELAY_100MS
RET
;---------------------------------------------------------
;*********************************************************
TAB_LED_COMMON_CATHODE:
DB 3FH,06H,5BH,4FH ;0,1,2,3
DB 66H,6DH,7DH,07H ;4,5,6,7
DB 7FH,6FH,77H,7CH ;8,9,A,b
DB 58H,5EH,79H,71H ;c,d,E,F
DB 5CH,50H,73H,40H ;o,r,P,-
DB 39H,00H ;C
;--------------------------------------------------------
TAB_CS1694:
DB 40H,40H,39H,6DH ;-,-,C,S
DB 06H,7DH,6FH,66H ;1,6,9,4
DB 40H,40H,00H,00H ;-,-,X,X
;--------------------------------------------------------
TAB_PASS:
DB 73H,77H,6DH,6DH
DB 40H,40H,73H,77H
DB 6DH,6DH,00H,00H
;--------------------------------------------------------
END
;--------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -