📄 testlcd.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 + -