📄 st7920.lst
字号:
00000006 1C13 MOV R3,R2 ; i
00000008 061C LSL R4,R3,#0x18 ; i
0000000A 0E24 LSR R4,R4,#0x18
0000000C 1C03 MOV R3,R0 ; data
0000000E 5D1B LDRB R3,[R3,R4]
00000010 2440 MOV R4,#0x40
00000012 4223 TST R3,R4
00000014 D006 BEQ L_31 ; T=0x00000024
110: *(p+i)=0x08;
00000016 2308 MOV R3,#0x8
00000018 1C14 MOV R4,R2 ; i
0000001A 0625 LSL R5,R4,#0x18 ; i
0000001C 0E2D LSR R5,R5,#0x18
0000001E 1C0C MOV R4,R1 ; p
00000020 5563 STRB R3,[R4,R5]
00000022 E005 B L_26 ; T=0x00000030
00000024 L_31:
112: *(p+i)=0x2d;
00000024 232D MOV R3,#0x2D
00000026 1C14 MOV R4,R2 ; i
00000028 0625 LSL R5,R4,#0x18 ; i
0000002A 0E2D LSR R5,R5,#0x18
0000002C 1C0C MOV R4,R1 ; p
0000002E 5563 STRB R3,[R4,R5]
113: }
00000030 L_26:
00000030 3201 ADD R2,#0x1
00000032 0612 LSL R2,R2,#0x18
00000034 0E12 LSR R2,R2,#0x18
00000036 L_28:
00000036 1C13 MOV R3,R2 ; i
00000038 061B LSL R3,R3,#0x18 ; i
0000003A 0E1B LSR R3,R3,#0x18
0000003C 2B10 CMP R3,#0x10
0000003E DBE2 BLT L_29 ; T=0x00000006
00000040 ; SCOPE-END
114: }
00000040 BC30 POP {R4-R5}
00000042 4770 BX R14
00000044 ENDP ; 'PreDispIndoorCall?T'
*** CODE SEGMENT '?PR?PreDispOutdoorCallUp?T?ST7920':
122: void PreDispOutdoorCallUp(uint8 *data,uint8 *p)
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'p' assigned to Register 'R1' ----
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 10
00000002 ---- Variable 'data' assigned to Register 'R0' ----
123: {
00000002 ; SCOPE-START
125: for(i=0; i<16; i++)
00000002 2200 MOV R2,#0x0
00000004 ---- Variable 'i' assigned to Register 'R2' ----
00000004 E017 B L_35 ; T=0x00000036
00000006 L_36:
127: if((0x20&(*(data+i)))!=0)
00000006 1C13 MOV R3,R2 ; i
00000008 061C LSL R4,R3,#0x18 ; i
0000000A 0E24 LSR R4,R4,#0x18
0000000C 1C03 MOV R3,R0 ; data
0000000E 5D1B LDRB R3,[R3,R4]
00000010 2420 MOV R4,#0x20
00000012 4223 TST R3,R4
00000014 D006 BEQ L_38 ; T=0x00000024
128: *(p+i)=0x08;
00000016 2308 MOV R3,#0x8
00000018 1C14 MOV R4,R2 ; i
0000001A 0625 LSL R5,R4,#0x18 ; i
0000001C 0E2D LSR R5,R5,#0x18
0000001E 1C0C MOV R4,R1 ; p
00000020 5563 STRB R3,[R4,R5]
00000022 E005 B L_33 ; T=0x00000030
00000024 L_38:
130: *(p+i)=0x2d;
00000024 232D MOV R3,#0x2D
00000026 1C14 MOV R4,R2 ; i
00000028 0625 LSL R5,R4,#0x18 ; i
0000002A 0E2D LSR R5,R5,#0x18
0000002C 1C0C MOV R4,R1 ; p
0000002E 5563 STRB R3,[R4,R5]
131: }
00000030 L_33:
00000030 3201 ADD R2,#0x1
00000032 0612 LSL R2,R2,#0x18
00000034 0E12 LSR R2,R2,#0x18
00000036 L_35:
00000036 1C13 MOV R3,R2 ; i
00000038 061B LSL R3,R3,#0x18 ; i
0000003A 0E1B LSR R3,R3,#0x18
0000003C 2B10 CMP R3,#0x10
0000003E DBE2 BLT L_36 ; T=0x00000006
00000040 ; SCOPE-END
132: }
00000040 BC30 POP {R4-R5}
00000042 4770 BX R14
00000044 ENDP ; 'PreDispOutdoorCallUp?T'
*** CODE SEGMENT '?PR?PreDispOutdoorCallDown?T?ST7920':
140: void PreDispOutdoorCallDown(uint8 *data,uint8 *p)
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'p' assigned to Register 'R1' ----
00000002 ---- Variable 'data' assigned to Register 'R0' ----
141: {
00000002 ; SCOPE-START
143: for(i=0; i<16; i++)
00000002 2200 MOV R2,#0x0
00000004 ---- Variable 'i' assigned to Register 'R2' ----
00000004 E017 B L_42 ; T=0x00000036
00000006 L_43:
145: if((0x10&(*(data+i)))!=0)
00000006 1C13 MOV R3,R2 ; i
00000008 061C LSL R4,R3,#0x18 ; i
0000000A 0E24 LSR R4,R4,#0x18
0000000C 1C03 MOV R3,R0 ; data
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 11
0000000E 5D1B LDRB R3,[R3,R4]
00000010 2410 MOV R4,#0x10
00000012 4223 TST R3,R4
00000014 D006 BEQ L_45 ; T=0x00000024
146: *(p+i)=0x08;
00000016 2308 MOV R3,#0x8
00000018 1C14 MOV R4,R2 ; i
0000001A 0625 LSL R5,R4,#0x18 ; i
0000001C 0E2D LSR R5,R5,#0x18
0000001E 1C0C MOV R4,R1 ; p
00000020 5563 STRB R3,[R4,R5]
00000022 E005 B L_40 ; T=0x00000030
00000024 L_45:
148: *(p+i)=0x2d;
00000024 232D MOV R3,#0x2D
00000026 1C14 MOV R4,R2 ; i
00000028 0625 LSL R5,R4,#0x18 ; i
0000002A 0E2D LSR R5,R5,#0x18
0000002C 1C0C MOV R4,R1 ; p
0000002E 5563 STRB R3,[R4,R5]
149: }
00000030 L_40:
00000030 3201 ADD R2,#0x1
00000032 0612 LSL R2,R2,#0x18
00000034 0E12 LSR R2,R2,#0x18
00000036 L_42:
00000036 1C13 MOV R3,R2 ; i
00000038 061B LSL R3,R3,#0x18 ; i
0000003A 0E1B LSR R3,R3,#0x18
0000003C 2B10 CMP R3,#0x10
0000003E DBE2 BLT L_43 ; T=0x00000006
00000040 ; SCOPE-END
150: }
00000040 BC30 POP {R4-R5}
00000042 4770 BX R14
00000044 ENDP ; 'PreDispOutdoorCallDown?T'
*** CODE SEGMENT '?PR?lcdclr?T?ST7920':
151: void lcdclr(void)
00000000 B530 PUSH {R4-R5,LR}
152: { uint8 lcdlow,lcdlie;
00000002 ; SCOPE-START
154: for(lcdlow=0;lcdlow<4;lcdlow++)
00000002 2400 MOV R4,#0x0
00000004 ---- Variable 'lcdlow' assigned to Register 'R4' ----
00000004 E019 B L_49 ; T=0x0000003A
155: for(lcdlie=0;lcdlie<8;lcdlie++)
00000006 L_56:
00000006 2500 MOV R5,#0x0
00000008 ---- Variable 'lcdlie' assigned to Register 'R5' ----
00000008 E00F B L_54 ; T=0x0000002A
0000000A L_55:
156: Display(RowNum[lcdlow]+lcdlie,0xA1,0xA0); //0xA1A0为空格
0000000A 1C20 MOV R0,R4 ; lcdlow
0000000C 0601 LSL R1,R0,#0x18 ; lcdlow
0000000E 0E09 LSR R1,R1,#0x18
00000010 4800 LDR R0,=RowNum ; RowNum
00000012 5C40 LDRB R0,[R0,R1]
00000014 1C29 MOV R1,R5 ; lcdlie
00000016 0609 LSL R1,R1,#0x18 ; lcdlie
00000018 0E09 LSR R1,R1,#0x18
0000001A 1840 ADD R0,R1
0000001C 21A1 MOV R1,#0xA1
0000001E 22A0 MOV R2,#0xA0
00000020 F7FF BL Display?T ; T=0x0001 (1)
00000022 FFEE BL Display?T ; T=0x0001 (2)
00000024 3501 ADD R5,#0x1
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 12
00000026 062D LSL R5,R5,#0x18
00000028 0E2D LSR R5,R5,#0x18
0000002A L_54:
0000002A 1C28 MOV R0,R5 ; lcdlie
0000002C 0600 LSL R0,R0,#0x18 ; lcdlie
0000002E 0E00 LSR R0,R0,#0x18
00000030 2808 CMP R0,#0x8
00000032 DBEA BLT L_55 ; T=0x0000000A
00000034 3401 ADD R4,#0x1
00000036 0624 LSL R4,R4,#0x18
00000038 0E24 LSR R4,R4,#0x18
0000003A L_49:
0000003A 1C20 MOV R0,R4 ; lcdlow
0000003C 0600 LSL R0,R0,#0x18 ; lcdlow
0000003E 0E00 LSR R0,R0,#0x18
00000040 2804 CMP R0,#0x4
00000042 DBE0 BLT L_56 ; T=0x00000006
00000044 ; SCOPE-END
158: }
00000044 BC30 POP {R4-R5}
00000046 BC08 POP {R3}
00000048 4718 BX R3
0000004A ENDP ; 'lcdclr?T'
*** CODE SEGMENT '?PR?InitLcm?T?ST7920':
160: void InitLcm(void) //初始化 LCM
00000000 B500 PUSH {LR}
162: IO1DIR|=(ST7920_Cs|ST7920_Clk|ST7920_Sda|ST7920_Rst);
00000002 4800 LDR R2,=0xF0000
00000004 4800 LDR R0,=0xE0028018
00000006 6801 LDR R1,[R0,#0x0]
00000008 4311 ORR R1,R2
0000000A 6001 STR R1,[R0,#0x0]
163: IO1SET=ST7920_Cs; // 高电平使能
0000000C 4800 LDR R1,=0x10000
0000000E 4800 LDR R0,=0xE0028014
00000010 6001 STR R1,[R0,#0x0]
164: IO1CLR=ST7920_Rst;
00000012 4800 LDR R1,=0x80000
00000014 4800 LDR R0,=0xE002801C
00000016 6001 STR R1,[R0,#0x0]
165: Delay(0xff);
00000018 20FF MOV R0,#0xFF
0000001A F7FF BL Delay?T ; T=0x0001 (1)
0000001C FFF1 BL Delay?T ; T=0x0001 (2)
166: IO1SET=ST7920_Rst;
0000001E 4800 LDR R1,=0x80000
00000020 4800 LDR R0,=0xE0028014
00000022 6001 STR R1,[R0,#0x0]
167: Delay(0xff);
00000024 20FF MOV R0,#0xFF
00000026 F7FF BL Delay?T ; T=0x0001 (1)
00000028 FFEB BL Delay?T ; T=0x0001 (2)
168: SendCmd(0x30); //功能设置:一次送 8 位数据,基本指令集
0000002A 2030 MOV R0,#0x30
0000002C F7FF BL SendCmd?T ; T=0x0001 (1)
0000002E FFE8 BL SendCmd?T ; T=0x0001 (2)
169: SendCmd(0x04); //点设定 :显示字符/ 光标从左到右移位,DDRAM 地址加一
00000030 2004 MOV R0,#0x4
00000032 F7FF BL SendCmd?T ; T=0x0001 (1)
00000034 FFE5 BL SendCmd?T ; T=0x0001 (2)
170: SendCmd(0x0f); //显示设定:开显示 ,显示光标,当前显示位反白闪动
00000036 200F MOV R0,#0xF
00000038 F7FF BL SendCmd?T ; T=0x0001 (1)
0000003A FFE2 BL SendCmd?T ; T=0x0001 (2)
171: SendCmd(0x01); //清DDRAM
0000003C 2001 MOV R0,#0x1
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 13
0000003E F7FF BL SendCmd?T ; T=0x0001 (1)
00000040 FFDF BL SendCmd?T ; T=0x0001 (2)
172: SendCmd(0x02); //*DDRAM 地址归位
00000042 2002 MOV R0,#0x2
00000044 F7FF BL SendCmd?T ; T=0x0001 (1)
00000046 FFDC BL SendCmd?T ; T=0x0001 (2)
173: SendCmd(DDRAM_0); //DDRAM
00000048 2080 MOV R0,#0x80
0000004A F7FF BL SendCmd?T ; T=0x0001 (1)
0000004C FFD9 BL SendCmd?T ; T=0x0001 (2)
174: SendCmd(off_cursor); //关光标
0000004E 200C MOV R0,#0xC
00000050 F7FF BL SendCmd?T ; T=0x0001 (1)
00000052 FFD6 BL SendCmd?T ; T=0x0001 (2)
175: }
00000054 BC08 POP {R3}
00000056 4718 BX R3
00000058 ENDP ; 'InitLcm?T'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = 4
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -