📄 lcd_demo.lst
字号:
0000000C 1C11 MOV R1,R2 ; io_data
0000000E 4800 LDR R0,=0xE0028004
00000010 6001 STR R1,[R0,#0x0]
00000012 ; SCOPE-END
62: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Set?T'
*** CODE SEGMENT '?PR?Io_Clr?T?Lcd_Demo':
65: void Io_Clr(uchar pin) //单个IO口清零函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
66: {
00000002 ; SCOPE-START
67: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
68: io_data=io_data<<pin;
00000004 1C08 MOV R0,R1 ; pin
00000006 0600 LSL R0,R0,#0x18 ; pin
00000008 0E00 LSR R0,R0,#0x18
0000000A 4082 LSL R2,R0
69: IOCLR0=io_data; //IOCLR0为IO线上清零寄存器,1有效,0无
0000000C 1C11 MOV R1,R2 ; io_data
0000000E 4800 LDR R0,=0xE002800C
00000010 6001 STR R1,[R0,#0x0]
00000012 ; SCOPE-END
70: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Clr?T'
*** CODE SEGMENT '?PR?Io_Set1?T?Lcd_Demo':
73: void Io_Set1(uchar pin) //单个IO口置位函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
74: {
00000002 ; SCOPE-START
75: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 16
76: io_data=io_data<<pin;
00000004 1C08 MOV R0,R1 ; pin
00000006 0600 LSL R0,R0,#0x18 ; pin
00000008 0E00 LSR R0,R0,#0x18
0000000A 4082 LSL R2,R0
77: IOSET1=io_data; //IOSET0为IO线上置位寄存器,1有效,0无
0000000C 1C11 MOV R1,R2 ; io_data
0000000E 4800 LDR R0,=0xE0028014
00000010 6001 STR R1,[R0,#0x0]
00000012 ; SCOPE-END
78: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Set1?T'
*** CODE SEGMENT '?PR?Io_Clr1?T?Lcd_Demo':
81: void Io_Clr1(uchar pin) //单个IO口清零函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
82: {
00000002 ; SCOPE-START
83: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
84: io_data=io_data<<pin;
00000004 1C08 MOV R0,R1 ; pin
00000006 0600 LSL R0,R0,#0x18 ; pin
00000008 0E00 LSR R0,R0,#0x18
0000000A 4082 LSL R2,R0
85: IOCLR1=io_data; //IOCLR0为IO线上清零寄存器,1有效,0无
0000000C 1C11 MOV R1,R2 ; io_data
0000000E 4800 LDR R0,=0xE002801C
00000010 6001 STR R1,[R0,#0x0]
00000012 ; SCOPE-END
86: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Clr1?T'
*** CODE SEGMENT '?PR?OUT_DATA?T?Lcd_Demo':
87: void OUT_DATA(unsigned char data)
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; data
00000004 ---- Variable 'data' assigned to Register 'R4' ----
88: {
00000004 ; SCOPE-START
90: for(i=0;i<8;i++)
00000004 2300 MOV R3,#0x0
00000006 ---- Variable 'i' assigned to Register 'R3' ----
00000006 E01B B L_3 ; T=0x00000040
00000008 L_4:
93: if(data&1) {Io_Set1(i+16);} //把相应的IO口置位或者清零
00000008 1C20 MOV R0,R4 ; data
0000000A 0600 LSL R0,R0,#0x18 ; data
0000000C 0E00 LSR R0,R0,#0x18
0000000E 2101 MOV R1,#0x1
00000010 4208 TST R0,R1
00000012 D006 BEQ L_6 ; T=0x00000022
00000014 1C18 MOV R0,R3 ; i
00000016 0600 LSL R0,R0,#0x18 ; i
00000018 0E00 LSR R0,R0,#0x18
0000001A 3010 ADD R0,#0x10
0000001C F7FF BL Io_Set1?T ; T=0x0001 (1)
0000001E FFF0 BL Io_Set1?T ; T=0x0001 (2)
00000020 E005 B L_7 ; T=0x0000002E
00000022 L_6:
94: else {Io_Clr1(i+16);}
00000022 1C18 MOV R0,R3 ; i
00000024 0600 LSL R0,R0,#0x18 ; i
00000026 0E00 LSR R0,R0,#0x18
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 17
00000028 3010 ADD R0,#0x10
0000002A F7FF BL Io_Clr1?T ; T=0x0001 (1)
0000002C FFE9 BL Io_Clr1?T ; T=0x0001 (2)
0000002E L_7:
95: data=data>>1;
0000002E 1C20 MOV R0,R4 ; data
00000030 0604 LSL R4,R0,#0x18 ; data
00000032 0E24 LSR R4,R4,#0x18
00000034 0864 LSR R4,R4,#0x1
00000036 0624 LSL R4,R4,#0x18
00000038 0E24 LSR R4,R4,#0x18
96: }
0000003A 3301 ADD R3,#0x1
0000003C 061B LSL R3,R3,#0x18
0000003E 0E1B LSR R3,R3,#0x18
00000040 L_3:
00000040 1C18 MOV R0,R3 ; i
00000042 0600 LSL R0,R0,#0x18 ; i
00000044 0E00 LSR R0,R0,#0x18
00000046 2808 CMP R0,#0x8
00000048 DBDE BLT L_4 ; T=0x00000008
0000004A ; SCOPE-END
97: }
0000004A BC10 POP {R4}
0000004C BC08 POP {R3}
0000004E 4718 BX R3
00000050 ENDP ; 'OUT_DATA?T'
*** CODE SEGMENT '?PR?delay?T?Lcd_Demo':
102: void delay(unsigned int i)
00000000 ---- Variable 'i' assigned to Register 'R0' ----
103: {
00000000 ; SCOPE-START
104: unsigned int k=1000;
00000000 49FA LDR R1,=0x3E8
00000002 ---- Variable 'k' assigned to Register 'R1' ----
105: while(i>0)
00000002 E000 B L_8 ; T=0x00000006
00000004 L_10:
107: i--;
00000004 3801 SUB R0,#0x1
108: }
00000006 L_8:
00000006 1C02 MOV R2,R0 ; i
00000008 2A00 CMP R2,#0x0 ; i
0000000A D8FB BHI L_10 ; T=0x00000004
109: while(k>1)k--;
0000000C L_14:
0000000C 3901 SUB R1,#0x1
0000000E 1C08 MOV R0,R1 ; k
00000010 2801 CMP R0,#0x1 ; k
00000012 D8FB BHI L_14 ; T=0x0000000C
00000014 ; SCOPE-END
110: }
00000014 4770 BX R14
00000016 ENDP ; 'delay?T'
*** CODE SEGMENT '?PR?delayms?T?Lcd_Demo':
113: void delayms (unsigned int i) { /* Delay function */
00000000 ---- Variable 'i' assigned to Register 'R0' ----
00000000 ; SCOPE-START
115: while(i>1)
00000000 E005 B L_16 ; T=0x0000000E
117: for(n=65535;n>1;n--);
00000002 L_24:
00000002 4800 LDR R1,=0xFFFF
00000004 ---- Variable 'n' assigned to Register 'R1' ----
00000004 L_20:
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 18
00000004 3901 SUB R1,#0x1
00000006 1C0A MOV R2,R1 ; n
00000008 2A01 CMP R2,#0x1 ; n
0000000A D8FB BHI L_20 ; T=0x00000004
118: i--;
0000000C 3801 SUB R0,#0x1
119: }
0000000E L_16:
0000000E 1C01 MOV R1,R0 ; i
00000010 2901 CMP R1,#0x1 ; i
00000012 D8F6 BHI L_24 ; T=0x00000002
00000014 ; SCOPE-END
120: }
00000014 4770 BX R14
00000016 ENDP ; 'delayms?T'
*** CODE SEGMENT '?PR?OUTMD?T?Lcd_Demo':
123: void OUTMD(unsigned char i)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; i
00000004 ---- Variable 'i' assigned to Register 'R3' ----
125: Io_Set(A0); //A0_1; //写数据
00000004 2015 MOV R0,#0x15
00000006 F7FF BL Io_Set?T ; T=0x0001 (1)
00000008 FFFB BL Io_Set?T ; T=0x0001 (2)
126: delay(1);
0000000A 2001 MOV R0,#0x1
0000000C F7FF BL delay?T ; T=0x0001 (1)
0000000E FFF8 BL delay?T ; T=0x0001 (2)
127: Io_Set(E1); //E1_1;
00000010 2004 MOV R0,#0x4
00000012 F7FF BL Io_Set?T ; T=0x0001 (1)
00000014 FFF5 BL Io_Set?T ; T=0x0001 (2)
128: delay(1);
00000016 2001 MOV R0,#0x1
00000018 F7FF BL delay?T ; T=0x0001 (1)
0000001A FFF2 BL delay?T ; T=0x0001 (2)
129: OUT_DATA(i);// DATA=i;
0000001C 1C18 MOV R0,R3 ; i
0000001E 0600 LSL R0,R0,#0x18 ; i
00000020 0E00 LSR R0,R0,#0x18
00000022 F7FF BL OUT_DATA?T ; T=0x0001 (1)
00000024 FFED BL OUT_DATA?T ; T=0x0001 (2)
130: delay(1);
00000026 2001 MOV R0,#0x1
00000028 F7FF BL delay?T ; T=0x0001 (1)
0000002A FFEA BL delay?T ; T=0x0001 (2)
131: Io_Clr(E1); //E1_0;
0000002C 2004 MOV R0,#0x4
0000002E F7FF BL Io_Clr?T ; T=0x0001 (1)
00000030 FFE7 BL Io_Clr?T ; T=0x0001 (2)
133: }
00000032 BC08 POP {R3}
00000034 4718 BX R3
00000036 ENDP ; 'OUTMD?T'
*** CODE SEGMENT '?PR?OUTMI?T?Lcd_Demo':
136: void OUTMI(unsigned char i)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; i
00000004 ---- Variable 'i' assigned to Register 'R3' ----
138: Io_Clr(A0); //A0_0; //写指令
00000004 2015 MOV R0,#0x15
00000006 F7FF BL Io_Clr?T ; T=0x0001 (1)
00000008 FFFB BL Io_Clr?T ; T=0x0001 (2)
139: delay(1);
0000000A 2001 MOV R0,#0x1
0000000C F7FF BL delay?T ; T=0x0001 (1)
ARM COMPILER V2.53, Lcd_Demo 02/08/06 16:25:34 PAGE 19
0000000E FFF8 BL delay?T ; T=0x0001 (2)
140: Io_Set(E1); //E1_1;
00000010 2004 MOV R0,#0x4
00000012 F7FF BL Io_Set?T ; T=0x0001 (1)
00000014 FFF5 BL Io_Set?T ; T=0x0001 (2)
141: delay(1);
00000016 2001 MOV R0,#0x1
00000018 F7FF BL delay?T ; T=0x0001 (1)
0000001A FFF2 BL delay?T ; T=0x0001 (2)
142: OUT_DATA(i); //DATA=i;
0000001C 1C18 MOV R0,R3 ; i
0000001E 0600 LSL R0,R0,#0x18 ; i
00000020 0E00 LSR R0,R0,#0x18
00000022 F7FF BL OUT_DATA?T ; T=0x0001 (1)
00000024 FFED BL OUT_DATA?T ; T=0x0001 (2)
143: delay(1);
00000026 2001 MOV R0,#0x1
00000028 F7FF BL delay?T ; T=0x0001 (1)
0000002A FFEA BL delay?T ; T=0x0001 (2)
144: Io_Clr(E1); //E1_0;
0000002C 2004 MOV R0,#0x4
0000002E F7FF BL Io_Clr?T ; T=0x0001 (1)
00000030 FFE7 BL Io_Clr?T ; T=0x0001 (2)
146: }
00000032 BC08 POP {R3}
00000034 4718 BX R3
00000036 ENDP ; 'OUTMI?T'
*** CODE SEGMENT '?PR?OUTSD?T?Lcd_Demo':
149: void OUTSD(unsigned char i)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; i
00000004 ---- Variable 'i' assigned to Register 'R3' ----
151: Io_Set(A0); //A0_1; //写数据
00000004 2015 MOV R0,#0x15
00000006 F7FF BL Io_Set?T ; T=0x0001 (1)
00000008 FFFB BL Io_Set?T ; T=0x0001 (2)
152: delay(1);
0000000A 2001 MOV R0,#0x1
0000000C F7FF BL delay?T ; T=0x0001 (1)
0000000E FFF8 BL delay?T ; T=0x0001 (2)
153: Io_Set(E2); //E2_1;
00000010 201E MOV R0,#0x1E
00000012 F7FF BL Io_Set?T ; T=0x0001 (1)
00000014 FFF5 BL Io_Set?T ; T=0x0001 (2)
154: delay(1);
00000016 2001 MOV R0,#0x1
00000018 F7FF BL delay?T ; T=0x0001 (1)
0000001A FFF2 BL delay?T ; T=0x0001 (2)
155: OUT_DATA(i); //DATA=i;
0000001C 1C18 MOV R0,R3 ; i
0000001E 0600 LSL R0,R0,#0x18 ; i
00000020 0E00 LSR R0,R0,#0x18
00000022 F7FF BL OUT_DATA?T ; T=0x0001 (1)
00000024 FFED BL OUT_DATA?T ; T=0x0001 (2)
156: delay(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -