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

📄 yjp_nxsx.asm

📁 一个液晶驱动程序,配合计算机软件可方便的制作文本显示器用于工控场合
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	   MOV A,#0
	   MOVX @DPTR,A
	   INC DPTR
	   MOVX A,@DPTR
	   ANL A,#0FH
	   MOV B,A
	   MOVX @DPTR,A
	   MOV A,#MW25
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,#0
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,B
	   MOVX @DPTR,A
	   RET
;;===================================================================
;;...................................................................
CK_DATA2COM:
	   MOV DPH,#01H
	   MOV DPL,A
	   INC DPTR
	   MOVX A,@DPTR
	   CLR C
	   SUBB A,#24
	   JNC CK_DATA2COMERR
	   INC DPTR
	   INC DPTR
	   MOVX A,@DPTR
	   CLR C
	   SUBB A,#60
	   JNC CK_DATA2COMERR
	   INC DPTR
	   INC DPTR
	   MOVX A,@DPTR
	   CLR C
	   SUBB A,#24
	   JNC CK_DATA2COMERR
	   INC DPTR
	   INC DPTR
	   MOVX A,@DPTR
	   CLR C
	   SUBB A,#60
	   JNC CK_DATA2COMERR
	   RET
CK_DATA2COMERR:
	   MOV R7,#1
	   RET
;;...................................................................
CK_DATA2END:RET
CK_DATA2:  MOV R7,#0
	   MOV A,#MW07
	   LCALL CK_DATA2COM
	   MOV A,#MW11
	   LCALL CK_DATA2COM
	   MOV A,#MW15
	   LCALL CK_DATA2COM
	   MOV A,#MW19
	   LCALL CK_DATA2COM
	   MOV A,R7
	   JZ CK_DATA2END
;;第1时段
	   MOV A,#MW07	 ;;校验有错,纠正
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW07高位清0
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;00时

	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW08高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW09高位清0
	   INC DPTR
	   MOV A,#05
	   MOVX @DPTR,A  ;;05时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW10高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
;;第2时段
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW11高位清0
	   INC DPTR
	   MOV A,#06
	   MOVX @DPTR,A  ;;06时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW12高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW13高位清0
	   INC DPTR
	   MOV A,#11
	   MOVX @DPTR,A  ;;11时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW14高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
;;第3时段
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW15高位清0
	   INC DPTR
	   MOV A,#12
	   MOVX @DPTR,A  ;;12时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW16高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW17高位清0
	   INC DPTR
	   MOV A,#17
	   MOVX @DPTR,A  ;;17时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW18高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
;;第4时段
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW19高位清0
	   INC DPTR
	   MOV A,#18
	   MOVX @DPTR,A  ;;18时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW20高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW21高位清0
	   INC DPTR
	   MOV A,#23
	   MOVX @DPTR,A  ;;23时
	   INC DPTR
	   MOV A,#0
	   MOVX @DPTR,A  ;;MW22高位清0
	   INC DPTR
	   MOV A,#30
	   MOVX @DPTR,A  ;;30分
	   MOV R1,#16
	   MOV R0,#MW07
CK_SET1:   LCALL WR24C021
	   LCALL DELAY_10MS
	   LCALL DELAY_10MS
	   INC R0
	   INC R0
	   DJNZ R1,CK_SET1
	   RET
;;===================================================================
AUTO_LCD_PEND:RET
AUTO_LCD_POWER:
	   MOV A,LCD_POW_BZ
	   JZ AUTO_LCD_PEND1
	   CLR	LCD_POWER
	   MOV A,LCD_POW_TBZ
	   JNZ AUTO_LCD1
	   MOV LCD_POW_TBZ,#1
	   MOV LCD_POW_TIME,#120
	   RET
AUTO_LCD1: MOV A,LCD_POW_TIME
	   JNZ AUTO_LCD_PEND
	   MOV LCD_POW_TBZ,#0  ;时间到,关背光
	   MOV LCD_POW_BZ,#0
	   SETB LCD_POWER
	   MOV SET_X,#0        ;清除设置状态
	   MOV FLASH_X,#0
	   MOV CLR_CUR_BZ,#1
	   RET
AUTO_LCD_PEND1:
	   SETB LCD_POWER
	   RET
;;====================================
READKEY:   LCALL READKEY1
	   LCALL READKEY2
	   LCALL READKEY3
	   RET
READKEY1:  MOV A,P1	;检查1#键区
	   ORL A,#0F0H
	   MOV P1,A
	   CLR KEY1_SELECT
	   DB 0,0,0,0,0,0,0,0
	   MOV A,P1
	   ORL A,#0FH
	   MOV R1,A
	   SETB KEY1_SELECT
	   RET
READKEY2:		;检查2#键区
	   MOV A,P1
	   ORL A,#0F0H
	   MOV P1,A
	   CLR KEY2_SELECT
	   DB 0,0,0,0,0,0,0,0
	   MOV A,P1
	   ORL A,#0FH
	   MOV R2,A
	   SETB KEY2_SELECT
	   RET
READKEY3:		;检查3#键区
	   MOV A,P1
	   ORL A,#0F0H
	   MOV P1,A
	   CLR KEY3_SELECT
	   DB 0,0,0,0,0,0,0,0
	   MOV A,P1
	   ORL A,#0FH
	   MOV R3,A
	   SETB KEY3_SELECT
	   RET
;;====================================
CK_KEY:    MOV R7,#0
	   LCALL CK_KEYA
	   LCALL CK_KEYB
	   LCALL CK_KEYC
	   RET

CK_KEYA:   MOV A,R1
	   CLR C
	   SUBB A,#0FFH
	   JZ CK_KEYEND
	   MOV R7,#1
	   RET

CK_KEYB:   MOV A,R2
	   CLR C
	   SUBB A,#0FFH
	   JZ CK_KEYEND
	   MOV R7,#2
	   RET

CK_KEYC:   MOV A,R3
	   CLR C
	   SUBB A,#0FFH
	   JZ CK_KEYEND
	   MOV R7,#3
CK_KEYEND: RET
;;====================================
DELAY20:   MOV R6,#0FFH
	   DJNZ R6,$
	   RET
;;====================================
CK_KEY1:   MOV A,KEY_LIAN
	   JZ  CK_KEYEND
	   MOV KEY_LIAN,#0
	   MOV KEY_BUF1,#0FFH
	   MOV KEY_BUF2,#0FFH
	   MOV KEY_BUF3,#0FFH
	   MOV A,CLR_BIT_X
	   JNZ CK_KEY1A
	   RET
;;....................................
;;如果键盘有瞬时线圈操作,则在键释放
;;时清除保存在CLR_BIT_X(Y)映像中相应
;;的位
;;....................................
CK_KEY1A:  MOV A,CLR_BIT_X
	   ANL A,#7FH
	   MOV DPL,A
	   MOV R6,A
	   MOV DPH,#01H
	   MOVX A,@DPTR
	   MOV R4,A
	   INC DPTR
	   MOVX A,@DPTR
	   MOV R5,A
	   MOV CLR_BIT_X,#0
	   MOV A,CLR_BIT_Y
	   MOV CLR_BIT_Y,#0
	   MOV B,#3
	   MUL AB
	   MOV DPTR,#JMPBBC_BITTAB
	   JMP @A+DPTR
JMPBBC_BITTAB:
	   LJMP BBC_BIT00
	   LJMP BBC_BIT01
	   LJMP BBC_BIT02
	   LJMP BBC_BIT03
	   LJMP BBC_BIT04
	   LJMP BBC_BIT05
	   LJMP BBC_BIT06
	   LJMP BBC_BIT07
;;....................................
BBC_BIT00: MOV A,R5
	   MOV C,ACC.0
	   CLR	C
	   MOV ACC.0,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT01: MOV A,R5
	   MOV C,ACC.1
	   CLR	C
	   MOV ACC.1,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT02: MOV A,R5
	   MOV C,ACC.2
	   CLR	C
	   MOV ACC.2,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT03: MOV A,R5
	   MOV C,ACC.3
	   CLR	C
	   MOV ACC.3,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT04: MOV A,R5
	   MOV C,ACC.4
	   CLR	C
	   MOV ACC.4,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT05: MOV A,R5
	   MOV C,ACC.5
	   CLR	C
	   MOV ACC.5,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT06: MOV A,R5
	   MOV C,ACC.6
	   CLR	C
	   MOV ACC.6,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;....................................
BBC_BIT07: MOV A,R5
	   MOV C,ACC.7
	   CLR	C
	   MOV ACC.7,C
	   MOV R5,A
	   MOV A,R6
	   MOV DPL,A
	   MOV DPH,#01H
	   MOV A,R4
	   MOVX @DPTR,A
	   INC DPTR
	   MOV A,R5
	   MOVX @DPTR,A
	   RET
;;====================================
JCK_KEY1:  LJMP CK_KEY1
KEYEND:    RET
KEY:	   LCALL READKEY
	   LCALL CK_KEY
	   MOV A,R7
	   JZ JCK_KEY1	  ;所有键均处于释放状态
	   MOV A,KEY_LIAN
	   JNZ KEYEND
	   LCALL DELAY30
	   LCALL READKEY
	   LCALL CK_KEY
	   MOV A,R7
	   JZ  KEYEND	  ;抖动,退出
	   MOV A,R7
	   XRL A,#01H
	   JZ  CK_KEY2	  ;1#键区有键被按压
	   MOV A,R7
	   XRL A,#02H
	   JZ  CK_KEY3	  ;2#键区有键被按压
	   MOV A,R7
	   XRL A,#03H
	   JZ  CK_KEY4	  ;3#键区有键被按压
	   RET
;;====================================
CK_KEY2END:RET
CK_KEY2:   MOV A,R1
	   CLR C
	   SUBB A,KEY_BUF1
	   JZ  CK_KEY2END
	   MOV A,R1
	   MOV KEY_BUF1,A
	   MOV KEY_LIAN,#1
	   LCALL BEEP
	   MOV A,LCD_POW_BZ
	   JNZ CK_KEY21
	   MOV LCD_POW_BZ,#1
	   RET
CK_KEY21:  MOV LCD_POW_TIME,#120
	   LCALL KEY1_RUN  ;执行键功能
	   RET
;;====================================
CK_KEY3END:RET
CK_KEY3:   MOV A,R2
	   CLR C
	   SUBB A,KEY_BUF2
	   JZ  CK_KEY3END
	   MOV A,R2
	   MOV KEY_BUF2,A
	   MOV KEY_LIAN,#1
	   LCALL BEEP
	   MOV A,LCD_POW_BZ
	   JNZ CK_KEY31
	   MOV LCD_POW_BZ,#1
	   RET
CK_KEY31:  MOV LCD_POW_TIME,#120
	   LCALL KEY2_RUN  ;执行键功能
	   RET
;;====================================
CK_KEY4END:RET
CK_KEY4:   MOV A,R3
	   CLR C
	   SUBB A,KEY_BUF3
	   JZ  CK_KEY4END
	   MOV A,R3
	   MOV KEY_BUF3,A
	   MOV KEY_LIAN,#1
	   LCALL BEEP
	   MOV A,LCD_POW_BZ
	   JNZ CK_KEY41
	   MOV LCD_POW_BZ,#1
	   RET
CK_KEY41:  MOV LCD_POW_TIME,#120
	   LCALL KEY3_RUN  ;执行键功能
	   RET
;;====================================
BEEP:	   CLR	BEEB
	   LCALL DELAY40
	   SETB BEEB
	   RET
DELAY30:   MOV R5,#99H
DELAY301:  MOV R6,#99H
	   DJNZ R6,$
	   DJNZ R5,DELAY301
	   RET
DELAY40:   MOV R7,#2
DELAY401:  MOV R5,#099H
DELAY402:  MOV R6,#0FFH
	   DJNZ R6,$
	   LCALL RST_WDOG
	   DJNZ R5,DELAY402
	   DJNZ R7,DELAY401
	   RET
;;====================================
KEY1_RUN:
	   MOV A,KEY_BUF1
	   JNB ACC.6,JJKEY1_0
	   JNB ACC.5,JJKEY1_1
	   JNB ACC.4,JJKEY1_2
	   JNB ACC.7,JJKEY1_3
	   RET
JJKEY1_0:  LJMP KEY1_0	 ;上页
JJKEY1_1:  LJMP KEY1_1	 ;下页
JJKEY1_2:  LJMP KEY1_2	 ; 左
JJKEY1_3:  LJMP KEY1_3	 ; 右
;;====================================
KEY2_RUN:
	   MOV A,KEY_BUF2
	   JNB ACC.5,JJKEY2_0
	   JNB ACC.6,JJKEY2_1
	   JNB ACC.4,JJKEY2_2
	   JNB ACC.7,JJKEY2_3
	   RET
JJKEY2_0:  LJMP KEY2_0	 ; 上
JJKEY2_1:  LJMP KEY2_1	 ; 下
JJKEY2_2:  LJMP KEY2_2	 ;SET
JJKEY2_3:  LJMP KEY2_3	 ;ENT
;;====================================
KEY3_RUN:
	   MOV A,KEY_BUF3
	   JNB ACC.5,JJKEY3_0
	   JNB ACC.7,JJKEY3_1
	   JNB ACC.6,JJKEY3_2
	   JNB ACC.4,JJKEY3_3
	   RET
JJKEY3_0:  LJMP KEY3_0	 ;F1
JJKEY3_1:  LJMP KEY3_1	 ;F2
JJKEY3_2:  LJMP KEY3_2	 ;F3
JJKEY3_3:  LJMP KEY3_3	 ;F4
;;====================================
DATA_CHANG2:
	   MOV R2,#00H
	   MOV R3,#00H
	   MOV R6,#27H	       ;/10000
	   MOV R7,#10H
	   LCALL NDIV1
	   MOV A,R5
	   MOV SHOW1BUF5,A
	   MOV A,R2
	   MOV R4,A
	   MOV A,R3
	   MOV R5,A
	   MOV R2,#00H
	   MOV R3,#00H
	   MOV R6,#03H	       ;/1000
	   MOV R7,#0E8H
	   LCALL NDIV1
	   MOV A,R5
	   MOV SHOW1BUF4,A
	   MOV A,R2
	   MOV R4,A
	   MOV A,R3
	   MOV R5,A
	   MOV R2,#00H
	   MOV R3,#00H
	   MOV R6,#00H	       ;/100
	   MOV R7,#64H
	   LCALL NDIV1
	   MOV A,R5
	   MOV SHOW1BUF3,A
	   MOV A,R3
	   MOV B,#10
	   DIV AB
	   MOV SHOW1BUF2,A
	   MOV SHOW1BUF1,B
	   RET
;;====================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -