⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 10
        MOV	A,#-0xa
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 19)
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//   65    BYTE sendBuffer[10];
//   66 
//   67    //send control data
//   68    sendBuffer[0] = LCD_ADDR;
        MOV	A,#0x76
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//   69    sendBuffer[1] = RS_0;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        CLR	A
        MOVX	@DPTR,A
//   70 
//   71    if (address < 0x40)
        MOV	A,R1
        CLR	C
        SUBB	A,#0x40
        MOV	A,#0x2
        JNC	??initNewSymbol_0
//   72       sendBuffer[2] = 0x80;
        LCALL	?XSTACK_DISP0_8
        MOV	A,#-0x80
        SJMP	??initNewSymbol_1
//   73    else
//   74       sendBuffer[2] = 0xC0;
??initNewSymbol_0:
        LCALL	?XSTACK_DISP0_8
        MOV	A,#-0x40
??initNewSymbol_1:
        MOVX	@DPTR,A
//   75 
//   76    sendBuffer[3] = 0x40 | (address & 0x3F);
        MOV	A,#0x3f
        ANL	A,R1
        ORL	A,#0x40
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   77    smbSend(sendBuffer, 4);
        ; Setup parameters for call to function smbSend
        MOV	R1,#0x4
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(smbSend & 0xffff)
        MOV	A,#((smbSend >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   78 
//   79    //send data
//   80    sendBuffer[0] = LCD_ADDR;
//   81    sendBuffer[1] = RS_1;
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x40
        MOVX	@DPTR,A
//   82 
//   83    sendBuffer[2] = symbol[0];
        MOV	DPL,R6
        MOV	DPH,R7
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   84    sendBuffer[3] = symbol[1];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   85    sendBuffer[4] = symbol[2];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   86    sendBuffer[5] = symbol[3];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   87    sendBuffer[6] = symbol[4];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   88    sendBuffer[7] = symbol[5];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x7
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   89    sendBuffer[8] = symbol[6];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x8
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   90    sendBuffer[9] = symbol[7];
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-1
        MOV	A,#0x9
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+0
        MOVX	@DPTR,A
//   91 
//   92    smbSend(sendBuffer, 10);
        ; Setup parameters for call to function smbSend
        MOV	R1,#0xa
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(smbSend & 0xffff)
        MOV	A,#((smbSend >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   93 }
        MOV	A,#0xa
        LJMP	?Subroutine0 & 0xFFFF
        CFI EndBlock cfiBlock0
//   94 
//   95 
//   96 /******************************************************************************
//   97 * See lcd.h for a description of this function.
//   98 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   99 void initLcd(void){
initLcd:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function initLcd
        FUNCALL initLcd, smbSend
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL initLcd, lcdUpdateLine
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL initLcd, lcdUpdateLine
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 8, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 8
        MOV	A,#-0x8
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 8)
//  100    BYTE sendBuffer[8];
//  101 
//  102    // Setting the ports as inputs.
//  103    IO_DIR_PORT_PIN(1, 2, IO_IN);
        ANL	0xfe,#0xfb
//  104    IO_DIR_PORT_PIN(2, 0, IO_IN);
        ANL	0xff,#0xfe
//  105 
//  106    // Setting P2_3 and P2_4 for general IO operation.
//  107    IO_FUNC_PORT_PIN(1, 2, IO_FUNC_GIO);
        ANL	0xf4,#0xfb
//  108    IO_FUNC_PORT_PIN(2, 0, IO_FUNC_GIO);
        ANL	0xf5,#0xfe
//  109 
//  110    // Setting ports for pull-up.
//  111    IO_IMODE_PORT_PIN(1, 2, IO_IMODE_PUD);
        ANL	0xf6,#0xfb
//  112    IO_IMODE_PORT_PIN(2, 0, IO_IMODE_PUD);
        ANL	0xf7,#0xfe
//  113    IO_PUD_PORT(1, IO_PULLUP);
        ANL	0xf7,#0xbf
//  114    IO_PUD_PORT(2, IO_PULLUP);
        ANL	0xf7,#0x7f
//  115 
//  116    // Setting up the lcd initialisation data.
//  117    sendBuffer[0] = LCD_ADDR;
        MOV	A,#0x76
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//  118    sendBuffer[1] = RS_0;      // Instruction Register
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        CLR	A
        MOVX	@DPTR,A
//  119    sendBuffer[2] = 0x0C;      // Display control         D =  1:      Display On
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0xc
        MOVX	@DPTR,A
//  120    //                                                    C =  0:      Cursor Off
//  121    //                                                    B =  0:      Cursor character blink off
//  122    sendBuffer[3] = 0x21;      // Function set            H =  1:      Use extended instruction set
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x21
        MOVX	@DPTR,A
//  123    sendBuffer[4] = 0xA0;      // Set DDRAM address       ADD = 0x20
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOV	A,#-0x60
        MOVX	@DPTR,A
//  124    sendBuffer[5] = 0x07;      // Display configuration   P =  1:      Column data right to left
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x7
        MOVX	@DPTR,A
//  125    //                                                    Q =  1:      Row data, bottom to top
//  126    sendBuffer[6] = 0x34;      // Function set            DL=  0:      4 bits
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x34
        MOVX	@DPTR,A
//  127    //                                                    M =  1:      2-line by 16 display
//  128    //                                                    SL=  0:      MUX1:18
//  129    //                                                    H =  0:      Use basic instruction set
//  130    sendBuffer[7] = 0x01;      // Clearing display
        MOV	A,#0x7
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x1
        MOVX	@DPTR,A
//  131    smbSend(sendBuffer, 8);
        ; Setup parameters for call to function smbSend
        MOV	R1,#0x8
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(smbSend & 0xffff)
        MOV	A,#((smbSend >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  132 
//  133    lcdUpdate((char*)"", (char*)"");  //clear display
        ; Setup parameters for call to function lcdUpdateLine
        MOV	R2,#(`?<Constant "">` & 0xff)
        MOV	R3,#((`?<Constant "">` >> 8) & 0xff)
        MOV	R1,#0x0
        MOV	DPTR,#(lcdUpdateLine & 0xffff)
        MOV	A,#((lcdUpdateLine >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        ; Setup parameters for call to function lcdUpdateLine
        MOV	R2,#(`?<Constant "">` & 0xff)
        MOV	R3,#((`?<Constant "">` >> 8) & 0xff)
        MOV	R1,#0x1
        MOV	A,#((lcdUpdateLine >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  134 }
        MOV	A,#0x8
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 XSP16+0
        LJMP	??Subroutine1_1 & 0xFFFF
        CFI EndBlock cfiBlock1
//  135 
//  136 
//  137 
//  138 /******************************************************************************
//  139 * See lcd.h for a description of this function.
//  140 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  141 void lcdUpdate(char *pLine1, char *pLine2) {
lcdUpdate:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function lcdUpdate
        FUNCALL lcdUpdate, lcdUpdateLine
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL lcdUpdate, lcdUpdateLine
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -