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

📄 tlcm101.asm

📁 lcm测试程序,对LCM设计者有帮助,希望大家能用上.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	   DB	   00000000B
	   DB	   01100010B	       ; U	       ; 21
	   DB	   11000000B
	   DB	   01101000B	       ; N	       ; 22
	   DB	   11000000B
	   DB	   01100010B	       ; L	       ; 23
	   DB	   00000000B
	   DB	   01000110B	       ; Y	       ; 24
	   DB	   11000000B
;----------------------------------------------------------
DELAY:				       ; DLYTIME *
	   MOV	   DLY0,#100	       ; 1uS At 12MHz
 DLYLOOP:  MOV	   DLY1,#56	       ; 1uS
	   DJNZ    DLY1,$	       ; 2uS * (DLY1)
	   DJNZ    DLY0,DLYLOOP        ; 2uS
	   DJNZ    DLYTIME,DELAY       ; 2uS
	   RET

DL10mS:
	   MOV	   DLY0,#100
 DL10:	   MOV	   DLY1,#49
	   DJNZ    DLY1,$
	   DJNZ    DLY0,DL10
	   RET

DELAYL:
	   MOV	   DLYTIME,#60
	   LCALL   DELAY
	   RET

DELAY_Z:			       ; OLL1001A
	   DJNZ    R2,$ 	       ; T = 1uS*250*2 =0.5mS
	   DJNZ    R3,DELAY_Z	       ; T = 40*(500+1*2)=20.08mS
	   DJNZ    DLYTIME,DELAY
	   RET
;==========================================================
E0_INT:
	   PUSH    ACC
	   PUSH    PSW
	   PUSH    DPH
	   PUSH    DPL
	   JNB	   SYS_INIT,E0_RET
	   MOV	   KEY_ST,#5
  LOOP_SK: MOV	   A,P1
	   ANL	   A,#0F0H
	   CJNE    A,#0F0H,DLY10ms
	   DJNZ    KEY_ST,LOOP_SK
	   AJMP    E0_RET
  DLY10ms: LCALL   DL10MS
	   MOV	   R2,#0
	   MOV	   A,P1
  LOOP_FK: RLC	   A
	   JNC	   ISKEY
	   INC	   R2
	   CJNE    R2,#04H,LOOP_FK
	   AJMP    E0_RET
  ISKEY:   MOV	   A,P1
	   ANL	   A,#0F0H
	   CJNE    A,#0F0H,ISKEY
	   MOV	   A,R2

	   CJNE    A,#0,NEXT1	       ; Press S_P1.7 (ADJ_KEY)
	   CLR	   SYS_WAIT
	   INC	   TESTPRG
	   MOV	   A,TESTPRG
	   CJNE    A,#13,SAVEPG
	   MOV	   TESTPRG,#0
  SAVEPG:
	   mov	   saveprg,testprg
	   LCALL   DISP_PRG
	   AJMP    NEXT3_E
;	   AJMP    E0_RET

  NEXT1:   CJNE    A,#1,NEXT2	       ; Press S_P1.6 (RUN_KEY)
	   SETB    SYS_WAIT
	   AJMP    E0_RET

  NEXT2:   CJNE    A,#2,NEXT3	       ; Press S_P1.5 (PAUSE_KEY)
	   CPL	   PAUSE_FG
	   AJMP    E0_RET

  NEXT3:   CJNE    A,#3,E0_RET	       ; Press S_P1.4 (HOME_KEY)
  NEXT3_E: MOV	   SP,#52H
	   AJMP    E0_DIR

  E0_RET:  POP	   DPL
	   POP	   DPH
	   POP	   PSW
	   POP	   ACC
  E0_DIR:  RETI
;----------------------------------------------------------
T0_INT:
	   MOV	   TL0,#11011100B      ; RESET TIMER0
	   MOV	   TH0,#00001011B
	   PUSH    ACC
	   PUSH    PSW

	   INC	   SYM		       ; 1/16 S +1
	   MOV	   A,SYM
	   CJNE    A,#16,T0_RET
	   MOV	   SYM,#0

	   INC	   SECO 	       ; S+1
	   MOV	   A,SECO
	   CJNE    A,#60,T0_RET
	   MOV	   SECO,#0
	   INC	   MINU 	       ; M+1
	   MOV	   A,MINU
	   CJNE    A,#60,T0_RET
	   MOV	   MINU,#0
	   INC	   HOUR 	       ; H+1
	   MOV	   A,HOUR
	   CJNE    A,#24,T0_RET

	   MOV	   HOUR,#00H

	   SJMP    T0_RET
  T0_RET:
	   POP	   PSW
	   POP	   ACC
	   RETI
;--------------------------------------------------------------------
T1_INT: 			       ; Clock for 12232 EXT.OSC
	   MOV	   TL1,#11110000B
	   MOV	   TH1,#11111110B
	   CPL	   CLK12232
	   RETI
;--------------------------------------------------------------------
	   ORG	   1000H
;*****************************************************************************
;		 TESTING PROGRAM AREA
;-----------------------------------------------------------------------------
;   Character Type , Graphics Type , Segment Type
;=============================================================================
TEST_CHR0:				      ; Program for Character type LCM
					      ; LCM Chip : HD44780
;=============================================================================
	   MOV	   DPTR,#CHR_COM
	   MOV	   LOOPREG,#8
 LOOP_WRCOM:
	   MOV	   A,#0
	   MOVC    A,@A+DPTR
	   PUSH    DPH
	   PUSH    DPL
	   MOV	   DPTR,#CHR_COM_W
	   MOVX    @DPTR,A
	   ACALL   CHKBUSY
	   POP	   DPL
	   POP	   DPH
	   INC	   DPTR
	   DJNZ    LOOPREG,LOOP_WRCOM
;----------
	   MOV	   A,#01000000B
	   MOV	   DPTR,#CHR_COM_W
	   MOVX    @DPTR,A		       ; Write CGRAM address
	   LCALL   CHKBUSY

	   MOV	   DPTR,#CHR_DAT
	   MOV	   LOOPREG,#24
 LOOP_WRCGR:
	   MOV	   A,#0
	   MOVC    A,@A+DPTR
	   PUSH    DPH
	   PUSH    DPL
	   MOV	   DPTR,#CHR_DAT_W
	   MOVX    @DPTR,A		       ; Write CGRAM data
	   LCALL   CHKBUSY
	   POP	   DPL
	   POP	   DPH
	   INC	   DPTR
	   DJNZ    LOOPREG,LOOP_WRCGR
;------------------------------------------------
	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#01H		       ; Display clear
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   MOV	   A,#10000000B 	       ; Write DDRAM address
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   LOOPREG,#40
	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   A,#0FFH
LOOP_WDD11:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   DJNZ    LOOPREG,LOOP_WDD11

	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#11000000B
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   LOOPREG,#40
	   MOV	   A,#0FFH
LOOP_WDD12:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   DJNZ    LOOPREG,LOOP_WDD12

	   MOV	   DLYTIME,#50
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#01H		       ; Display clear
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   MOV	   A,#10000000B 	       ; Write DDRAM address
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   LOOPREG,#40
	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   A,#00H
LOOP_WDD21:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   DJNZ    LOOPREG,LOOP_WDD21

	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#11000000B
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   LOOPREG,#40
	   MOV	   A,#00H
LOOP_WDD22:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   DJNZ    LOOPREG,LOOP_WDD22

	   MOV	   DLYTIME,#50
	   LCALL   DELAY

	   JB	   PAUSE_FG,$
;------------------------------------------------
	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#01H		       ; Display clear
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   MOV	   A,#10000000B 	       ; Write DDRAM address
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   LOOPREG,#40
	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   A,#3CH
LOOP_WDD31:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   DJNZ    LOOPREG,LOOP_WDD31

	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#11000000B
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   LOOPREG,#40
	   MOV	   A,#3CH
LOOP_WDD32:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   DJNZ    LOOPREG,LOOP_WDD32

	   MOV	   DLYTIME,#50
	   LCALL   DELAY

	   JB	   PAUSE_FG,$
;------------------------------------------------
	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#01H	       ; Display clear
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   MOV	   A,#10000000B
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   LOOPREG,#40
	   MOV	   A,#30H
LOOP_WDD41:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   INC	   A
	   DJNZ    LOOPREG,LOOP_WDD41

	   MOV	   DPTR,#CHR_COM_W
	   MOV	   A,#11000000B
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY

	   MOV	   DPTR,#CHR_DAT_W
	   MOV	   LOOPREG,#40
	   MOV	   A,#30H
LOOP_WDD42:
	   MOVX    @DPTR,A
	   LCALL   CHKBUSY
	   INC	   A
	   DJNZ    LOOPREG,LOOP_WDD42
;--------------------------------------
	   MOV	   DLYTIME,#50
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   LJMP    TEST_SEL
;------------------------------------------------
CHKBUSY:
	   PUSH    DPL
	   PUSH    DPH
	   PUSH    ACC
	   MOV	   DPTR,#CHR_COM_R
 LP_CHKRD: MOVX    A,@DPTR
	   JB	   ACC.7,LP_CHKRD
	   POP	   ACC
	   POP	   DPH
	   POP	   DPL
	   RET

CHR_COM:
DB	   00110000B		       ; Reset
DB	   00110000B		       ; Reset
DB	   00110000B		       ; Reset
DB	   00111000B		       ; Interface : 8 bits, 2 lines, 5x7 dots
DB	   00001000B		       ; Display OFF, Cousor OFF,
DB	   00000001B		       ; Display clear
DB	   00000110B		       ; Address increment, NO shift
DB	   00001100B		       ; Display ON, Cousor OFF

CHR_DAT:
DB	   00010001B
DB	   00001010B
DB	   00000100B
DB	   00001010B
DB	   00010001B
DB	   00001010B
DB	   00000100B
DB	   00001110B

DB	   00010101B
DB	   00010101B
DB	   00010101B
DB	   00010101B
DB	   00010101B
DB	   00010101B
DB	   00010101B
DB	   00010101B

DB	   00001010B
DB	   00001010B
DB	   00001010B
DB	   00001010B
DB	   00001010B
DB	   00001010B
DB	   00001010B
DB	   00001010B
;=============================================================================
TEST_GRA0:				       ; 240*128 LCM Testing Program
					       ; Chip type : T6963C
;=============================================================================
	   MOV	   ROW_N,#128
	   MOV	   COL_N,#30

	   LJMP    T6963C_APPS
;=============================================================================
TEST_GRA1:			       ; 240*66 LCM
				       ; Chip type : T6963C
;=============================================================================
	   MOV	   ROW_N,#66
	   MOV	   COL_N,#30

	   LJMP    T6963C_APPS
;=============================================================================
TEST_GRA2:			       ; 240*64 LCM
				       ; Chip type : T6963C
;=============================================================================
	   MOV	   ROW_N,#64
	   MOV	   COL_N,#30

	   LJMP    T6963C_APPS
;=============================================================================
TEST_GRA3:			       ; PROGRAM FOR 16064A GRAPHIC LCM TEST
				       ; LCM CHIP : T6963C
;=============================================================================
	   MOV	   ROW_N,#64
	   MOV	   COL_N,#20
	   SETB    SMALL_SCR

	   LJMP    T6963C_APPS
;=============================================================================
TEST_GRA4:			       ; PROGRAM FOR 16064B GRAPHIC LCM TEST
				       ; LCM CHIP : KS0108B
;=============================================================================
	   CLR	   RST
	   MOV	   DLYTIME,#2
	   LCALL   DELAY
	   SETB    RST

	   LCALL   CK16064B1
	   LCALL   CK16064B2
	   LCALL   CK16064B3
	   MOV	   A,#00111110B        ; turn OFF display (KS0108B or HD61202)
	   MOV	   DPTR,#B16064C1W
	   MOVX    @DPTR,A
	   MOV	   DPTR,#B16064C2W
	   MOVX    @DPTR,A
	   MOV	   DPTR,#B16064C3W
	   MOVX    @DPTR,A

	   LCALL   B16064_BMP

	   LCALL   CK16064B1
	   LCALL   CK16064B2
	   LCALL   CK16064B3
	   MOV	   A,#00111111B        ; turn ON display (KS0108B or HD61202)
	   MOV	   DPTR,#B16064C1W
	   MOVX    @DPTR,A
	   MOV	   DPTR,#B16064C2W
	   MOVX    @DPTR,A
	   MOV	   DPTR,#B16064C3W
	   MOVX    @DPTR,A

	   MOV	   DLYTIME,#80
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DTREG1,#11111111B
	   MOV	   DTREG2,#00000000B
	   ACALL   B16064_SCR
	   MOV	   DLYTIME,#60
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DTREG1,#00000000B
	   MOV	   DTREG2,#11111111B
	   ACALL   B16064_SCR
	   MOV	   DLYTIME,#60
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DTREG1,#01010101B
	   MOV	   DTREG2,#01010101B
	   ACALL   B16064_SCR
	   MOV	   DLYTIME,#60
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DTREG1,#10101010B
	   MOV	   DTREG2,#10101010B
	   ACALL   B16064_SCR
	   MOV	   DLYTIME,#60
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DTREG1,#10101010B
	   MOV	   DTREG2,#01010101B
	   ACALL   B16064_SCR
	   MOV	   DLYTIME,#40
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   MOV	   DTREG1,#01010101B
	   MOV	   DTREG2,#10101010B
	   ACALL   B16064_SCR
	   MOV	   DLYTIME,#60
	   LCALL   DELAY

	   JB	   PAUSE_FG,$		       ; Pause_flag = 1 , Wait

	   LJMP    TEST_SEL
;--------------------------------------
B16064_SCR:
	   MOV	   COUNTER,#8		       ; 8 Pages Counter

	   MOV	   VR,#11000000B	       ; set start line    (X address)
	   MOV	   HR,#01000000B	       ; set start columns (Y address)
	   MOV	   PR,#0BFH		       ; Page = 08
LP_PGDWR:
	   MOV	   A,PR
	   MOV	   DPTR,#B16064C1W
	   MOVX    @DPTR,A

⌨️ 快捷键说明

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