📄 lcd_a_func.asm
字号:
.include SPT660X.inc
//===========================================================================================
// void Lcd_A_DelayBusTime(void);
// Func :延时等待
// Call : 可由C程序调用
// Input : None
// Return : None
.CODE
.public _Lcd_A_DelayBusTime
_Lcd_A_DelayBusTime:
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
RETF;
//===========================================================================================
// void Lcd_A_Set_Page_Col(word page,word col);
// Func :LCD 设置页号,列号
// Call : 可由C程序调用
// Input : word page,word col
// Return : None
.public _Lcd_A_Set_Page_Col
_Lcd_A_Set_Page_Col:
push bp to [sp];
bp=sp+1;
r1 = [bp+3]; //get page
r2 = [bp+4]; //get col;
//r4 = 7;
r4 = r1;//r4 - r1;
CALL _Lcd_A_Set_Page; //Set Page No. (0~7)
r4 = r2;
call _Lcd_A_Set_Col;
pop bp from [sp]
RETF;
//===========================================================================================
// Func :LCD 设置页号
// Call : ASM
// Input : Page No. (R4:0x0000~0x0007)
// Return : None
.public _Lcd_A_Set_Page
_Lcd_A_Set_Page:
CMP R4,4;
JB _Lcd_NAE;
R4 = R4 - 4;
JMP _Lcd_AE;
_Lcd_NAE:
R4 = R4 + 4;
_Lcd_AE:
R4 |= 0x0AB0; //Set Page No. (0~7)
[P_Lcd501Ctrl]=R4;
CALL _Lcd_A_DelayBusTime;
CALL _Lcd_A_DelayBusTime;
CALL _Lcd_A_DelayBusTime;
CALL _Lcd_A_DelayBusTime;
RETF;
//===========================================================================================
// Func :LCD 设置列号
// Call : ASM
// Input : Col No. (R2:0x0000~0x0083)
// Return : None
// Destroy : R1,R2
.public _Lcd_A_Set_Col
_Lcd_A_Set_Col:
R1 = R2 ; //Store temporarily
R1 = R1 LSR 4;
R1 &= 0x000F; //Isolate MS 4-bits
R1 |= 0x0A10; //Set column address : Most significant 4 bits
[P_Lcd501Ctrl]=R1;
CALL _Lcd_A_DelayBusTime;
CALL _Lcd_A_DelayBusTime;
R2 &= 0x000F; //Isolate LS 4-bits
R2 |= 0x0A00; //Set column address : Least significant 4 bits
[P_Lcd501Ctrl]=R2;
CALL _Lcd_A_DelayBusTime;
CALL _Lcd_A_DelayBusTime;
RETF;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -