lcd_a_func.asm

来自「精锐通12864E17的驱动程序」· 汇编 代码 · 共 97 行

ASM
97
字号
.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 + =
减小字号Ctrl + -
显示快捷键?