📄 lcd.lst
字号:
\ 00009A 12.... LCALL ?XSTACK_DISP0_8
\ 00009D D0E0 POP A
\ 00009F F0 MOVX @DPTR,A
87 sendBuffer[6] = symbol[4];
\ 0000A0 8E82 MOV DPL,R6
\ 0000A2 8F83 MOV DPH,R7
\ 0000A4 A3 INC DPTR
\ 0000A5 A3 INC DPTR
\ 0000A6 A3 INC DPTR
\ 0000A7 A3 INC DPTR
\ 0000A8 E0 MOVX A,@DPTR
\ 0000A9 C0E0 PUSH A
\ 0000AB 7406 MOV A,#0x6
\ 0000AD 12.... LCALL ?XSTACK_DISP0_8
\ 0000B0 D0E0 POP A
\ 0000B2 F0 MOVX @DPTR,A
88 sendBuffer[7] = symbol[5];
\ 0000B3 8E82 MOV DPL,R6
\ 0000B5 8F83 MOV DPH,R7
\ 0000B7 A3 INC DPTR
\ 0000B8 A3 INC DPTR
\ 0000B9 A3 INC DPTR
\ 0000BA A3 INC DPTR
\ 0000BB A3 INC DPTR
\ 0000BC E0 MOVX A,@DPTR
\ 0000BD C0E0 PUSH A
\ 0000BF 7407 MOV A,#0x7
\ 0000C1 12.... LCALL ?XSTACK_DISP0_8
\ 0000C4 D0E0 POP A
\ 0000C6 F0 MOVX @DPTR,A
89 sendBuffer[8] = symbol[6];
\ 0000C7 8E82 MOV DPL,R6
\ 0000C9 8F83 MOV DPH,R7
\ 0000CB A3 INC DPTR
\ 0000CC A3 INC DPTR
\ 0000CD A3 INC DPTR
\ 0000CE A3 INC DPTR
\ 0000CF A3 INC DPTR
\ 0000D0 A3 INC DPTR
\ 0000D1 E0 MOVX A,@DPTR
\ 0000D2 C0E0 PUSH A
\ 0000D4 7408 MOV A,#0x8
\ 0000D6 12.... LCALL ?XSTACK_DISP0_8
\ 0000D9 D0E0 POP A
\ 0000DB F0 MOVX @DPTR,A
90 sendBuffer[9] = symbol[7];
\ 0000DC 8E82 MOV DPL,R6
\ 0000DE 8F83 MOV DPH,R7
\ 0000E0 A3 INC DPTR
\ 0000E1 A3 INC DPTR
\ 0000E2 A3 INC DPTR
\ 0000E3 A3 INC DPTR
\ 0000E4 A3 INC DPTR
\ 0000E5 A3 INC DPTR
\ 0000E6 A3 INC DPTR
\ 0000E7 E0 MOVX A,@DPTR
\ 0000E8 C0E0 PUSH A
\ 0000EA 7409 MOV A,#0x9
\ 0000EC 12.... LCALL ?XSTACK_DISP0_8
\ 0000EF D0E0 POP A
\ 0000F1 F0 MOVX @DPTR,A
91
92 smbSend(sendBuffer, 10);
\ 0000F2 ; Setup parameters for call to function smbSend
\ 0000F2 790A MOV R1,#0xa
\ 0000F4 85..82 MOV DPL,?XSP + 0
\ 0000F7 85..83 MOV DPH,?XSP + 1
\ 0000FA AA82 MOV R2,DPL
\ 0000FC AB83 MOV R3,DPH
\ 0000FE 90.... MOV DPTR,#(smbSend & 0xffff)
\ 000101 74.. MOV A,#((smbSend >> 16) & 0xff)
\ 000103 12.... LCALL ?BCALL ; Banked call to: DPTR()
93 }
\ 000106 740A MOV A,#0xa
\ 000108 02.... LJMP ?Subroutine0 & 0xFFFF
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
\ ??Subroutine0_0:
\ 000003 7F01 MOV R7,#0x1
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
94
95
96 /******************************************************************************
97 * See lcd.h for a description of this function.
98 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
99 void initLcd(void){
\ initLcd:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 8
\ 000004 74F8 MOV A,#-0x8
\ 000006 12.... LCALL ?ALLOC_XSTACK8
100 BYTE sendBuffer[8];
101
102 // Setting the ports as inputs.
103 IO_DIR_PORT_PIN(1, 2, IO_IN);
\ 000009 53FEFB ANL 0xfe,#0xfb
104 IO_DIR_PORT_PIN(2, 0, IO_IN);
\ 00000C 53FFFE 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);
\ 00000F 53F4FB ANL 0xf4,#0xfb
108 IO_FUNC_PORT_PIN(2, 0, IO_FUNC_GIO);
\ 000012 53F5FE ANL 0xf5,#0xfe
109
110 // Setting ports for pull-up.
111 IO_IMODE_PORT_PIN(1, 2, IO_IMODE_PUD);
\ 000015 53F6FB ANL 0xf6,#0xfb
112 IO_IMODE_PORT_PIN(2, 0, IO_IMODE_PUD);
\ 000018 53F7FE ANL 0xf7,#0xfe
113 IO_PUD_PORT(1, IO_PULLUP);
\ 00001B 53F7BF ANL 0xf7,#0xbf
114 IO_PUD_PORT(2, IO_PULLUP);
\ 00001E 53F77F ANL 0xf7,#0x7f
115
116 // Setting up the lcd initialisation data.
117 sendBuffer[0] = LCD_ADDR;
\ 000021 7476 MOV A,#0x76
\ 000023 85..82 MOV DPL,?XSP + 0
\ 000026 85..83 MOV DPH,?XSP + 1
\ 000029 F0 MOVX @DPTR,A
118 sendBuffer[1] = RS_0; // Instruction Register
\ 00002A 7401 MOV A,#0x1
\ 00002C 12.... LCALL ?XSTACK_DISP0_8
\ 00002F E4 CLR A
\ 000030 F0 MOVX @DPTR,A
119 sendBuffer[2] = 0x0C; // Display control D = 1: Display On
\ 000031 7402 MOV A,#0x2
\ 000033 12.... LCALL ?XSTACK_DISP0_8
\ 000036 740C MOV A,#0xc
\ 000038 F0 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
\ 000039 7403 MOV A,#0x3
\ 00003B 12.... LCALL ?XSTACK_DISP0_8
\ 00003E 7421 MOV A,#0x21
\ 000040 F0 MOVX @DPTR,A
123 sendBuffer[4] = 0xA0; // Set DDRAM address ADD = 0x20
\ 000041 7404 MOV A,#0x4
\ 000043 12.... LCALL ?XSTACK_DISP0_8
\ 000046 74A0 MOV A,#-0x60
\ 000048 F0 MOVX @DPTR,A
124 sendBuffer[5] = 0x07; // Display configuration P = 1: Column data right to left
\ 000049 7405 MOV A,#0x5
\ 00004B 12.... LCALL ?XSTACK_DISP0_8
\ 00004E 7407 MOV A,#0x7
\ 000050 F0 MOVX @DPTR,A
125 // Q = 1: Row data, bottom to top
126 sendBuffer[6] = 0x34; // Function set DL= 0: 4 bits
\ 000051 7406 MOV A,#0x6
\ 000053 12.... LCALL ?XSTACK_DISP0_8
\ 000056 7434 MOV A,#0x34
\ 000058 F0 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
\ 000059 7407 MOV A,#0x7
\ 00005B 12.... LCALL ?XSTACK_DISP0_8
\ 00005E 7401 MOV A,#0x1
\ 000060 F0 MOVX @DPTR,A
131 smbSend(sendBuffer, 8);
\ 000061 ; Setup parameters for call to function smbSend
\ 000061 7908 MOV R1,#0x8
\ 000063 85..82 MOV DPL,?XSP + 0
\ 000066 85..83 MOV DPH,?XSP + 1
\ 000069 AA82 MOV R2,DPL
\ 00006B AB83 MOV R3,DPH
\ 00006D 90.... MOV DPTR,#(smbSend & 0xffff)
\ 000070 74.. MOV A,#((smbSend >> 16) & 0xff)
\ 000072 12.... LCALL ?BCALL ; Banked call to: DPTR()
132
133 lcdUpdate((char*)"", (char*)""); //clear display
\ 000075 ; Setup parameters for call to function lcdUpdateLine
\ 000075 7A.. MOV R2,#(`?<Constant "">` & 0xff)
\ 000077 7B.. MOV R3,#((`?<Constant "">` >> 8) & 0xff)
\ 000079 7900 MOV R1,#0x0
\ 00007B 90.... MOV DPTR,#(lcdUpdateLine & 0xffff)
\ 00007E 74.. MOV A,#((lcdUpdateLine >> 16) & 0xff)
\ 000080 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000083 ; Setup parameters for call to function lcdUpdateLine
\ 000083 7A.. MOV R2,#(`?<Constant "">` & 0xff)
\ 000085 7B.. MOV R3,#((`?<Constant "">` >> 8) & 0xff)
\ 000087 7901 MOV R1,#0x1
\ 000089 74.. MOV A,#((lcdUpdateLine >> 16) & 0xff)
\ 00008B 12.... LCALL ?BCALL ; Banked call to: DPTR()
134 }
\ 00008E 7408 MOV A,#0x8
\ 000090 12.... LCALL ?DEALLOC_XSTACK8
\ 000093 02.... LJMP ??Subroutine1_1 & 0xFFFF
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 90.... MOV DPTR,#(smbClock & 0xffff)
\ 000003 74.. MOV A,#((smbClock >> 16) & 0xff)
\ ??Subroutine1_0:
\ 000005 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ ??Subroutine1_1:
\ 000008 D083 POP DPH
\ 00000A D082 POP DPL
\ 00000C 02.... LJMP ?BRET
135
136
137
138 /******************************************************************************
139 * See lcd.h for a description of this function.
140 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
141 void lcdUpdate(char *pLine1, char *pLine2) {
\ lcdUpdate:
\ 000000 74F7 MOV A,#-0x9
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 9
\ 000005 ; Auto size: 0
\ 000005 EC MOV A,R4
\ 000006 FE MOV R6,A
\ 000007 ED MOV A,R5
\ 000008 FF MOV R7,A
142 lcdUpdateLine(LINE1, pLine1);
\ 000009 ; Setup parameters for call to function lcdUpdateLine
\ 000009 7900 MOV R1,#0x0
\ 00000B 90.... MOV DPTR,#(lcdUpdateLine & 0xffff)
\ 00000E 74.. MOV A,#((lcdUpdateLine >> 16) & 0xff)
\ 000010 12.... LCALL ?BCALL ; Banked call to: DPTR()
143 lcdUpdateLine(LINE2, pLine2);
\ 000013 ; Setup parameters for call to function lcdUpdateLine
\ 000013 EE MOV A,R6
\ 000014 FA MOV R2,A
\ 000015 EF MOV A,R7
\ 000016 FB MOV R3,A
\ 000017 7901 MOV R1,#0x1
\ 000019 74.. MOV A,#((lcdUpdateLine >> 16) & 0xff)
\ 00001B REQUIRE ?Subroutine4
\ 00001B ; // Fall through to label ?Subroutine4
144 return;
145 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine4:
\ 000000 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000003 02.... LJMP ??Subroutine0_0 & 0xFFFF
146
147
148 /******************************************************************************
149 * See lcd.h for a description of this function.
150 ******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -