📄 main.lst
字号:
ARM COMPILER V2.50a, main 03/05/06 03:04:54 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 /**********************************************************************************************
2 main.c file
3
4 在ADuC7027上使用NOKIA3510彩色液晶显示器
5
6 作者:Computer-lov
7 建立日期:2006-5-2
8 修改日期:2006-5-3
9 版本:V1.0
10 版权所有,盗版必究。
11 任何技术问题可到我的博客上留言: http://computer00.21ic.org
12 Copyright(C) Computer-lov 2006-2016
13 All rights reserved
14 **********************************************************************************************/
15
16 #include <ADuC7027.H>
17 #include "My_type.h"
18 #include "3510LCD.H"
19 #include "ImgData.H"
20
21
22 /*********************************************************************************************/
23 void SysClkInit(void)
24 {
25 1 PLLKEY1=0xAA;
26 1 PLLCON=0x01; //PLL配置
27 1 PLLKEY2=0x55;
28 1 POWKEY1=0x01;
29 1 POWCON=0x00; //CPU时钟配置为41.78MHz
30 1 POWKEY2=0xF4;
31 1 // while(!(PLLSTA & 0x01));
32 1 }
33 ///////////////////////////////////////////////////////////////////////////////////////////////
34
35
36 /*********************************************************************************************/
37 void DelayXms(uint32 x)
38 {
39 1 uint32 i;
40 1 while(x--)
41 1 {
42 2 i=5300;
43 2 while(i--);
44 2 }
45 1 }
46 ///////////////////////////////////////////////////////////////////////////////////////////////
47
48
49 /*********************************************************************************************/
50 void main(void)
51 {
52 1 uint32 y;
53 1 SysClkInit();
54 1 LcdInit();
55 1
56 1 while(1)
57 1 {
58 2 for(y = 0; y < 67; y ++)
59 2 {
ARM COMPILER V2.50a, main 03/05/06 03:04:54 PAGE 2
60 3 LcdBlockWrite(0, y, 97, y, buffer1+y*147);
61 3 }
62 2 DelayXms(1000);
63 2 for(y = 0; y < 67; y ++)
64 2 {
65 3 LcdBlockWrite(0, y, 97, y, buffer2+y*147);
66 3 }
67 2 DelayXms(1000);
68 2 for(y = 0; y < 67; y ++)
69 2 {
70 3 LcdBlockWrite(0, y, 97, y, buffer3+y*147);
71 3 }
72 2 DelayXms(1000);
73 2 LcdSendCommand(0x21); //display inversion ON
74 2 SetLcdCs();
75 2 for(y = 0; y < 67; y ++)
76 2 {
77 3 LcdBlockWrite(0, y, 97, y, buffer4+y*147);
78 3 }
79 2 DelayXms(1000);
80 2 LcdSendCommand(0x20); //display inversion OFF
81 2 SetLcdCs();
82 2 }
83 1 }
84 ///////////////////////////////////////////////////////////////////////////////////////////////
ARM COMPILER V2.50a, main 03/05/06 03:04:54 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (LcdSendCommand?T)
EXTERN CODE16 (LcdInit?T)
EXTERN CODE16 (LcdBlockWrite?T)
EXTERN DATA (buffer1)
EXTERN DATA (buffer2)
EXTERN DATA (buffer3)
EXTERN DATA (buffer4)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC DelayXms?T
PUBLIC SysClkInit?T
PUBLIC main
*** CODE SEGMENT '?PR?SysClkInit?T?main':
25: PLLKEY1=0xAA;
00000000 21AA MOV R1,#0xAA
00000002 4800 LDR R0,=0xFFFF0410
00000004 6001 STR R1,[R0,#0x0]
26: PLLCON=0x01; //PLL配置
00000006 2101 MOV R1,#0x1
00000008 4800 LDR R0,=0xFFFF0414
0000000A 6001 STR R1,[R0,#0x0]
27: PLLKEY2=0x55;
0000000C 2255 MOV R2,#0x55
0000000E 4800 LDR R0,=0xFFFF0418
00000010 6002 STR R2,[R0,#0x0]
28: POWKEY1=0x01;
00000012 4800 LDR R0,=0xFFFF0404
00000014 6001 STR R1,[R0,#0x0]
29: POWCON=0x00; //CPU时钟配置为41.78MHz
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=0xFFFF0408
0000001A 6001 STR R1,[R0,#0x0]
30: POWKEY2=0xF4;
0000001C 21F4 MOV R1,#0xF4
0000001E 4800 LDR R0,=0xFFFF040C
00000020 6001 STR R1,[R0,#0x0]
32: }
00000022 4770 BX R14
00000024 ENDP ; 'SysClkInit?T'
*** CODE SEGMENT '?PR?DelayXms?T?main':
37: void DelayXms(uint32 x)
00000000 ---- Variable 'x' assigned to Register 'R0' ----
38: {
00000000 ; SCOPE-START
40: while(x--)
00000000 E004 B L_1 ; T=0x0000000C
00000002 L_3:
42: i=5300;
00000002 4800 LDR R1,=0x14B4
00000004 ---- Variable 'i' assigned to Register 'R1' ----
43: while(i--);
00000004 L_5:
00000004 1C0A MOV R2,R1 ; i
00000006 3901 SUB R1,#0x1
00000008 2A00 CMP R2,#0x0 ; i
0000000A D1FB BNE L_5 ; T=0x00000004
44: }
0000000C L_1:
0000000C 1C01 MOV R1,R0 ; x
0000000E 3801 SUB R0,#0x1
ARM COMPILER V2.50a, main 03/05/06 03:04:54 PAGE 4
00000010 2900 CMP R1,#0x0 ; x
00000012 D1F6 BNE L_3 ; T=0x00000002
00000014 ; SCOPE-END
45: }
00000014 4770 BX R14
00000016 ENDP ; 'DelayXms?T'
*** CODE SEGMENT '?PR?main?main':
50: void main(void)
00000000 B500 PUSH {LR}
51: {
00000002 ; SCOPE-START
53: SysClkInit();
00000002 F7FF BL SysClkInit?T ; T=0x0001 (1)
00000004 FFFD BL SysClkInit?T ; T=0x0001 (2)
54: LcdInit();
00000006 F7FF BL LcdInit?T ; T=0x0001 (1)
00000008 FFFB BL LcdInit?T ; T=0x0001 (2)
58: for(y = 0; y < 67; y ++)
0000000A L_17:
0000000A 2400 MOV R4,#0x0
0000000C ---- Variable 'y' assigned to Register 'R4' ----
0000000C L_16:
60: LcdBlockWrite(0, y, 97, y, buffer1+y*147);
0000000C 1C21 MOV R1,R4 ; y
0000000E 2093 MOV R0,#0x93
00000010 4341 MUL R1,R0
00000012 4800 LDR R0,=buffer1 ; buffer1
00000014 1840 ADD R0,R1 ; buffer1
00000016 B401 PUSH {R0}
00000018 1C21 MOV R1,R4 ; y
0000001A 1C23 MOV R3,R4 ; y
0000001C 2000 MOV R0,#0x0
0000001E 2261 MOV R2,#0x61
00000020 F7FF BL LcdBlockWrite?T ; T=0x0001 (1)
00000022 FFEE BL LcdBlockWrite?T ; T=0x0001 (2)
00000024 B001 ADD R13,#0x4
61: }
00000026 3401 ADD R4,#0x1
00000028 1C20 MOV R0,R4 ; y
0000002A 2843 CMP R0,#0x43 ; y
0000002C D3EE BCC L_16 ; T=0x0000000C
62: DelayXms(1000);
0000002E 48FA LDR R0,=0x3E8
00000030 F7FF BL DelayXms?T ; T=0x0001 (1)
00000032 FFE6 BL DelayXms?T ; T=0x0001 (2)
63: for(y = 0; y < 67; y ++)
00000034 2400 MOV R4,#0x0
00000036 L_21:
65: LcdBlockWrite(0, y, 97, y, buffer2+y*147);
00000036 1C21 MOV R1,R4 ; y
00000038 2093 MOV R0,#0x93
0000003A 4341 MUL R1,R0
0000003C 4800 LDR R0,=buffer2 ; buffer2
0000003E 1840 ADD R0,R1 ; buffer2
00000040 B401 PUSH {R0}
00000042 1C21 MOV R1,R4 ; y
00000044 1C23 MOV R3,R4 ; y
00000046 2000 MOV R0,#0x0
00000048 2261 MOV R2,#0x61
0000004A F7FF BL LcdBlockWrite?T ; T=0x0001 (1)
0000004C FFD9 BL LcdBlockWrite?T ; T=0x0001 (2)
0000004E B001 ADD R13,#0x4
66: }
00000050 3401 ADD R4,#0x1
00000052 1C20 MOV R0,R4 ; y
00000054 2843 CMP R0,#0x43 ; y
ARM COMPILER V2.50a, main 03/05/06 03:04:54 PAGE 5
00000056 D3EE BCC L_21 ; T=0x00000036
67: DelayXms(1000);
00000058 48FA LDR R0,=0x3E8
0000005A F7FF BL DelayXms?T ; T=0x0001 (1)
0000005C FFD1 BL DelayXms?T ; T=0x0001 (2)
68: for(y = 0; y < 67; y ++)
0000005E 2400 MOV R4,#0x0
00000060 L_26:
70: LcdBlockWrite(0, y, 97, y, buffer3+y*147);
00000060 1C21 MOV R1,R4 ; y
00000062 2093 MOV R0,#0x93
00000064 4341 MUL R1,R0
00000066 4800 LDR R0,=buffer3 ; buffer3
00000068 1840 ADD R0,R1 ; buffer3
0000006A B401 PUSH {R0}
0000006C 1C21 MOV R1,R4 ; y
0000006E 1C23 MOV R3,R4 ; y
00000070 2000 MOV R0,#0x0
00000072 2261 MOV R2,#0x61
00000074 F7FF BL LcdBlockWrite?T ; T=0x0001 (1)
00000076 FFC4 BL LcdBlockWrite?T ; T=0x0001 (2)
00000078 B001 ADD R13,#0x4
71: }
0000007A 3401 ADD R4,#0x1
0000007C 1C20 MOV R0,R4 ; y
0000007E 2843 CMP R0,#0x43 ; y
00000080 D3EE BCC L_26 ; T=0x00000060
72: DelayXms(1000);
00000082 48FA LDR R0,=0x3E8
00000084 F7FF BL DelayXms?T ; T=0x0001 (1)
00000086 FFBC BL DelayXms?T ; T=0x0001 (2)
73: LcdSendCommand(0x21); //display inversion ON
00000088 2021 MOV R0,#0x21
0000008A F7FF BL LcdSendCommand?T ; T=0x0001 (1)
0000008C FFB9 BL LcdSendCommand?T ; T=0x0001 (2)
74: SetLcdCs();
0000008E 4800 LDR R1,=0x40000
00000090 4800 LDR R0,=0xFFFFF444
00000092 6001 STR R1,[R0,#0x0]
75: for(y = 0; y < 67; y ++)
00000094 2400 MOV R4,#0x0
00000096 L_31:
77: LcdBlockWrite(0, y, 97, y, buffer4+y*147);
00000096 1C21 MOV R1,R4 ; y
00000098 2093 MOV R0,#0x93
0000009A 4341 MUL R1,R0
0000009C 4800 LDR R0,=buffer4 ; buffer4
0000009E 1840 ADD R0,R1 ; buffer4
000000A0 B401 PUSH {R0}
000000A2 1C21 MOV R1,R4 ; y
000000A4 1C23 MOV R3,R4 ; y
000000A6 2000 MOV R0,#0x0
000000A8 2261 MOV R2,#0x61
000000AA F7FF BL LcdBlockWrite?T ; T=0x0001 (1)
000000AC FFA9 BL LcdBlockWrite?T ; T=0x0001 (2)
000000AE B001 ADD R13,#0x4
78: }
000000B0 3401 ADD R4,#0x1
000000B2 1C20 MOV R0,R4 ; y
000000B4 2843 CMP R0,#0x43 ; y
000000B6 D3EE BCC L_31 ; T=0x00000096
79: DelayXms(1000);
000000B8 48FA LDR R0,=0x3E8
000000BA F7FF BL DelayXms?T ; T=0x0001 (1)
000000BC FFA1 BL DelayXms?T ; T=0x0001 (2)
80: LcdSendCommand(0x20); //display inversion OFF
ARM COMPILER V2.50a, main 03/05/06 03:04:54 PAGE 6
000000BE 2020 MOV R0,#0x20
000000C0 F7FF BL LcdSendCommand?T ; T=0x0001 (1)
000000C2 FF9E BL LcdSendCommand?T ; T=0x0001 (2)
81: SetLcdCs();
000000C4 4800 LDR R1,=0x40000
000000C6 4800 LDR R0,=0xFFFFF444
000000C8 6001 STR R1,[R0,#0x0]
82: }
000000CA E79E B L_17 ; T=0x0000000A
000000CC ; SCOPE-END
83: }
000000CC BC08 POP {R3}
000000CE 4718 BX R3
000000D0 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 + -