一段关于LCM128647写数据/指令的程序,谁能帮忙解释一下
马老师你好:我最近用MEGA64调试LCM128647,有段程序不懂,马老师能否帮忙解释一下?
;****************************************************************************************
; 写LCD模块左半部分指令
; 指令输入:r17
;****************************************************************************************
WriteLeftLCDIns:
;
lds r16, LCDCRAddrL
sbrc r16, LCDBusy
rjmp WriteLeftLCDIns
;
sts LCDCWAddrL, r17
;
ret
;****************************************************************************************
; 写LCD模块左半部分数据
; 数据输入:r17
;****************************************************************************************
WriteLeftLCDData:
lds r16, LCDCRAddrL
sbrc r16, LCDBusy
rjmp WriteLeftLCDData
;
sts LCDDWAddrL, r17
ret
1.其中LCDCRAddrL和LCDCWAddrL及LCDDWAddrL是指什么?怎么定义?谢谢! 照搬的程序?自己有汇编的基础吗?没有先老老实实的学,把基础打好.
1.查看搬来程序的头部,或.H文件,里面应该有LCDCRAddrL和LCDCWAddrL及LCDDWAddrL的定义.
2.LCDCRAddrL和LCDCWAddrL及LCDDWAddrL应该是定义的3个RAM空间地址,该地址对应LCD的3个接口.从字面看
LCDCRAddrL 为LCD的控制寄存器读地址的低8位
LCDCWAddrL 为LCD的控制寄存器写地址的低8位
LCDDWAddrL 为LCD的数据存器写地址的低8位
能明白吗?另外知道LCDBusy是什么吗? 1.这是老板以前写的一个框架,里面没有三个参数的定义.我以前用51调试过12232的液晶,读状态和写指令,数据都是通过I/O口和时序操作,原理很明朗.其实我知道三个参数的意思,但不知道是怎么定义,与什么有管?马老师能否拿其中一参数具体讲讲?
2.LCDBusy是测忙碌的,这个俺知道.
3.液晶可以不用时序读写数据吗? 从这段代码分析,可能使用的AVR带并口总线扩展的,LCD是采用并口总线连接使用(速度快),不是采用I/O方式操作的.
在指令中LCDCRAddrL是内存空间(外扩)的地址,估计是映射到LCD控制寄存器的低8位,读该地址即读LCD控制寄存器低字节.
;****************************************************************************************
; 写LCD模块左半部分指令
; 指令输入:r17
;****************************************************************************************
WriteLeftLCDIns:
;
lds r16, LCDCRAddrL ;读LCDCRAaddL(内存空间单元)数据到寄存器r16
sbrc r16, LCDBusy ;LCDBusy应该是LCDCR寄存器中的一位,上面在r16中读到了该寄存器的数,
;本句判断LCDBusy是否为为"0";"1"表示忙.sbrc指令为判寄存器某位为0则跳过一条指令执行.
rjmp WriteLeftLCDIns;不为"0"执行该句,转上句循环读
;
sts LCDCWAddrL, r17 ;为"0"跳过上句,执行本句.
;
ret .equ LCDPORT = PORTC
.equ LCDA0 = PINE3
.equ LCDRD = PINE4
.equ LCDWR = PINE5
.equ LCDCS1 = PINE6
.equ LCDCS2 = PINE7
.equ LCDELEN = PINF0
硬件复位,这种接法不是I/O口间接访问吗? AVR带并口总线扩展是不是指的地址总线方式? 51里P0为低地址,P2为高地址,那AVR中地址是怎么分配呢? 只有第一个定义是一个寄存器:PORTC,其它是数字3\4\5\6\7\0.
还需要硬件图和更多东西定义才能知道.另外,你需要先好好学习AVR,这样才能真正看懂AVR的汇编.
页:
[1]