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

📄 testlcd.asm

📁 ht1621 LCD driver 源码
💻 ASM
字号:
;testlcd.asm
;这个程序是用HT48C10去控制HT1621
;控制口的结构:
;   PB0 -- DATA
;   PB1 -- WRB
;   PB2 -- RDB
;   PB3 -- CSB
;注意:在写程序时,时序一定要给正确

#INCLUDE HT48C10.INC
;----------------------------

DATA .SECTION 'DATA'
count		db	?			; 用作记录循环次数
count1		db	?
;----------------------------
	
CODE .SECTION 'CODE'
	ORG    00H
	JMP    START
	ORG    04H
	reti
	ORG    08H
	reti
START:
	CLR    PBC			       ; 将PB口设为输出口
	SET    PB			 
	CLR    PB.3		 	       ; 给出 ‘SYS EN’命令码‘100 0000 0001X’
	CLR    PB.1
	call dly
	SET    PB.1                ; 1
	call dly
	CLR    PB.0
	MOV    A,9                 ; 9 个 '0'
	MOV    count,A
LOOP1:
	CLR    PB.1
	call dly
	SET    PB.1
	call dly
	SDZ    count
;	call dly
	JMP    LOOP1
	call dly
	SET    PB.0
	call dly 
	clr    pb.1
	call dly
	set    pb.1				 ; 1
	call dly
	clr	   pb.1
	call dly
	set    PB.1              ; X, SYS ENABLE command OK
	call dly
	set    pb.3
	call dly
;*****************************************************

; 给出‘LCD ON’命令码 100 000000 11X
	clr    pb.3              ; 拉低CS脚
	call dly
	set    pb.0
	call dly
	CLR    PB.1              ;
	call dly
	SET    PB.1			     ; 1
	call dly
	MOV    A, 8              ; 9 个 '0'
	MOV    count,A
	CLR    PB.0
	call dly
LOOP2:
	CLR    PB.1
	call dly
	SET    PB.1
	call dly
	SDZ    count
	JMP    LOOP2
	call dly
	SET    PB.0
	call dly
	CLR    PB.1
	call dly
	SET    PB.1			     ; 1
	call dly
	CLR    PB.1
	call dly
	SET    PB.1				 ; 1
	call dly
	CLR    PB.1
	call dly
	SET    PB.1              ; X, LCD  ON command OK
	call dly
	SET    PB.3

;*****************************************************
;3com模式
	clr   pb.3
	call dly
	SET   PB.0                  ;1
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	CLR   PB.0                  ;0
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	CLR   PB.0                  ;0
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	CLR   PB.0                  ;0
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	CLR   PB.0                  ;0
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	SET   PB.0                  ;1
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	CLR   PB.0                  ;0
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	CLR   PB.0                  ;A
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	set   PB.0                  ;B
	call dly
	SET	  PB.1
	call dly
	SET	  PB.1
	call dly
	SET   PB.0                  ;X
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	clr   PB.0                  ;0
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	SET   PB.0                  ;X
	call dly
	CLR	  PB.1
	call dly
	SET	  PB.1
	call dly
	set   pb.3
	call dly
;****************************************************
;将所有LCD点亮 
;给出写模式码: 101
blink:
LOP:
	CLR   PB.3
	call dly	
	SET   PB.0
	call dly	
	CLR   PB.1
	call dly
	SET   PB.1                  ; 1
	call dly
	CLR   PB.0
	call dly
	CLR   PB.1	
	call dly
	SET   PB.1                  ; 0
	call dly
	SET   PB.0
	call dly
	CLR   PB.1
	call dly
	SET   PB.1                  ; 1
	call dly
;**************************************************
;给出初始地址‘000000’
;连续写时,只需给出初始地址
	clr   PB.0
	call dly
	MOV   A,6                 ; 6 个 '0'
	MOV   count,A
LOOP3:
	CLR   PB.1
	call dly
	SET   PB.1
	call dly
	SDZ   count
	JMP   LOOP3
	MOV   A,30
	MOV   count1,A                ; 给出写的长度:30
;***************************************************

;将所有RAM区写‘1’,点亮所有的点
LOOP8:
	set   PB.0
	MOV   A,3                 ; 3 个 '1'
	MOV   count,A
LOOP4:
	CLR   PB.1
	call dly
	SET   PB.1
	call dly
	SDZ   count
	JMP   LOOP4
	SDZ   count1
	JMP   LOOP8
	SET   PB.3                  ;30个RAM全部点亮
	call dly
	MOV A,0FFH
	MOV COUNT1,A
DELAY1:
	mov a,0ffh
	mov count,a
delay0:
	nop
	sdz	count
	jmp delay0
	SDZ	COUNT1
	JMP DELAY1


LOP1:
	CLR   PB.3
	SET   PB.0
	CLR   PB.1
	SET   PB.1                  ; 1
	CLR   PB.0
	CLR   PB.1	
	SET   PB.1                  ; 0
	SET   PB.0
	CLR   PB.1
	SET   PB.1                  ; 1
;;**************************************************
;;给出初始地址‘000000’
;连续写时,只需给出初始地址
	CLR   PB.0
	MOV   A,6                 ; 6 个 '0'
	MOV   count,A
LOOP31:
	CLR   PB.1
	SET   PB.1
	SDZ   count
	JMP   LOOP31
	MOV   A,30
	MOV   count1,A                ; 给出写的长度:30
;;***************************************************
;将所有RAM区写‘1’,点亮所有的点
LOOP81:
	clr   PB.0
	MOV   A,3                 ; 3 个 '0'
	MOV   count,A
LOOP41:
	CLR   PB.1
	SET   PB.1
	SDZ   count
	JMP   LOOP41
	SDZ   count1
	JMP   LOOP81
	SET   PB.3                  ;32个RAM全部clear

	MOV A,0FFH
	MOV COUNT1,A
DELAY11:
	mov a,0ffh
	mov count,a
delay01:
	nop
	sdz	count
	jmp delay01
	SDZ	COUNT1
	JMP DELAY11
	

	jmp   blink

dly:                                     ;delay
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop	
	nop
	nop
ret

⌨️ 快捷键说明

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