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

📄 test1001.asm

📁 lcm测试程序,对LCM设计者有帮助,希望大家能用上.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	   MOV	   TEPOINT,#15	       ; E ,LCD左起第四位
	   MOV	   A,TEPOINT
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM13,A
	   MOV	   A,#21	       ; r ,LCD左起第五位
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM12,A
	   MOV	   A,#21	       ; r ,LCD左起第六位
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM11,A
	   MOV	   TEPOINT,#20	       ; o ,LCD左起第七位
	   MOV	   A,TEPOINT
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM10,A
	   MOV	   TEPOINT,#21	       ; r ,LCD左起第八位
	   MOV	   A,TEPOINT
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM9,A
	   ACALL   DISPLAY
	   RET
;---------------------------------------------------------------
;      Key Scan & Control
;---------------------------------------------------------------

;---------------------------------------------------------------
;      Read HT1621 Memory RAM0
;---------------------------------------------------------------
READ_DRM:
	   MOV	   R0,#DISPADR
;	   MOV	   A,@R0	       ;
;	   ORL	   A,#01000000B        ;
;	   ANL	   A,#11011111B        ;
;	   MOV	   @R0,A	       ; Convert 101(WR) to 110(RD) Mode
	   MOV	   ST1,#9
	   ACALL   SEND_BIT

;	   MOV	   LOOPREG,#8
	   mov	   loopreg,#4
	   CLR	   A
	   SETB    MSG
  LOP_RD:
	   CLR	   RD_
	   NOP
	   MOV	   C,MSG
	   NOP
	   SETB    RD_
	   RLC	   A
	   DJNZ    LOOPREG,LOP_RD
	   SETB    CS_		       ; Finish data Read, Initialize interface

	   RET
;---------------------------------------------------------------
;      HT1621 Memory Read_Modify_Write Operation
;---------------------------------------------------------------
RD_M_WR:
	   MOV	   R0,#DISPADR
	   MOV	   ST1,#9
	   ACALL   SEND_BIT

	   MOV	   COUNTER,#4
  LOOP_MD:
	   MOV	   LOOPREG,#4
	   CLR	   A
	   SETB    MSG
  LOOP_RD:
	   CLR	   RD_
	   NOP
	   MOV	   C,MSG
	   NOP
	   SETB    RD_
	   RLC	   A
	   DJNZ    LOOPREG,LOOP_RD
	   SWAP    A
	   CPL	   A
	   MOV	   LOOPREG,#4
  LOOP_WR:
	   CLR	   WR_
	   RLC	   A
	   MOV	   MSG,C
	   NOP
	   SETB    WR_
	   DJNZ    LOOPREG,LOOP_WR
	   DJNZ    COUNTER,LOOP_MD
	   SETB    CS_		       ; Finish data Read, Initialize interface

	   MOV	   DLYTIME,#40
	   ACALL   DELAY
	   RET
;---------------------------------------------------------------
;      Clear Display Data area
;---------------------------------------------------------------
CLR_DDRAM:
	   MOV	   R0,#DISPRAM
	   MOV	   LOOPREG,#16
  LOOPCLR:
	   MOV	   @R0,#0
	   INC	   R0
	   DJNZ    LOOPREG,LOOPCLR
	   RET
;---------------------------------------------------------------
;      Write Display Data to Display at Spacery address
;---------------------------------------------------------------
DISPLAY:
	   MOV	   R0,#DISPADR
	   MOV	   ST1,#9
	   LCALL   SEND_BIT

	   MOV	   R0,#DISPRAM
	   MOV	   ST1,#128
	   LCALL   SEND_BIT
	   SETB    CS_		       ; Reset Display, De-select Display

	   RET
;---------------------------------------------------------------
;      Display Command_Code Move to RAM area
;---------------------------------------------------------------
LOAD_CODE:
	   MOV	   LOOPREG,#16
	   MOV	   DPTR,#TABLE_ID
	   MOV	   R0,#CODERAM
LPLOADID:  MOV	   A,#00
	   MOVC    A,@A+DPTR
	   MOV	   @R0,A
	   INC	   R0
	   INC	   DPTR
	   DJNZ    LOOPREG,LPLOADID
	   RET
;----------------------------------
LOAD_ADDR:
	   MOV	   LOOPREG,#2
	   MOV	   DPTR,#TABLE_AD
	   MOV	   R0,#DISPADR
LPLOADAD:  MOV	   A,#00
	   MOVC    A,@A+DPTR
	   MOV	   @R0,A
	   INC	   R0
	   INC	   DPTR
	   DJNZ    LOOPREG,LPLOADAD
	   RET
;---------------------------------------------------------------
;      Display Device Code and data BIT translate
;---------------------------------------------------------------
SEND_BIT:
	   CLR	   CS_		       ; CHIP ENABLE
  DTW:	   MOV	   ST2,#8
	   MOV	   A,@R0
	   CLR	   C
DW_CLK:
	   CLR	   WR_
	   RLC	   A

	   MOV	   MSG,C
	   NOP
	   SETB    WR_
	   NOP
	   DJNZ    ST1,CONT
	   RET
   CONT:   DJNZ    ST2,DW_CLK
	   INC	   R0
	   JMP	   DTW
;---------------------------------------------------------------
;      Normal time delay
;---------------------------------------------------------------
DELAY:				       ; Delay_Z_Time = Dlytime * Delay_time
	   MOV	   R3,#40	       ;
	   MOV	   R2,#0FAH	       ;
DELAY_Z:
	   DJNZ    R2,$ 	       ; T = 1uS*250*2 =0.5mS
	   DJNZ    R3,DELAY_Z	       ; T = 40*(500+1*2)=20.08mS
	   DJNZ    DLYTIME,DELAY
	   RET
;---------------------------------------------------------------
;      RTC HEX to BCD and move to DDRAM area
;---------------------------------------------------------------
TIME_DUMP:				;在LCD屏中央位置显示:时—分—秒
	   ACALL   CLR_DDRAM
	   MOV	   DPTR,#TABLE_DD
	   MOV	   A,HOUR
	   MOV	   B,#10
	   DIV	   AB
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM12,A
	   MOV	   A,B
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM11,A
	   MOV	   DGRAM10,#00000100B	;显示:—
	   MOV	   A,MINU
	   MOV	   B,#10
	   DIV	   AB
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM9,A
	   MOV	   A,B
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM8,A
	   MOV	   DGRAM7,#00000100B
	   MOV	   A,SECO
	   MOV	   B,#10
	   DIV	   AB
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM6,A
	   MOV	   A,B
	   MOVC    A,@A+DPTR
	   MOV	   DGRAM5,A
	   RET
;***************************************************************
;      Timer0 Interrupt
;***************************************************************
TIMER0_INT:
	   MOV	   TL0,#11011100B      ; RESET TIMER0
	   MOV	   TH0,#00001011B
	   PUSH    ACC

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

	   JNB	   DISP,SKIP_CNT       ; 时间显示使能位为0,不显示时间。
	   ACALL   TIME_DUMP
	   ACALL   DISPLAY

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

	   MOV	   HOUR,#00H

	   SJMP    RETURN
RETURN:
	   POP	   ACC
	   RETI
;===============================================================
;      CODE and Digital CHAR module TABLE area
;---------------------------------------------------------------
TABLE_ID:
	   DB	   10000000B	       ; 1 Byte
	   DB	   00100000B	       ; Turn ON system oscillator
	   DB	   10000011B	       ; 3 Byte
	   DB	   00000000B	       ; On-chip RC oscillator
	   DB	   10000101B	       ; 5 Byte
	   DB	   00100000B	       ; 1/3 Bias, 1/4 Duty LCD type
	   DB	   10000000B	       ; 7 Byte
	   DB	   01100000B	       ; LCD ON
	   DB	   10001100B	       ; 9 Byte
	   DB	   00000000B	       ; TONE 2K
	   DB	   10000001B	       ; 11 Byte
	   DB	   00100000B	       ; TONE ON
	   DB	   10000001B	       ; 13 Byte
	   DB	   00000000B	       ; TONE OFF
	   DB	   10010001B	       ; 15 Byte
	   DB	   00000000B	       ; IRQ EN
	   DB	   10000000B	       ; --->50H
	   DB	   11100000B	       ; WDT EN


TABLE_AD:
	   DB	   10100000B	       ; Display first address is 00H
	   DB	   00000000B	       ; First Output is SEG0

TABLE_DD:
	   DB	   11101011B	       ; 0
	   DB	   01100000B	       ; 1
	   DB	   11000111B	       ; 2
	   DB	   11100101B	       ; 3
	   DB	   01101100B	       ; 4
	   DB	   10101101B	       ; 5
	   DB	   10101111B	       ; 6
	   DB	   11100000B	       ; 7
	   DB	   11101111B	       ; 8
	   DB	   11101101B	       ; 9
	   DB	   00010000B	       ; DOT
	   DB	   11101110B	       ; A
	   DB	   00101111B	       ; b
	   DB	   00000111B	       ; c
	   DB	   01100111B	       ; d
	   DB	   10001111B	       ; E
	   DB	   10001110B	       ; F
	   DB	   00000000B	       ; EMPTY
	   DB	   11111111B	       ; FULL
	   DB	   00000100B	       ; -
	   DB	   00100111B	       ; o
	   DB	   00000110B	       ; r
	   DB	   10101011B	       ; G
;===============================================================
	   END

⌨️ 快捷键说明

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