📄 d12hal.asm
字号:
.include ..\spce061\061reg.inc
.public _F_InitWriteD12
.public _F_InitReadD12
.public _F_ReadD12
.public _F_WriteCmdToD12
.public _F_WriteDataToD12
.code
//====================================================================
// 函 数: F_InitWriteD12()
// 语 法: void F_TurnOffFirstLed(void)
// 描 述: 初始化写PDIUSBD12
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_InitWriteD12: .proc
push r1,r1 to [sp];
r1=[P_IOB_Buffer];
r1|=0x0090;
r1&=0xffdf; //D12_CE=0 NF_CE=1 LCD_CE=1
[P_IOB_Buffer]=r1;
r1=[P_IOA_Dir];
r1|=0xff00;
[P_IOA_Dir]=r1;
r1=[P_IOA_Attrib];
r1|=0xff00; //DB7(A.15)~DB0(A.8),D12_WE(A.7),D12_RE(A.6)->OutputPort
[P_IOA_Attrib]=r1;
r1=[P_IOA_Buffer];
r1|=0x00c0;
[P_IOA_Buffer]=r1; //RE=1 WE=1
pop r1,r1 from [sp];
retf ;
.endp
//====================================================================
// 函 数: F_InitReadD12()
// 语 法: void F_InitReadD12(void)
// 描 述: 初始化读PDIUSBD12
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_InitReadD12: .PROC
push r1,r1 to [sp];
r1=[P_IOB_Buffer];
r1|=0x0090;
r1&=0xffdf; //D12_CE=0 NF_CE=1 LCD_CE=1
[P_IOB_Buffer]=r1;
r1=[P_IOA_Dir];
r1&=0x00ff;
[P_IOA_Dir]=r1;
r1=[P_IOA_Attrib];
// r1&=0x00ff; //DB7(A.15)~DB0(A.8),D12_WE(A.7),D12_RE(A.6)->OutputPort
r1|=0xff00;
[P_IOA_Attrib]=r1;
r1=[P_IOA_Buffer];
r1|=0x00c0;
[P_IOA_Buffer]=r1; //RE=1 WE=1
pop r1,r1 from [sp];
retf ;
.ENDP
//====================================================================
// 函 数: F_ReadD12()
// 语 法: unsigned int F_ReadD12()
// 描 述: 从PDIUSBD12读数据
// 参 数: D_Addr:为偶地址0xff02
// 返回值: r1
//=====================================================================
_F_ReadD12: .PROC
push r2,r2 to [sp];
r2=[P_IOA_Buffer];
// r2&=0xffbd; //WE AT PA.6
r2&=0xff7d; //WE AT PA.7
// Add Modify
// r2|=0x0002;
[P_IOA_Buffer]=r2; //D12_RE=0
// nop;
r1 = [P_IOA_Data]; // Get data
r1 = r1 lsr 4; // Prepare high 8 bits Addr. to low 8 bits
r1 = r1 lsr 4; // Get low byte data
r2=[P_IOA_Buffer];
// r2|=0x0040; //RE AT PA.6
r2|=0x0080; //RE AT PA.7
[P_IOA_Buffer]=r2; //D12_RE=1
pop r2,r2 from [sp] ;
retf ; //Data Return in R1
.ENDP
//===================================================================================================
// 函 数: F_WriteDataToD12()
// 语 法: void F_WriteDataToD12(unsigned int Data)
// 描 述: 向PDIUSBD12写数据
// 参 数: Data_or_Command:数据参数
// 返回值: 无
//===================================================================================================
_F_WriteDataToD12: .PROC
push bp to [sp];
bp = sp + 1;
push r1,r2 to [sp] ;
r1=[bp+3]; //Get First Parament
r1 = r1 lsl 4; // Prepare high 8 bits Addr. to low 8 bits
r1 = r1 lsl 4; // Get low byte data
r2=[P_IOA_Buffer];
r2&=0x00fd; //Modify WR PIN(AT
r2|=r1;
[P_IOA_Buffer]=r2; // Send Data
// r2=[P_IOA_Buffer];
// r2&=0xff7f; //WE AT PA.7
r2&=0xffbf; //WE AT PA.6
[P_IOA_Buffer]=r2; //D12_WE=0
// r2|=0x0080; //WE AT PA.7
r2|=0x0040; //WE AT PA.6
[P_IOA_Buffer]=r2; //D12_WE=1
pop r1,r2 from [sp] ;
pop bp from [sp] ;
retf ;
.ENDP
//===================================================================================================
// 函 数: F_WriteCmdToD12()
// 语 法: void F_WriteCmdToD12(unsigned int command)
// 描 述: 向PDIUSBD12写数据或命令
// 参 数: Command:命令参数
// 返回值: 无
//===================================================================================================
_F_WriteCmdToD12: .PROC
// retf;//add
push bp to [sp];
bp = sp + 1;
push r1,r2 to [sp] ;
r1=[bp+3]; //Get First Parament
r2=[P_IOA_Buffer];
r1 = r1 lsl 4; // Prepare high 8 bits Addr. to low 8 bits
r1 = r1 lsl 4; // Get low byte data
r2|=0x0002; //D12_DC=1(Select Command)
r2&=0x00ff;
r2|=r1;
[P_IOA_Buffer]=r2; // Send Data
// r2=[P_IOA_Buffer];
// r2&=0xff7f; //WE AT PA.7
r2&=0xffbf; //WE AT PA.6
[P_IOA_Buffer]=r2; //D12_WE=0
// r2|=0x0080; //WE AT PA.7
r2|=0x0040; //WE AT PA.6
[P_IOA_Buffer]=r2; //D12_WE=1
pop r1,r2 from [sp] ;
pop bp from [sp] ;
retf ;
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -