📄 48_vfd.asm
字号:
;this program is ht48 control HT16512
;;;
;file name:48_vfd.asm
;author:阮钦
;-------------------------------------
include ht48c10.inc
;equ定义区
;;;
;-----------------
cs equ pa.0 ;定义PA.0为片选信号引脚
di equ pa.1 ;定义PA.1为数据输入引脚
do equ pa.2 ;PA.2为数据输出引脚
clk equ pa.3 ;PA.3为时钟信号线
;-----------------
;-----------------
;;;
;数据段
data .section 'data'
sendbyte0 db ?
temp0 db ?
tempcntr db ?
data db ? ;外部读入值
;-----------------
;-----------------
;程式段
;;;
code .section 'code'
org 00h
jmp start
start:
;初始化区
clr intc
mov a,3fh
mov temP0,a ;RAM区大小为3FH
mov a,40h ;置MP初值
mov mp0,a
clr_ram:
clr [00h] ;清RAM区
inc mp0
sdz temp0
jmp clr_ram
clr pac.0 ;片选信号控制
clr pac.1 ;16512数据输入
set pac.2 ;16512数据输出
clr pac.3 ;时钟信号
;--------
;display mode byte
clr acc ;显示模式命令码
mov sendbyte0,a
clr cs
call sendbyte ;送显示模式命令
set cs
;--------
;data setting byte
mov a,40h ;设置数据写显示RAM,地址自增模式
mov sendbyte0,a
clr cs
call sendbyte
set cs
;--------
;display address
mov a,0c0h ;设置显示RAM的初始地址
mov sendbyte0,a
clr cs
call sendbyte
set cs
;--------
;display data
mov a,22h ;在地址自增模式时,写满22个数据
mov temp0,a
set acc
mov sendbyte0,a
senddata:
clr cs
call sendbyte
set cs
sdz temp0
jmp senddata
;--------
;display control ;显示控制命令
mov a,8fh ;显示并且调光为最大值
mov sendbyte0,a
clr cs
call sendbyte
set cs
;-------
;-------
;16512数据送HT48,本例为读按键
mov a,46h
mov sendbyte0,a
clr cs
call sendbyte
set cs
nop
nop
nop
clr data
clr cs
mov a,8h
mov temp0,a
_readnext:
set clk
nop
nop
nop
clr clk
clr c
sz do
set c
rlc data
sdz temp0
jmp _readnext
set cs
jmp $
;--------------
sendbyte proc ;送数据子程序
mov a,8
mov tempcntr,a
clr c
_nextbit:
rlc sendbyte0
snz c
jmp _send0
_send1:
set di
jmp _lact
_send0:
clr di
_lact:
set clk
clr clk
sdz tempcntr
jmp _nextbit
ret
sendbyte endp
;--------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -