📄 test.lst
字号:
0000002E 2106 MOV R1,#0x6
00000030 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000032 FFE6 BL LCD_write_char?T ; T=0x0001 (2)
44: delay_nms(40);
00000034 2028 MOV R0,#0x28
00000036 F7FF BL delay_nms?T ; T=0x0001 (1)
00000038 FFE3 BL delay_nms?T ; T=0x0001 (2)
47: LCD_write_char(1,0x01); //清屏
0000003A 2101 MOV R1,#0x1
0000003C 1C08 MOV R0,R1
0000003E F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000040 FFDF BL LCD_write_char?T ; T=0x0001 (2)
48: delay_nms(40);
00000042 2028 MOV R0,#0x28
00000044 F7FF BL delay_nms?T ; T=0x0001 (1)
00000046 FFDC BL delay_nms?T ; T=0x0001 (2)
51: LCD_write_char(1,0x0f); //显示开,光标开,闪烁开
00000048 2001 MOV R0,#0x1
0000004A 210F MOV R1,#0xF
0000004C F7FF BL LCD_write_char?T ; T=0x0001 (1)
ARM COMPILER V2.42, test 20/12/05 15:29:58 PAGE 7
0000004E FFD8 BL LCD_write_char?T ; T=0x0001 (2)
52: delay_nms(40);
00000050 2028 MOV R0,#0x28
00000052 F7FF BL delay_nms?T ; T=0x0001 (1)
00000054 FFD5 BL delay_nms?T ; T=0x0001 (2)
00000056 ; SCOPE-END
54: }
00000056 BC10 POP {R4}
00000058 BC08 POP {R3}
0000005A 4718 BX R3
0000005C ENDP ; 'LCD_init?T'
*** CODE SEGMENT '?PR?LCD_write_char?T?test':
56: void LCD_write_char(uchar command,uchar data) // 写数据
00000000 B570 PUSH {R4-R6,LR}
00000002 1C0D MOV R5,R1 ; data
00000004 ---- Variable 'data' assigned to Register 'R5' ----
00000004 1C06 MOV R6,R0 ; command
00000006 ---- Variable 'command' assigned to Register 'R6' ----
57: {
00000006 ; SCOPE-START
58: uchar i=0,temp=0;
00000006 2400 MOV R4,#0x0
00000008 ---- Variable 'i' assigned to Register 'R4' ----
59: delay_nus(50);
00000008 2032 MOV R0,#0x32
0000000A F7FF BL delay_nus?T ; T=0x0001 (1)
0000000C FFF9 BL delay_nus?T ; T=0x0001 (2)
61: if(command==0) io_set(LCD_RS); //RS=1
0000000E 1C30 MOV R0,R6 ; command
00000010 0600 LSL R0,R0,#0x18 ; command
00000012 0E00 LSR R0,R0,#0x18
00000014 2800 CMP R0,#0x0
00000016 D103 BNE L_21 ; T=0x00000020
00000018 2008 MOV R0,#0x8
0000001A F7FF BL io_set?T ; T=0x0001 (1)
0000001C FFF1 BL io_set?T ; T=0x0001 (2)
0000001E E002 B L_27 ; T=0x00000026
00000020 L_21:
62: else io_clear(LCD_RS);
00000020 2008 MOV R0,#0x8
00000022 F7FF BL io_clear?T ; T=0x0001 (1)
00000024 FFED BL io_clear?T ; T=0x0001 (2)
64: for(i=0;i<8;i++)
00000026 L_27:
00000026 2400 MOV R4,#0x0
00000028 E01B B L_25 ; T=0x00000062
0000002A L_26:
67: if(data&1) {io_set(i+24);} //把相应的IO口置位或者清零
0000002A 1C28 MOV R0,R5 ; data
0000002C 0600 LSL R0,R0,#0x18 ; data
0000002E 0E00 LSR R0,R0,#0x18
00000030 2101 MOV R1,#0x1
00000032 4208 TST R0,R1
00000034 D006 BEQ L_28 ; T=0x00000044
00000036 1C20 MOV R0,R4 ; i
00000038 0600 LSL R0,R0,#0x18 ; i
0000003A 0E00 LSR R0,R0,#0x18
0000003C 3018 ADD R0,#0x18
0000003E F7FF BL io_set?T ; T=0x0001 (1)
00000040 FFDF BL io_set?T ; T=0x0001 (2)
00000042 E005 B L_29 ; T=0x00000050
00000044 L_28:
68: else {io_clear(i+24);}
00000044 1C20 MOV R0,R4 ; i
00000046 0600 LSL R0,R0,#0x18 ; i
00000048 0E00 LSR R0,R0,#0x18
ARM COMPILER V2.42, test 20/12/05 15:29:58 PAGE 8
0000004A 3018 ADD R0,#0x18
0000004C F7FF BL io_clear?T ; T=0x0001 (1)
0000004E FFD8 BL io_clear?T ; T=0x0001 (2)
00000050 L_29:
69: data=data>>1;
00000050 1C28 MOV R0,R5 ; data
00000052 0605 LSL R5,R0,#0x18 ; data
00000054 0E2D LSR R5,R5,#0x18
00000056 086D LSR R5,R5,#0x1
00000058 062D LSL R5,R5,#0x18
0000005A 0E2D LSR R5,R5,#0x18
70: } //写入8位控制字
0000005C 3401 ADD R4,#0x1
0000005E 0624 LSL R4,R4,#0x18
00000060 0E24 LSR R4,R4,#0x18
00000062 L_25:
00000062 1C20 MOV R0,R4 ; i
00000064 0600 LSL R0,R0,#0x18 ; i
00000066 0E00 LSR R0,R0,#0x18
00000068 2808 CMP R0,#0x8
0000006A DBDE BLT L_26 ; T=0x0000002A
72: delay_nus(20);
0000006C 2014 MOV R0,#0x14
0000006E F7FF BL delay_nus?T ; T=0x0001 (1)
00000070 FFC7 BL delay_nus?T ; T=0x0001 (2)
74: io_clear(LCD_EN);
00000072 200A MOV R0,#0xA
00000074 F7FF BL io_clear?T ; T=0x0001 (1)
00000076 FFC4 BL io_clear?T ; T=0x0001 (2)
75: delay_nus(200);
00000078 20C8 MOV R0,#0xC8
0000007A F7FF BL delay_nus?T ; T=0x0001 (1)
0000007C FFC1 BL delay_nus?T ; T=0x0001 (2)
76: io_set(LCD_EN);
0000007E 200A MOV R0,#0xA
00000080 F7FF BL io_set?T ; T=0x0001 (1)
00000082 FFBE BL io_set?T ; T=0x0001 (2)
77: delay_nus(200);
00000084 20C8 MOV R0,#0xC8
00000086 F7FF BL delay_nus?T ; T=0x0001 (1)
00000088 FFBB BL delay_nus?T ; T=0x0001 (2)
0000008A ; SCOPE-END
79: }
0000008A BC70 POP {R4-R6}
0000008C BC08 POP {R3}
0000008E 4718 BX R3
00000090 ENDP ; 'LCD_write_char?T'
*** CODE SEGMENT '?PR?LCD_set_xy?T?test':
81: void LCD_set_xy( unsigned char x, unsigned char y ) //写地址函数
00000000 B510 PUSH {R4,LR}
00000002 ---- Variable 'y' assigned to Register 'R1' ----
00000002 1C02 MOV R2,R0 ; x
00000004 ---- Variable 'x' assigned to Register 'R2' ----
00000004 ---- Variable 'address' assigned to Register 'R4' ----
82: {
00000004 ; SCOPE-START
84: if (y == 0) address = 0x80 + x;
00000004 1C08 MOV R0,R1 ; y
00000006 0600 LSL R0,R0,#0x18 ; y
00000008 0E00 LSR R0,R0,#0x18
0000000A 2800 CMP R0,#0x0
0000000C D106 BNE L_30 ; T=0x0000001C
0000000E 1C10 MOV R0,R2 ; x
00000010 0604 LSL R4,R0,#0x18 ; x
00000012 0E24 LSR R4,R4,#0x18
00000014 3480 ADD R4,#0x80
ARM COMPILER V2.42, test 20/12/05 15:29:58 PAGE 9
00000016 0624 LSL R4,R4,#0x18
00000018 0E24 LSR R4,R4,#0x18
0000001A E005 B L_31 ; T=0x00000028
0000001C L_30:
86: address = 0xc0 + x;
0000001C 1C10 MOV R0,R2 ; x
0000001E 0604 LSL R4,R0,#0x18 ; x
00000020 0E24 LSR R4,R4,#0x18
00000022 34C0 ADD R4,#0xC0
00000024 0624 LSL R4,R4,#0x18
00000026 0E24 LSR R4,R4,#0x18
00000028 L_31:
87: LCD_write_char(1,address);
00000028 1C20 MOV R0,R4 ; address
0000002A 0601 LSL R1,R0,#0x18 ; address
0000002C 0E09 LSR R1,R1,#0x18
0000002E 2001 MOV R0,#0x1
00000030 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000032 FFE6 BL LCD_write_char?T ; T=0x0001 (2)
00000034 ; SCOPE-END
88: }
00000034 BC10 POP {R4}
00000036 BC08 POP {R3}
00000038 4718 BX R3
0000003A ENDP ; 'LCD_set_xy?T'
*** CODE SEGMENT '?PR?main?test':
92: void main(void)
00000000 B500 PUSH {LR}
93: {
00000002 ; SCOPE-START
95: PMC_PCER=0x0F; //PMC外设时钟使能
00000002 210F MOV R1,#0xF
00000004 4800 LDR R0,=0xFFFFFC10
00000006 6001 STR R1,[R0,#0x0]
96: PIO_PER=0xffffffff; //PIOA0-31作为I/O使用
00000008 4800 LDR R1,=0xFFFFFFFF
0000000A 4800 LDR R0,=0xFFFFF400
0000000C 6001 STR R1,[R0,#0x0]
97: PIO_OER=0xffffffff; //I/O输出使能
0000000E 4800 LDR R0,=0xFFFFF410
00000010 6001 STR R1,[R0,#0x0]
98: delay_nus(10);
00000012 200A MOV R0,#0xA
00000014 F7FF BL delay_nus?T ; T=0x0001 (1)
00000016 FFF4 BL delay_nus?T ; T=0x0001 (2)
99: LCD_init(); //1602初始化
00000018 F7FF BL LCD_init?T ; T=0x0001 (1)
0000001A FFF2 BL LCD_init?T ; T=0x0001 (2)
101: while(1)
0000001C L_34:
103: LCD_set_xy(0,0);
0000001C 2100 MOV R1,#0x0
0000001E 1C08 MOV R0,R1
00000020 F7FF BL LCD_set_xy?T ; T=0x0001 (1)
00000022 FFEE BL LCD_set_xy?T ; T=0x0001 (2)
104: LCD_write_char(0,'m');
00000024 2000 MOV R0,#0x0
00000026 216D MOV R1,#0x6D
00000028 F7FF BL LCD_write_char?T ; T=0x0001 (1)
0000002A FFEA BL LCD_write_char?T ; T=0x0001 (2)
105: LCD_write_char(0,'y');
0000002C 2000 MOV R0,#0x0
0000002E 2179 MOV R1,#0x79
00000030 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000032 FFE6 BL LCD_write_char?T ; T=0x0001 (2)
106: LCD_write_char(0,'h');
ARM COMPILER V2.42, test 20/12/05 15:29:58 PAGE 10
00000034 2000 MOV R0,#0x0
00000036 2168 MOV R1,#0x68
00000038 F7FF BL LCD_write_char?T ; T=0x0001 (1)
0000003A FFE2 BL LCD_write_char?T ; T=0x0001 (2)
107: LCD_write_char(0,'k');
0000003C 2000 MOV R0,#0x0
0000003E 216B MOV R1,#0x6B
00000040 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000042 FFDE BL LCD_write_char?T ; T=0x0001 (2)
108: LCD_write_char(0,'0');
00000044 2000 MOV R0,#0x0
00000046 2130 MOV R1,#0x30
00000048 F7FF BL LCD_write_char?T ; T=0x0001 (1)
0000004A FFDA BL LCD_write_char?T ; T=0x0001 (2)
109: LCD_write_char(0,'0');
0000004C 2000 MOV R0,#0x0
0000004E 2130 MOV R1,#0x30
00000050 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000052 FFD6 BL LCD_write_char?T ; T=0x0001 (2)
110: LCD_write_char(0,'7');
00000054 2000 MOV R0,#0x0
00000056 2137 MOV R1,#0x37
00000058 F7FF BL LCD_write_char?T ; T=0x0001 (1)
0000005A FFD2 BL LCD_write_char?T ; T=0x0001 (2)
113: delay_nms(1000);
0000005C 48FA LDR R0,=0x3E8
0000005E F7FF BL delay_nms?T ; T=0x0001 (1)
00000060 FFCF BL delay_nms?T ; T=0x0001 (2)
114: LCD_set_xy(4,1);
00000062 2004 MOV R0,#0x4
00000064 2101 MOV R1,#0x1
00000066 F7FF BL LCD_set_xy?T ; T=0x0001 (1)
00000068 FFCB BL LCD_set_xy?T ; T=0x0001 (2)
115: LCD_write_char(0,'m');
0000006A 2000 MOV R0,#0x0
0000006C 216D MOV R1,#0x6D
0000006E F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000070 FFC7 BL LCD_write_char?T ; T=0x0001 (2)
116: LCD_write_char(0,'c');
00000072 2000 MOV R0,#0x0
00000074 2163 MOV R1,#0x63
00000076 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000078 FFC3 BL LCD_write_char?T ; T=0x0001 (2)
117: LCD_write_char(0,'u');
0000007A 2000 MOV R0,#0x0
0000007C 2175 MOV R1,#0x75
0000007E F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000080 FFBF BL LCD_write_char?T ; T=0x0001 (2)
118: LCD_write_char(0,'z');
00000082 2000 MOV R0,#0x0
00000084 217A MOV R1,#0x7A
00000086 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000088 FFBB BL LCD_write_char?T ; T=0x0001 (2)
119: LCD_write_char(0,'o');
0000008A 2000 MOV R0,#0x0
0000008C 216F MOV R1,#0x6F
0000008E F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000090 FFB7 BL LCD_write_char?T ; T=0x0001 (2)
120: LCD_write_char(0,'n');
00000092 2000 MOV R0,#0x0
00000094 216E MOV R1,#0x6E
00000096 F7FF BL LCD_write_char?T ; T=0x0001 (1)
00000098 FFB3 BL LCD_write_char?T ; T=0x0001 (2)
121: LCD_write_char(0,'e');
0000009A 2000 MOV R0,#0x0
0000009C 2165 MOV R1,#0x65
ARM COMPILER V2.42, test 20/12/05 15:29:58 PAGE 11
0000009E F7FF BL LCD_write_char?T ; T=0x0001 (1)
000000A0 FFAF BL LCD_write_char?T ; T=0x0001 (2)
122: LCD_write_char(0,'.');
000000A2 2000 MOV R0,#0x0
000000A4 212E MOV R1,#0x2E
000000A6 F7FF BL LCD_write_char?T ; T=0x0001 (1)
000000A8 FFAB BL LCD_write_char?T ; T=0x0001 (2)
123: LCD_write_char(0,'c');
000000AA 2000 MOV R0,#0x0
000000AC 2163 MOV R1,#0x63
000000AE F7FF BL LCD_write_char?T ; T=0x0001 (1)
000000B0 FFA7 BL LCD_write_char?T ; T=0x0001 (2)
124: LCD_write_char(0,'o');
000000B2 2000 MOV R0,#0x0
000000B4 216F MOV R1,#0x6F
000000B6 F7FF BL LCD_write_char?T ; T=0x0001 (1)
000000B8 FFA3 BL LCD_write_char?T ; T=0x0001 (2)
125: LCD_write_char(0,'m');
000000BA 2000 MOV R0,#0x0
000000BC 216D MOV R1,#0x6D
000000BE F7FF BL LCD_write_char?T ; T=0x0001 (1)
000000C0 FF9F BL LCD_write_char?T ; T=0x0001 (2)
127: delay_nms(1000);
000000C2 48FA LDR R0,=0x3E8
000000C4 F7FF BL delay_nms?T ; T=0x0001 (1)
000000C6 FF9C BL delay_nms?T ; T=0x0001 (2)
128: }
000000C8 E7A8 B L_34 ; T=0x0000001C
000000CA ; SCOPE-END
000000CA BC08 POP {R3}
000000CC 4718 BX R3
000000CE ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -