📄 st7920.lst
字号:
00000026 2005 MOV R0,#0x5
00000028 F7FF BL Delay?T ; T=0x0001 (1)
0000002A FFEA BL Delay?T ; T=0x0001 (2)
24: IO1SET=ST7920_Clk; //SCK=1;
0000002C 4800 LDR R1,=0x40000
0000002E 4800 LDR R0,=0xE0028014
00000030 6001 STR R1,[R0,#0x0]
25: dat = (dat<<1);
00000032 1C18 MOV R0,R3 ; dat
00000034 0603 LSL R3,R0,#0x18 ; dat
00000036 0E1B LSR R3,R3,#0x18
00000038 005B LSL R3,R3,#0x1
26: }
0000003A 3201 ADD R2,#0x1
0000003C 1C10 MOV R0,R2 ; i
0000003E 2808 CMP R0,#0x8 ; i
00000040 DBE1 BLT L_9 ; T=0x00000006
00000042 ; SCOPE-END
27: }
00000042 BC08 POP {R3}
00000044 4718 BX R3
00000046 ENDP ; 'SendByte?T'
*** CODE SEGMENT '?PR?SendCmd?T?ST7920':
30: void SendCmd(uint8 dat)
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; dat
00000004 ---- Variable 'dat' assigned to Register 'R4' ----
32: SendByte(0xf8);
00000004 20F8 MOV R0,#0xF8
00000006 F7FF BL SendByte?T ; T=0x0001 (1)
00000008 FFFB BL SendByte?T ; T=0x0001 (2)
33: SendByte(dat & 0xf0);
0000000A 1C20 MOV R0,R4 ; dat
0000000C 0600 LSL R0,R0,#0x18 ; dat
0000000E 0E00 LSR R0,R0,#0x18
00000010 21F0 MOV R1,#0xF0
00000012 4008 AND R0,R1
00000014 F7FF BL SendByte?T ; T=0x0001 (1)
00000016 FFF4 BL SendByte?T ; T=0x0001 (2)
34: SendByte((dat<<4)&0xf0);
00000018 1C20 MOV R0,R4 ; dat
0000001A 0600 LSL R0,R0,#0x18 ; dat
0000001C 0E00 LSR R0,R0,#0x18
0000001E 0100 LSL R0,R0,#0x4
00000020 21F0 MOV R1,#0xF0
00000022 4008 AND R0,R1
00000024 F7FF BL SendByte?T ; T=0x0001 (1)
00000026 FFEC BL SendByte?T ; T=0x0001 (2)
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 6
35: }
00000028 BC10 POP {R4}
0000002A BC08 POP {R3}
0000002C 4718 BX R3
0000002E ENDP ; 'SendCmd?T'
*** CODE SEGMENT '?PR?SendDat?T?ST7920':
38: void SendDat(uint8 dat)
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; dat
00000004 ---- Variable 'dat' assigned to Register 'R4' ----
40: SendByte(0xfa);
00000004 20FA MOV R0,#0xFA
00000006 F7FF BL SendByte?T ; T=0x0001 (1)
00000008 FFFB BL SendByte?T ; T=0x0001 (2)
41: SendByte(dat & 0xf0);
0000000A 1C20 MOV R0,R4 ; dat
0000000C 0600 LSL R0,R0,#0x18 ; dat
0000000E 0E00 LSR R0,R0,#0x18
00000010 21F0 MOV R1,#0xF0
00000012 4008 AND R0,R1
00000014 F7FF BL SendByte?T ; T=0x0001 (1)
00000016 FFF4 BL SendByte?T ; T=0x0001 (2)
42: SendByte((dat<<4)&0xf0);
00000018 1C20 MOV R0,R4 ; dat
0000001A 0600 LSL R0,R0,#0x18 ; dat
0000001C 0E00 LSR R0,R0,#0x18
0000001E 0100 LSL R0,R0,#0x4
00000020 21F0 MOV R1,#0xF0
00000022 4008 AND R0,R1
00000024 F7FF BL SendByte?T ; T=0x0001 (1)
00000026 FFEC BL SendByte?T ; T=0x0001 (2)
43: }
00000028 BC10 POP {R4}
0000002A BC08 POP {R3}
0000002C 4718 BX R3
0000002E ENDP ; 'SendDat?T'
*** CODE SEGMENT '?PR?DispChar?T?ST7920':
48: void DispChar(uint8 x_addr, uint8 data)
00000000 B510 PUSH {R4,LR}
00000002 1C0C MOV R4,R1 ; data
00000004 ---- Variable 'data' assigned to Register 'R4' ----
00000004 1C01 MOV R1,R0 ; x_addr
00000006 ---- Variable 'x_addr' assigned to Register 'R1' ----
50: SendCmd(x_addr);
00000006 1C08 MOV R0,R1 ; x_addr
00000008 0600 LSL R0,R0,#0x18 ; x_addr
0000000A 0E00 LSR R0,R0,#0x18
0000000C F7FF BL SendCmd?T ; T=0x0001 (1)
0000000E FFF8 BL SendCmd?T ; T=0x0001 (2)
51: SendDat(data);
00000010 1C20 MOV R0,R4 ; data
00000012 0600 LSL R0,R0,#0x18 ; data
00000014 0E00 LSR R0,R0,#0x18
00000016 F7FF BL SendDat?T ; T=0x0001 (1)
00000018 FFF3 BL SendDat?T ; T=0x0001 (2)
53: }
0000001A BC10 POP {R4}
0000001C BC08 POP {R3}
0000001E 4718 BX R3
00000020 ENDP ; 'DispChar?T'
*** CODE SEGMENT '?PR?DispChars?T?ST7920':
60: void DispChars(uint8 Addr,uint8 *p,uint8 Num)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C16 MOV R6,R2 ; Num
00000004 ---- Variable 'Num' assigned to Register 'R6' ----
00000004 1C0D MOV R5,R1 ; p
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 7
00000006 ---- Variable 'p' assigned to Register 'R5' ----
00000006 1C01 MOV R1,R0 ; Addr
00000008 ---- Variable 'Addr' assigned to Register 'R1' ----
61: {
00000008 ; SCOPE-START
63: SendCmd(Addr);
00000008 1C08 MOV R0,R1 ; Addr
0000000A 0600 LSL R0,R0,#0x18 ; Addr
0000000C 0E00 LSR R0,R0,#0x18
0000000E F7FF BL SendCmd?T ; T=0x0001 (1)
00000010 FFF7 BL SendCmd?T ; T=0x0001 (2)
64: for(i=0;i<Num;i++)
00000012 2400 MOV R4,#0x0
00000014 ---- Variable 'i' assigned to Register 'R4' ----
00000014 E009 B L_15 ; T=0x0000002A
00000016 L_16:
65: SendDat(*(p+i));
00000016 1C20 MOV R0,R4 ; i
00000018 0602 LSL R2,R0,#0x18 ; i
0000001A 0E12 LSR R2,R2,#0x18
0000001C 1C28 MOV R0,R5 ; p
0000001E 5C80 LDRB R0,[R0,R2]
00000020 F7FF BL SendDat?T ; T=0x0001 (1)
00000022 FFEE BL SendDat?T ; T=0x0001 (2)
00000024 3401 ADD R4,#0x1
00000026 0624 LSL R4,R4,#0x18
00000028 0E24 LSR R4,R4,#0x18
0000002A L_15:
0000002A 1C30 MOV R0,R6 ; Num
0000002C 0601 LSL R1,R0,#0x18 ; Num
0000002E 0E09 LSR R1,R1,#0x18
00000030 1C20 MOV R0,R4 ; i
00000032 0600 LSL R0,R0,#0x18 ; i
00000034 0E00 LSR R0,R0,#0x18
00000036 4288 CMP R0,R1
00000038 D3ED BCC L_16 ; T=0x00000016
0000003A ; SCOPE-END
66: }
0000003A BC70 POP {R4-R6}
0000003C BC08 POP {R3}
0000003E 4718 BX R3
00000040 ENDP ; 'DispChars?T'
*** CODE SEGMENT '?PR?Disp?T?ST7920':
68: void Disp(uint8 x_addr, uint8 *p)
00000000 B570 PUSH {R4-R6,LR}
00000002 1C0E MOV R6,R1 ; p
00000004 ---- Variable 'p' assigned to Register 'R6' ----
00000004 1C01 MOV R1,R0 ; x_addr
00000006 ---- Variable 'x_addr' assigned to Register 'R1' ----
69: {
00000006 ; SCOPE-START
71: uint8 i,flag=0;
00000006 2500 MOV R5,#0x0
00000008 ---- Variable 'flag' assigned to Register 'R5' ----
72: SendCmd(x_addr);
00000008 1C08 MOV R0,R1 ; x_addr
0000000A 0600 LSL R0,R0,#0x18 ; x_addr
0000000C 0E00 LSR R0,R0,#0x18
0000000E F7FF BL SendCmd?T ; T=0x0001 (1)
00000010 FFF7 BL SendCmd?T ; T=0x0001 (2)
73: for(i=0;i<14;i++)
00000012 2400 MOV R4,#0x0
00000014 ---- Variable 'i' assigned to Register 'R4' ----
00000014 E016 B L_20 ; T=0x00000044
00000016 L_21:
75: if(*(p+i)=='\0')
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 8
00000016 1C20 MOV R0,R4 ; i
00000018 0602 LSL R2,R0,#0x18 ; i
0000001A 0E12 LSR R2,R2,#0x18
0000001C 1C30 MOV R0,R6 ; p
0000001E 5C80 LDRB R0,[R0,R2]
00000020 1C01 MOV R1,R0
00000022 2900 CMP R1,#0x0
00000024 D100 BNE L_23 ; T=0x00000028
76: flag=1;
00000026 2501 MOV R5,#0x1
00000028 L_23:
77: if(flag==0)
00000028 1C29 MOV R1,R5 ; flag
0000002A 0609 LSL R1,R1,#0x18 ; flag
0000002C 0E09 LSR R1,R1,#0x18
0000002E 2900 CMP R1,#0x0
00000030 D102 BNE L_24 ; T=0x00000038
78: SendDat((uint8)*(p+i));
00000032 F7FF BL SendDat?T ; T=0x0001 (1)
00000034 FFE5 BL SendDat?T ; T=0x0001 (2)
00000036 E002 B L_18 ; T=0x0000003E
00000038 L_24:
80: SendDat(' ');
00000038 2020 MOV R0,#0x20
0000003A F7FF BL SendDat?T ; T=0x0001 (1)
0000003C FFE1 BL SendDat?T ; T=0x0001 (2)
81: }
0000003E L_18:
0000003E 3401 ADD R4,#0x1
00000040 0624 LSL R4,R4,#0x18
00000042 0E24 LSR R4,R4,#0x18
00000044 L_20:
00000044 1C20 MOV R0,R4 ; i
00000046 0600 LSL R0,R0,#0x18 ; i
00000048 0E00 LSR R0,R0,#0x18
0000004A 280E CMP R0,#0xE
0000004C DBE3 BLT L_21 ; T=0x00000016
0000004E ; SCOPE-END
84: }
0000004E BC70 POP {R4-R6}
00000050 BC08 POP {R3}
00000052 4718 BX R3
00000054 ENDP ; 'Disp?T'
*** CODE SEGMENT '?PR?Display?T?ST7920':
90: void Display(uint8 x_add,uint8 high,uint8 low)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C14 MOV R4,R2 ; low
00000004 ---- Variable 'low' assigned to Register 'R4' ----
00000004 1C0D MOV R5,R1 ; high
00000006 ---- Variable 'high' assigned to Register 'R5' ----
00000006 1C01 MOV R1,R0 ; x_add
00000008 ---- Variable 'x_add' assigned to Register 'R1' ----
92: SendCmd(x_add);
00000008 1C08 MOV R0,R1 ; x_add
0000000A 0600 LSL R0,R0,#0x18 ; x_add
0000000C 0E00 LSR R0,R0,#0x18
0000000E F7FF BL SendCmd?T ; T=0x0001 (1)
00000010 FFF7 BL SendCmd?T ; T=0x0001 (2)
93: SendDat(high);
00000012 1C28 MOV R0,R5 ; high
00000014 0600 LSL R0,R0,#0x18 ; high
00000016 0E00 LSR R0,R0,#0x18
00000018 F7FF BL SendDat?T ; T=0x0001 (1)
0000001A FFF2 BL SendDat?T ; T=0x0001 (2)
94: SendDat(low);
0000001C 1C20 MOV R0,R4 ; low
ARM COMPILER V2.40a, ST7920 19/07/07 01:23:00 PAGE 9
0000001E 0600 LSL R0,R0,#0x18 ; low
00000020 0E00 LSR R0,R0,#0x18
00000022 F7FF BL SendDat?T ; T=0x0001 (1)
00000024 FFED BL SendDat?T ; T=0x0001 (2)
95: }
00000026 BC30 POP {R4-R5}
00000028 BC08 POP {R3}
0000002A 4718 BX R3
0000002C ENDP ; 'Display?T'
*** CODE SEGMENT '?PR?PreDispIndoorCall?T?ST7920':
104: void PreDispIndoorCall(uint8 *data,uint8 *p)
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'p' assigned to Register 'R1' ----
00000002 ---- Variable 'data' assigned to Register 'R0' ----
105: {
00000002 ; SCOPE-START
107: for(i=0; i<16; i++)
00000002 2200 MOV R2,#0x0
00000004 ---- Variable 'i' assigned to Register 'R2' ----
00000004 E017 B L_28 ; T=0x00000036
00000006 L_29:
109: if((0x40&(*(data+i)))!=0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -