⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cs1694_详细注释版.asm

📁 CS1694显示驱动源码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	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 + -