📄 main.lst
字号:
196: LcdSendCommand(0x80 + (i & 1) * 16 + (i >> 1) * 8);
00000014 1C20 MOV R0,R4 ; i
00000016 0600 LSL R0,R0,#0x18 ; i
00000018 0E00 LSR R0,R0,#0x18
0000001A 2101 MOV R1,#0x1
0000001C 4008 AND R0,R1
0000001E 0100 LSL R0,R0,#0x4
00000020 3080 ADD R0,#0x80
00000022 1C21 MOV R1,R4 ; i
00000024 0609 LSL R1,R1,#0x18 ; i
00000026 0E09 LSR R1,R1,#0x18
00000028 0849 LSR R1,R1,#0x1
0000002A 00C9 LSL R1,R1,#0x3
0000002C 1840 ADD R0,R1
0000002E F7FF BL LcdSendCommand?T ; T=0x0001 (1)
00000030 FFE7 BL LcdSendCommand?T ; T=0x0001 (2)
197: for (j = 0;j < 16; j ++) {
00000032 2500 MOV R5,#0x0
00000034 ---- Variable 'j' assigned to Register 'R5' ----
00000034 E00F B L_35 ; T=0x00000056
00000036 L_36:
198: LcdSendData(LcdBuffers.LcdBuff[i][j]);//显示刷新
00000036 1C20 MOV R0,R4 ; i
00000038 0601 LSL R1,R0,#0x18 ; i
0000003A 0E09 LSR R1,R1,#0x18
0000003C 2011 MOV R0,#0x11
0000003E 4341 MUL R1,R0
00000040 1C28 MOV R0,R5 ; j
00000042 0600 LSL R0,R0,#0x18 ; j
00000044 0E00 LSR R0,R0,#0x18
00000046 1809 ADD R1,R0
00000048 4800 LDR R0,=LcdBuffers ; LcdBuffers
0000004A 5C40 LDRB R0,[R0,R1]
0000004C F7FF BL LcdSendData?T ; T=0x0001 (1)
0000004E FFD8 BL LcdSendData?T ; T=0x0001 (2)
199: }
00000050 3501 ADD R5,#0x1
00000052 062D LSL R5,R5,#0x18
00000054 0E2D LSR R5,R5,#0x18
00000056 L_35:
00000056 1C28 MOV R0,R5 ; j
00000058 0600 LSL R0,R0,#0x18 ; j
0000005A 0E00 LSR R0,R0,#0x18
0000005C 2810 CMP R0,#0x10
0000005E DBEA BLT L_36 ; T=0x00000036
200: LcdBuffers.LcdBuffWrFlag[i] = 0;
00000060 2000 MOV R0,#0x0
00000062 1C21 MOV R1,R4 ; i
00000064 060A LSL R2,R1,#0x18 ; i
00000066 0E12 LSR R2,R2,#0x18
00000068 4800 LDR R1,=LcdBuffers + 0x44 ; LcdBuffers+68
0000006A 5488 STRB R0,[R1,R2]
202: }
0000006C L_27:
0000006C 3401 ADD R4,#0x1
0000006E 0624 LSL R4,R4,#0x18
00000070 0E24 LSR R4,R4,#0x18
00000072 L_29:
00000072 1C20 MOV R0,R4 ; i
00000074 0600 LSL R0,R0,#0x18 ; i
00000076 0E00 LSR R0,R0,#0x18
00000078 2804 CMP R0,#0x4
0000007A DBC4 BLT L_30 ; T=0x00000006
0000007C ; SCOPE-END
203: }
ARM COMPILER V2.42, main 19/01/06 08:10:09 PAGE 19
0000007C BC30 POP {R4-R5}
0000007E BC08 POP {R3}
00000080 4718 BX R3
00000082 ENDP ; 'LcdDisplayBuffers?T'
*** CODE SEGMENT '?PR?SetLcdDisplayPos?T?main':
206: void SetLcdDisplayPos(unsigned char row, unsigned char col)
00000000 ---- Variable 'col' assigned to Register 'R1' ----
00000000 1C02 MOV R2,R0 ; row
00000002 ---- Variable 'row' assigned to Register 'R2' ----
208: LcdBuffers.Row = row & 0x03;//4行
00000002 1C10 MOV R0,R2 ; row
00000004 0602 LSL R2,R0,#0x18 ; row
00000006 0E12 LSR R2,R2,#0x18
00000008 2003 MOV R0,#0x3
0000000A 4002 AND R2,R0
0000000C 0612 LSL R2,R2,#0x18
0000000E 0E12 LSR R2,R2,#0x18
00000010 4800 LDR R0,=LcdBuffers + 0x48 ; LcdBuffers+72
00000012 7002 STRB R2,[R0,#0x0] ; LcdBuffers+72
209: LcdBuffers.Col = col & 0x0f;//16列
00000014 1C08 MOV R0,R1 ; col
00000016 0601 LSL R1,R0,#0x18 ; col
00000018 0E09 LSR R1,R1,#0x18
0000001A 200F MOV R0,#0xF
0000001C 4001 AND R1,R0
0000001E 0609 LSL R1,R1,#0x18
00000020 0E09 LSR R1,R1,#0x18
00000022 4800 LDR R0,=LcdBuffers + 0x49 ; LcdBuffers+73
00000024 7001 STRB R1,[R0,#0x0] ; LcdBuffers+73
210: }
00000026 4770 BX R14
00000028 ENDP ; 'SetLcdDisplayPos?T'
*** CODE SEGMENT '?PR?LcdDisplayString?T?main':
212: void LcdDisplayString(unsigned char string[])
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C04 MOV R4,R0 ; string
00000004 ---- Variable 'string' assigned to Register 'R4' ----
213: {
00000004 ; SCOPE-START
215: len = strlen(string);
00000004 1C20 MOV R0,R4 ; string
00000006 F7FF BL strlen?T ; T=0x0001 (1)
00000008 FFFB BL strlen?T ; T=0x0001 (2)
0000000A 0603 LSL R3,R0,#0x18 ; strlen?T
0000000C 0E1B LSR R3,R3,#0x18
0000000E ---- Variable 'len' assigned to Register 'R3' ----
216: if ((LcdBuffers.Row < 4) && ((LcdBuffers.Col + len) <= 16)) {
0000000E 4800 LDR R0,=LcdBuffers + 0x48 ; LcdBuffers+72
00000010 7801 LDRB R1,[R0,#0x0] ; LcdBuffers+72
00000012 1C08 MOV R0,R1
00000014 2804 CMP R0,#0x4
00000016 DA41 BGE L_38 ; T=0x0000009C
00000018 1C18 MOV R0,R3 ; len
0000001A 0602 LSL R2,R0,#0x18 ; len
0000001C 0E12 LSR R2,R2,#0x18
0000001E 4800 LDR R0,=LcdBuffers + 0x49 ; LcdBuffers+73
00000020 7800 LDRB R0,[R0,#0x0] ; LcdBuffers+73
00000022 1880 ADD R0,R2
00000024 2810 CMP R0,#0x10
00000026 DC39 BGT L_38 ; T=0x0000009C
217: if (len == 0) {
00000028 1C18 MOV R0,R3 ; len
0000002A 0600 LSL R0,R0,#0x18 ; len
0000002C 0E00 LSR R0,R0,#0x18
0000002E 2800 CMP R0,#0x0
00000030 D112 BNE L_49 ; T=0x00000058
ARM COMPILER V2.42, main 19/01/06 08:10:09 PAGE 20
218: while(LcdBuffers.Col < 16) LcdBuffers.LcdBuff[LcdBuffers.Row][LcdBuffers.Col ++] = ' ';
00000032 E00C B L_40 ; T=0x0000004E
00000034 L_42:
00000034 2020 MOV R0,#0x20
00000036 4800 LDR R5,=LcdBuffers + 0x49 ; LcdBuffers+73
00000038 782A LDRB R2,[R5,#0x0] ; LcdBuffers+73
0000003A 1C16 MOV R6,R2
0000003C 3601 ADD R6,#0x1
0000003E 702E STRB R6,[R5,#0x0] ; LcdBuffers+73
00000040 4800 LDR R5,=LcdBuffers + 0x48 ; LcdBuffers+72
00000042 782D LDRB R5,[R5,#0x0] ; LcdBuffers+72
00000044 2611 MOV R6,#0x11
00000046 4375 MUL R5,R6
00000048 18AD ADD R5,R2
0000004A 4800 LDR R2,=LcdBuffers ; LcdBuffers
0000004C 5550 STRB R0,[R2,R5]
0000004E L_40:
0000004E 4800 LDR R0,=LcdBuffers + 0x49 ; LcdBuffers+73
00000050 7800 LDRB R0,[R0,#0x0] ; LcdBuffers+73
00000052 2810 CMP R0,#0x10
00000054 DBEE BLT L_42 ; T=0x00000034
219: }
00000056 E01D B L_44 ; T=0x00000094
221: for (i = 0; i < len; i ++) LcdBuffers.LcdBuff[LcdBuffers.Row][LcdBuffers.Col ++] = string[i];
00000058 L_49:
00000058 2200 MOV R2,#0x0
0000005A ---- Variable 'i' assigned to Register 'R2' ----
0000005A E013 B L_47 ; T=0x00000084
0000005C L_48:
0000005C 1C10 MOV R0,R2 ; i
0000005E 0605 LSL R5,R0,#0x18 ; i
00000060 0E2D LSR R5,R5,#0x18
00000062 1C20 MOV R0,R4 ; string
00000064 5D40 LDRB R0,[R0,R5]
00000066 4800 LDR R6,=LcdBuffers + 0x49 ; LcdBuffers+73
00000068 7835 LDRB R5,[R6,#0x0] ; LcdBuffers+73
0000006A 1C2F MOV R7,R5
0000006C 3701 ADD R7,#0x1
0000006E 7037 STRB R7,[R6,#0x0] ; LcdBuffers+73
00000070 4800 LDR R6,=LcdBuffers + 0x48 ; LcdBuffers+72
00000072 7836 LDRB R6,[R6,#0x0] ; LcdBuffers+72
00000074 2711 MOV R7,#0x11
00000076 437E MUL R6,R7
00000078 1976 ADD R6,R5
0000007A 4800 LDR R5,=LcdBuffers ; LcdBuffers
0000007C 55A8 STRB R0,[R5,R6]
0000007E 3201 ADD R2,#0x1
00000080 0612 LSL R2,R2,#0x18
00000082 0E12 LSR R2,R2,#0x18
00000084 L_47:
00000084 1C18 MOV R0,R3 ; len
00000086 0605 LSL R5,R0,#0x18 ; len
00000088 0E2D LSR R5,R5,#0x18
0000008A 1C10 MOV R0,R2 ; i
0000008C 0600 LSL R0,R0,#0x18 ; i
0000008E 0E00 LSR R0,R0,#0x18
00000090 42A8 CMP R0,R5
00000092 D3E3 BCC L_48 ; T=0x0000005C
00000094 L_44:
222: LcdBuffers.LcdBuffWrFlag[LcdBuffers.Row] = 1;//需要显示刷新
00000094 2001 MOV R0,#0x1
00000096 1C0A MOV R2,R1
00000098 4800 LDR R1,=LcdBuffers + 0x44 ; LcdBuffers+68
0000009A 5488 STRB R0,[R1,R2]
223: }
0000009C L_38:
ARM COMPILER V2.42, main 19/01/06 08:10:09 PAGE 21
0000009C ; SCOPE-END
224: }
0000009C BCF0 POP {R4-R7}
0000009E BC08 POP {R3}
000000A0 4718 BX R3
000000A2 ENDP ; 'LcdDisplayString?T'
*** CODE SEGMENT '?PR?MSSP_Init?T?main':
230: IODIR0 |= (1 << SCK1); // 设置SCK0控制口为输出
00000000 4800 LDR R2,=0x20000
00000002 4800 LDR R0,=0xE0028008
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
231: IODIR0 |= (1 << MOSI1); // 设置MOSI0控制口为输出
0000000A 4800 LDR R2,=0x80000
0000000C 4800 LDR R0,=0xE0028008
0000000E 6801 LDR R1,[R0,#0x0]
00000010 4311 ORR R1,R2
00000012 6001 STR R1,[R0,#0x0]
232: }
00000014 4770 BX R14
00000016 ENDP ; 'MSSP_Init?T'
*** CODE SEGMENT '?PR?SSP_Init?T?main':
244: PCONP |= 1<<10;
00000000 4800 LDR R2,=0x400
00000002 4800 LDR R0,=0xE01FC0C4
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
245: PINSEL1 |= ((P0_17_SCK1 << P0_17_PINSEL) | (P0_19_MOSI1 << P0_19_PINSEL));
0000000A 2288 MOV R2,#0x88
0000000C 4800 LDR R0,=0xE002C004
0000000E 6801 LDR R1,[R0,#0x0]
00000010 4311 ORR R1,R2
00000012 6001 STR R1,[R0,#0x0]
248: SSPCR0 = (0x01 << 8) | // SCR 设置SPI时钟分频
00000014 4800 LDRH R1,=0x107
00000016 4800 LDR R0,=0xE0068000
00000018 8001 STRH R1,[R0,#0x0]
256: SSPCR1 = (0x00 << 3) | // SOD 从机输出禁能,1=禁止,0=允许
0000001A 2102 MOV R1,#0x2
0000001C 4800 LDR R0,=0xE0068004
0000001E 7001 STRB R1,[R0,#0x0]
261: SSPCPSR = 0x52; // PCLK分频值
00000020 2152 MOV R1,#0x52
00000022 4800 LDR R0,=0xE0068010
00000024 7001 STRB R1,[R0,#0x0]
263: SSPICR = 0x03; // 中断清除寄存器
00000026 2103 MOV R1,#0x3
00000028 4800 LDR R0,=0xE0068020
0000002A 7001 STRB R1,[R0,#0x0]
264: }
0000002C 4770 BX R14
0000002E ENDP ; 'SSP_Init?T'
*** CODE SEGMENT '?PR?SSP_SendData?T?main':
275: uint8 SSP_SendData(uint8 data)
00000000 1C01 MOV R1,R0 ; data
00000002 ---- Variable 'data' assigned to Register 'R1' ----
277: SSPDR = data;
00000002 1C08 MOV R0,R1 ; data
00000004 0601 LSL R1,R0,#0x18 ; data
00000006 0E09 LSR R1,R1,#0x18
00000008 4800 LDR R0,=0xE0068008
0000000A 8001 STRH R1,[R0,#0x0]
278:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -