include ht48r30a-1.inc
csb equ pb.3 //片选线,低有效
csbc equ pbc.3
wrb equ pb.2 //写线
wrbc equ pbc.2
datum equ pb.1 //data线
datumc equ pbc.1
rdb equ pb.4 //rade线
rdbc equ pbc.4
lig equ pc.3
;----------------------------
num_mem equ [7fh]
;----------------------------
;宏定义
;延迟宏, 延迟 5 微秒
d_1 macro
jmp $+1
jmp $+1
nop
endm
;-----------
lcddriver .section 'data'
count db ? ;用作记录循环次数
code_datum db ? ;command code or memory datum bits
code_datum1 db ? ;only used in read_modify_write mode
mem_addr db ? ;memorty address for selecting segment //lcd地址
temp_da db ?
t_addr_h db ? ;just a buffer
;----------------------------
lock .SECTION 'CODE'
org 00h
jmp start
org 04h
reti
org 08h
reti
start:
clr pb //初始化
set csb
clr pbc
set pbc.0
clr pc
clr pcc
clr intc
mov a, 50h
mov num_mem, a
mov a, 20h
mov mp0, a
clr_ram: ; //初始化RAM,使ram变为00
clr r0
inc mp0
sdz num_mem
jmp clr_ram
;----------------------------------------
ini_status:
mov a, 87h
mov tmrc, a //定时器控制寄存器
show_k:
set lig //PC.3=1
mov a, 0e3h ;NORMAL //normal即普通模式
mov code_datum, a //普通模式命令码
call send_command //传送命令码
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a, 01h ;SYS ENABLE
mov code_datum, a
call send_command
LO:
mov a, 029h ;4com;1/3bias
mov code_datum, a
call send_command
mov a, 3 ;LCD On
mov code_datum, a
call send_command
call clr_lcm ;cls lcd
jmp $+1
jmp $+1
call show_lcm ;light all dots
clr code_datum ;reading then writing in the same address
mov a, 4
mov mem_addr, a
call read
mov a, 07h
xor a, code_datum
snz z
jmp error
mov a, 2
mov code_datum, a
call send_command
jmp $+1
jmp start ;do it repeat
error:
jmp $
;******************************************
;Purpose : send command
;Parameter:
; code_datum : byte
;Return : none
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
send_command proc //传送命令
clr CSB
clr datumC
set datum
clr WRB ;COMMAND ID '100'
d_1
set WRB ;1
nop
clr datum ;00
clr WRB
d_1
set WRB
nop
CLR WRB
d_1
set WRB
mov A, 8 ; send code
mov count, A
LOOP1:
clr datum
sz code_datum.7
set datum
rl code_datum
clr WRB
d_1
set WRB
sdz count
jmp loop1
clr WRB
d_1
set WRB
nop
set CSB ;close csb signal,not selecting the chip
ret
send_command endp
;-------------------------------
;Purpose : write datum to 1621
;Parameter:
; code_datum : byte
; mem_addr : byte
;Return : none
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
write:
clr CSB
clr datumc
set datum
clr WRB ;WRITE mode ID '101'
d_1
set WRB
clr datum
clr WRB
d_1
set WRB
set datum
clr WRB
d_1
set WRB
mov a, 6
mov count, a
writeloop1:
clr datum
sz mem_addr.5 ;sending memory address for selecting segment
set datum
clr WRB
d_1
set WRB
rl mem_addr
sdz count
jmp writeloop1
mov a, 4
mov count, a
writeloop2:
clr datum
sz code_datum.0 ;sending memory content for deciding comments's state
set datum
clr WRB
d_1
set WRB
rr code_datum
sdz count
jmp writeloop2
set CSB
ret
;-------------------------------------
;Purpose : read datum from 1621
;Parameter:
; mem_addr : byte
;Return :
; code_datum : byte
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
read proc
clr CSB
clr datumc
set datum
clr WRB ;READ mode ID '110'
d_1
set WRB
clr WRB
d_1
set WRB
clr datum
clr WRB
d_1
set WRB
mov a, 6
mov count, a
readloop1:
clr datum
sz mem_addr.5 ;sending memory address for selecting segment
set datum
clr WRB
d_1
set WRB
rl mem_addr
sdz count
jmp readloop1
set datumc
mov a, 4
mov count, a
readloop2:
clr RDB
d_1
set RDB
rr code_datum
clr code_datum.3
sz datum ;sending memory content for deciding comments's state
set code_datum.3
sdz count
jmp readloop2
mov a, 0fh
andm a, code_datum
set CSB
ret
read endp
;------------------------------------------
;Purpose : read datum from 1621, then write a datum in the same register
;Parameter:
;mem_addr : byte
;Return : none
;Modified : acc, status
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rm_write proc
clr CSB
clr datumc
set datum ;READ-MODIFY-WRITE mode ID ‘101’
clr WRB
d_1
set WRB
clr datum
clr WRB
d_1
set WRB
set datum
clr WRB
d_1
set WRB
mov a, 6
mov count, a
rmwloop1:
clr datum
sz mem_addr.5 ;sending memory address for selecting segment
set datum
clr WRB
d_1
set WRB
rl mem_addr
sdz count
jmp rmwloop1
set datumc
mov a, 4
mov count, a
rmwloop2:
clr RDB
d_1
set RDB
rr code_datum1
clr code_datum1.3
sz datum ;read memory content out
set code_datum1.3
sdz count
jmp rmwloop2
mov a, 0fh
andm a, code_datum1
clr datumc
mov a, 4
mov count, a
mov a, temp_da
andm a, code_datum
rmwloop3:
clr datum
sz code_datum.0 ;sending memory content for deciding comments's state
set datum
clr WRB
d_1
set WRB
rr code_datum
sdz count
jmp rmwloop3
set CSB
ret
rm_write endp
;------------------------------
show_lcm:
mov a, 00h
mov t_addr_h, a
mov a, 31h
mov num_mem, a
clr_n1:
mov a, t_addr_h
mov mem_addr, a
mov a, 07h
mov code_datum, a
call write
inc t_addr_h
sdz num_me
eeprom.rar_eeprom 合泰_单片机eeprom_合泰_合泰 eeprom_合泰单片机
版权申诉
34 浏览量
2022-09-21
06:33:35
上传
评论
收藏 2KB RAR 举报
weixin_42651887
- 粉丝: 75
- 资源: 1万+
最新资源
- 基于Android的学生信息管理2.rar
- 3e9ef566-ba13-47b0-a252-77aa9e4b040f8412130.apk
- 毕业设计基于SSM的房屋租赁系统源【源码+lw+部署+讲解】
- 基于Android男装出口管理系统的app.rar
- 工资表生成工资条Excel模版
- 位运算、状态压缩、枚举子集汇总.html
- C++毕业设计快递分拣机器人系统源码+论文文件+资料.zip
- 锐龙处理器 体质分析工具,体质越好越稳定,越容易超频 tool1007/Win V/F
- IOS Swift3 四种单例模式详解及实例《PPT文档》
- Swin-Unet网络预训练模型,swin-tiny-patch-window7-224.pth
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈