📄 lcd_demo.lst
字号:
PUBLIC Io_Clr?T
PUBLIC Io_Set1?T
PUBLIC Io_Clr1?T
PUBLIC OUT_DATA?T
PUBLIC delay?T
PUBLIC delayms?T
PUBLIC OUTMD?T
PUBLIC OUTMI?T
PUBLIC OUTSD?T
PUBLIC OUTSI?T
PUBLIC lcdini?T
PUBLIC SetPage?T
PUBLIC SetAddress?T
PUBLIC PutCharR?T
PUBLIC PutCharL?T
PUBLIC DrawBmp?T
PUBLIC clrscr?T
PUBLIC DrawBmp1?T
PUBLIC Draw_word?T
PUBLIC delay1s?T
PUBLIC wait1?T
PUBLIC init_port?T
PUBLIC main
*** CODE SEGMENT '?PR?Io_Set?T?Lcd_Demo':
43: void Io_Set(uchar pin) //单个IO口置位函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
44: {
00000002 ; SCOPE-START
45: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
46: io_data=io_data<<pin;
00000004 1C08 MOV R0,R1 ; pin
00000006 0600 LSL R0,R0,#0x18 ; pin
00000008 0E00 LSR R0,R0,#0x18
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 11
0000000A 4082 LSL R2,R0
47: IOSET0=io_data; //IOSET0为IO线上置位寄存器,1有效,0无
0000000C 1C11 MOV R1,R2 ; io_data
0000000E 4800 LDR R0,=0xE0028004
00000010 6001 STR R1,[R0,#0x0]
00000012 ; SCOPE-END
48: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Set?T'
*** CODE SEGMENT '?PR?Io_Clr?T?Lcd_Demo':
51: void Io_Clr(uchar pin) //单个IO口清零函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
52: {
00000002 ; SCOPE-START
53: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
54: 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
55: 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
56: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Clr?T'
*** CODE SEGMENT '?PR?Io_Set1?T?Lcd_Demo':
59: void Io_Set1(uchar pin) //单个IO口置位函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
60: {
00000002 ; SCOPE-START
61: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
62: 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
63: 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
64: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Set1?T'
*** CODE SEGMENT '?PR?Io_Clr1?T?Lcd_Demo':
67: void Io_Clr1(uchar pin) //单个IO口清零函数
00000000 1C01 MOV R1,R0 ; pin
00000002 ---- Variable 'pin' assigned to Register 'R1' ----
68: {
00000002 ; SCOPE-START
69: unsigned int io_data=1;
00000002 2201 MOV R2,#0x1
00000004 ---- Variable 'io_data' assigned to Register 'R2' ----
70: io_data=io_data<<pin;
00000004 1C08 MOV R0,R1 ; pin
00000006 0600 LSL R0,R0,#0x18 ; pin
00000008 0E00 LSR R0,R0,#0x18
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 12
0000000A 4082 LSL R2,R0
71: 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
72: }
00000012 4770 BX R14
00000014 ENDP ; 'Io_Clr1?T'
*** CODE SEGMENT '?PR?OUT_DATA?T?Lcd_Demo':
73: void OUT_DATA(unsigned char data)
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; data
00000004 ---- Variable 'data' assigned to Register 'R4' ----
74: {
00000004 ; SCOPE-START
76: 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:
79: 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:
80: else {Io_Clr1(i+16);}
00000022 1C18 MOV R0,R3 ; i
00000024 0600 LSL R0,R0,#0x18 ; i
00000026 0E00 LSR R0,R0,#0x18
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:
81: 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
82: }
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
83: }
0000004A BC10 POP {R4}
0000004C BC08 POP {R3}
0000004E 4718 BX R3
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 13
00000050 ENDP ; 'OUT_DATA?T'
*** CODE SEGMENT '?PR?delay?T?Lcd_Demo':
88: void delay(unsigned int i)
00000000 ---- Variable 'i' assigned to Register 'R0' ----
89: {
00000000 ; SCOPE-START
90: unsigned int k=1000;
00000000 49FA LDR R1,=0x3E8
00000002 ---- Variable 'k' assigned to Register 'R1' ----
91: while(i>0)
00000002 E000 B L_8 ; T=0x00000006
00000004 L_10:
93: i--;
00000004 3801 SUB R0,#0x1
94: }
00000006 L_8:
00000006 1C02 MOV R2,R0 ; i
00000008 2A00 CMP R2,#0x0 ; i
0000000A D8FB BHI L_10 ; T=0x00000004
95: 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
96: }
00000014 4770 BX R14
00000016 ENDP ; 'delay?T'
*** CODE SEGMENT '?PR?delayms?T?Lcd_Demo':
99: void delayms (unsigned int i) { /* Delay function */
00000000 ---- Variable 'i' assigned to Register 'R0' ----
00000000 ; SCOPE-START
101: while(i>1)
00000000 E005 B L_16 ; T=0x0000000E
103: for(n=65535;n>1;n--);
00000002 L_24:
00000002 4800 LDR R1,=0xFFFF
00000004 ---- Variable 'n' assigned to Register 'R1' ----
00000004 L_20:
00000004 3901 SUB R1,#0x1
00000006 1C0A MOV R2,R1 ; n
00000008 2A01 CMP R2,#0x1 ; n
0000000A D8FB BHI L_20 ; T=0x00000004
104: i--;
0000000C 3801 SUB R0,#0x1
105: }
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
106: }
00000014 4770 BX R14
00000016 ENDP ; 'delayms?T'
*** CODE SEGMENT '?PR?OUTMD?T?Lcd_Demo':
109: void OUTMD(unsigned char i)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; i
00000004 ---- Variable 'i' assigned to Register 'R3' ----
111: 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)
112: delay(1);
0000000A 2001 MOV R0,#0x1
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 14
0000000C F7FF BL delay?T ; T=0x0001 (1)
0000000E FFF8 BL delay?T ; T=0x0001 (2)
113: 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)
114: delay(1);
00000016 2001 MOV R0,#0x1
00000018 F7FF BL delay?T ; T=0x0001 (1)
0000001A FFF2 BL delay?T ; T=0x0001 (2)
115: 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)
116: delay(1);
00000026 2001 MOV R0,#0x1
00000028 F7FF BL delay?T ; T=0x0001 (1)
0000002A FFEA BL delay?T ; T=0x0001 (2)
117: 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)
119: }
00000032 BC08 POP {R3}
00000034 4718 BX R3
00000036 ENDP ; 'OUTMD?T'
*** CODE SEGMENT '?PR?OUTMI?T?Lcd_Demo':
122: void OUTMI(unsigned char i)
00000000 B500 PUSH {LR}
00000002 1C03 MOV R3,R0 ; i
00000004 ---- Variable 'i' assigned to Register 'R3' ----
124: 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)
125: delay(1);
0000000A 2001 MOV R0,#0x1
0000000C F7FF BL delay?T ; T=0x0001 (1)
0000000E FFF8 BL delay?T ; T=0x0001 (2)
126: 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)
127: delay(1);
00000016 2001 MOV R0,#0x1
00000018 F7FF BL delay?T ; T=0x0001 (1)
0000001A FFF2 BL delay?T ; T=0x0001 (2)
128: 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)
129: delay(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -