📄 lcd_driver_user_a.asm
字号:
//========================================================================
// 文件名: LCD_Driver_User_A.asm
// 作 者: kaka.IN Hisense
// sn.kaka@yahoo.com
// 日 期: 2007/03/11
// 描 述: 底层接口驱动基础程序集(ASM语言版本)
//
// 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
// 层接口驱动程序
// 版 本:
// 2007/03/11 First version Mz Design
// 注 意: 该文件当中,主要是对四个重要的函数进行了ASM的重写
//========================================================================
.DEFINE P_IOA_Data 0x7000
.DEFINE P_IOA_Buffer 0x7001
.DEFINE P_IOA_Dir 0x7002
.DEFINE P_IOA_Attrib 0x7003
.DEFINE P_IOA_Latch 0x7004
.DEFINE P_IOB_Data 0x7005
.DEFINE P_IOB_Buffer 0x7006
.DEFINE P_IOB_Dir 0x7007
.DEFINE P_IOB_Attrib 0x7008
// Define for the port use by LCD Driver
.define LCD_EP 0x1000
.define LCD_RW 0x0800
.define LCD_AO 0x0400
.define LCD_RE 0x0200
.define LCD_CS 0x0100
.define LCD_CMD_Dir P_IOA_Dir
.define LCD_CMD_Attrib P_IOA_Attrib
.define LCD_CMD_Buffer P_IOA_Buffer
.define LCD_Data_BUS_Out P_IOA_Buffer
.define LCD_Data_BUS_In P_IOA_Data
.define LCD_Data_BUS_Dir P_IOA_Dir
.define LCD_Data_BUS_Attrib P_IOA_Attrib
.define LCD_Data_BUS_Byte 0//1
.external _TimeDelay
.code
//========================================================================
// 函数: unsigned int LCD_StatusRead(void)
// 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
// 参数: 无
// 返回: 读出的数据,低八位有效(byte)
// 备注:
// 版本:
// 2007/01/09 First version
// 注意:
//========================================================================
.public _LCD_StatusRead
_LCD_StatusRead:
r3 = [LCD_Data_BUS_Dir] //设置数据口为输入
.if LCD_Data_BUS_Byte==1
r2 = r3&0x00ff
.else
r2 = r3&0xff00
.endif
[LCD_Data_BUS_Dir] = r2
r2 = [LCD_CMD_Buffer] //得到IOB口的状态
r2 &= ~(LCD_EP+LCD_CS+LCD_AO) //EP CS to Low 20050613 Editby xinqiang
// [LCD_CMD_Buffer] = r2 //EP Low
r2 |= (LCD_RW)
[LCD_CMD_Buffer] = r2 //AO Hight, RW Hight
// nop
r2 |= LCD_EP
[LCD_CMD_Buffer] = r2 //产生EP高电平,
// nop
r2 &= ~LCD_EP //EP to Low
[LCD_CMD_Buffer] = r2
r1 = [LCD_Data_BUS_In]
r2 |= LCD_CS
[LCD_CMD_Buffer] = r2
// r2 = [LCD_Data_BUS_Dir] //恢复数据口为输出状态
.if LCD_Data_BUS_Byte==1
// r2 = r2|0xff00
r1 = r1 lsr 4
r1 = r1 lsr 4
.else
// r2 = r2|0x00ff
r1 = r1&0x00ff
.endif
[LCD_Data_BUS_Dir] = r3
retf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -