📄 1621.asm
字号:
INCLUDE HT48R30A-1.INC
CS EQU PA.0 ;片选线
SCL EQU PA.2 ;写控制线
SDA EQU PA.3 ;数据线
BITCNT EQU [21H] ;位数寄存器
BYTECNT EQU [22H] ;数据字节数
WRITEBYTE_HIGH EQU [23H] ;写数据寄存器高位
WRITEBYTE_LOW EQU [24H] ;写数据寄存器低位
ORG 000H ;芯片复位从 00 开始
JMP RESET ;程序上电跳转到初始化
ORG 004H ;外部中断入口
RETI
ORG 008H ;定时/计数器中断入口
reti
ORG 020H ;主程序从ROM 20H 地址开始存储
RESET: CLR PAC ;设置PC1\PC0输出
CLR PA ;PC口清零
;************************************************
; CLRMEM 将RAM区清零
;************************************************
MOV A,20H
MOV MP0,A
CLR_RAM: CLR R0
INC MP0
MOV A,MP0
SUB A,80H
SNZ Z
JMP CLR_RAM
main: call display
jmp main
display: clr cs
mov a, 8
mov bitcnt, a
mov a, 10011100b ;设置一般模式
call send_bit
mov a, 4
mov bitcnt, a
mov a, 01100000b
call send_bit
set cs
clr cs
mov a, 8
mov bitcnt, a
mov a, 10000011b ;设置振荡类型内部RC
call send_bit
mov a, 4
mov bitcnt, a
mov a, 00000000b
call send_bit
set cs
clr cs
mov a, 8
mov bitcnt, a
mov a, 10000000b ;设置系统振荡开启
call send_bit
mov a, 4
mov bitcnt, a
mov a, 00100000b
call send_bit
set cs
clr cs
mov a, 8
mov bitcnt, a
mov a, 10000101b ;设置偏压及公共端数
call send_bit
mov a, 4
mov bitcnt, a
mov a, 00100000b
call send_bit
set cs
clr cs
mov a, 8
mov bitcnt, a
mov a, 10000000b ;设置LCD开
call send_bit
mov a, 4
mov bitcnt, a
mov a, 01100000b
call send_bit
set cs
clr cs
mov a, 8
mov bitcnt, a
mov a, 10100000b ;写数据开始 seg00
call send_bit
mov a, 1
mov bitcnt, a
mov a, 00000000b
call send_bit
mov a, 40h
mov mp0, a
display0:mov a, 4
mov bitcnt, a
mov a, r0
call send_bit
inc mp0
mov a, 60h
sub a, mp0
snz z
jmp display0
set cs
ret
;******************************************
send_bit:
clr scl
clr sda
sz acc.7
set sda
rl acc
set scl
sdz bitcnt
jmp send_bit
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -