📄 dis_dir.asm
字号:
//****************************************************************************************************
// 128X64I液晶底层驱动程序包
// 设计者: 牟联树
// 日 期: 2004.12.22
// 版本号: 1.0
//****************************************************************************************************
.INCLUDE Spmc70_regs.inc
.DEFINE LCD_E 0x0800 //LCD使能信号 (IOA11)
.DEFINE LCD_R_W 0x0400 //读写信号 (IOA10)
.DEFINE LCD_DI 0x0200 //数据指令选择 (IOA9)
.DEFINE LCD_CS 0x0100 //LCD左半屏片选 (IOA8)
.DEFINE LCD_Port P_IOA_Data
.DEFINE LCD_Port_B P_IOA_Buffer
.DEFINE LCD_Port_Dir P_IOA_Dir
.CODE
//****************************************************************************************************
// 128X64I液晶底层驱动画圆误差计算 W_Red_Err(int *a,int *b,int *r)
// 设计者: 牟联树
// 描 述: 系统初始化
// 日 期: 2004.12.22
// 版本号: 1.2
//****************************************************************************************************
.PUBLIC _W_Red_Err
_W_Red_Err: push bp,bp to [sp]
bp = sp+1
r3 = [bp+3]
r3 = [r3]
r3 = r3+1
r4 = r3
mr = r3*r4,us
r1 = r3
r3 = [bp+4]
r3 = [r3]
r4 = r3
mr = r3*r4,us
r1+= r3
r3 = [bp+5]
r3 = [r3]
r4 = r3
mr = r3*r4,us
r1-=r3
jl squ1
r4 = [bp+4]
r3 = [r4]
r1-= r3
jl squ1
r3-=1
[r4] = r3;
squ1: r4 = [bp+3]
r3 = [r4]
r3+=1
[r4] = r3
pop bp,bp from [sp]
retf
//****************************************************************************************************
// 128X64I液晶底层驱动写数据子程序 Writ_Data(int a,int Data)
// 设计者: 牟联树
// 描 述: 数据写入子程序(供C语言调用)
// 日 期: 2004.12.22
// 版本号: 1.1
//****************************************************************************************************
.PUBLIC _Writ_Data
_Writ_Data: push bp,bp to [sp] //保存CPU环境
bp = sp + 1
r1 = [LCD_Port_Dir]
r1 |= 0x00ff
[LCD_Port_Dir] = r1
r1 = [LCD_Port_B]
r1 &= (~(LCD_CS + LCD_E + LCD_R_W))&0xff00
r1 |= LCD_DI + LCD_E
r1 |= [bp+3] //装入要写的数据
[LCD_Port_B] = r1
r1 &=~LCD_E //产生E信号脉冲
r1 |= LCD_CS
[LCD_Port_B] = r1
pop bp,bp from [sp] //CPU环境恢复
retf
//****************************************************************************************************
// 128X64I液晶底层驱动写指令子程序 Writ_ZL(int l_r,int Data)
// 设计者: 牟联树
// 描 述: 指令写入子程序(供C语言调用)
// 日 期: 2004.12.22
// 版本号: 1.1
//****************************************************************************************************
.PUBLIC _Writ_ZL
_Writ_ZL: push bp,bp to [sp] //保存CPU环境
bp = sp +1
r1 = [LCD_Port_Dir]
r1 |= 0x00ff
[LCD_Port_Dir] = r1
r1 = [LCD_Port_B]
r1 &= (~(LCD_CS + LCD_E + LCD_DI + LCD_R_W))&0xff00
r1 |= [bp+3] //装入要写的数据
r1 |= LCD_E
[LCD_Port_B] = r1
r1 &=~LCD_E //产生E信号脉冲
r1 |= LCD_CS
[LCD_Port_B] = r1
pop bp,bp from [sp] //CPU环境恢复
retf
//****************************************************************************************************
// 128X64I液晶底层驱动读数据子程序 Read_Data()
// 设计者: 牟联树
// 描 述: 数据读取子程序(供C语言调用)
// 日 期: 2004.12.22
// 版本号: 1.1
//****************************************************************************************************
.PUBLIC _Read_Data
_Read_Data: push bp,bp to [sp] //保存CPU环境
r1 = [LCD_Port_Dir]
r1 &= 0xff00
[LCD_Port_Dir] = r1
r1 = [LCD_Port_B]
r1 &= ~LCD_CS //合成CS,DI和RW信号
r1 |= (LCD_DI + LCD_R_W + LCD_E)
[LCD_Port_B] = r1
r2 = [LCD_Port] //读数据
r1 &=~LCD_E
r1 |= LCD_CS
[LCD_Port_B] = r1
r1 = r2 & 0x00ff
pop bp,bp from [sp] //CPU环境恢复
retf
//****************************************************************************************************
// 128X64I液晶底层驱动读数据子程序 Read_State()
// 设计者: 牟联树
// 描 述: 数据读取子程序(供C语言调用)
// 日 期: 2004.12.22
// 版本号: 1.1
//****************************************************************************************************
.PUBLIC _Read_State
_Read_State: push bp,bp to [sp] //保存CPU环境
r1 = [LCD_Port_Dir]
r1 &= 0xff00
[LCD_Port_Dir] = r1
r1 = [LCD_Port_B]
r1 &= ~(LCD_CS + LCD_DI) //合成CS,DI和RW信号
r1 |= (LCD_R_W + LCD_E)
[LCD_Port_B] = r1
r2 = [LCD_Port] //读数据
r1 &=~LCD_E
r1 |= LCD_CS
[LCD_Port_B] = r1
r1 = r2 & 0x00ff
pop bp,bp from [sp] //CPU环境恢复
retf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -