📄 main.lst
字号:
ARM COMPILER V2.50a, main 13/04/06 01:40:25 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 ADuC7026的第七个实验——DAC
5
6 作者:Computer-lov
7 建立日期:2006-4-13
8 修改日期:2006-4-13
9 版本:V1.0
10 版权所有,盗版必究。
11 任何技术问题可到我的博客上留言: http://computer00.21ic.org
12 Copyright(C) Computer-lov 2006-2016
13 All rights reserved
14 **********************************************************************************************/
15
16 #include <ADuC7026.H>
17 #include <../My_type.h>
18 #include "DAC.H"
19
20 /*********************************************************************************************/
21 void SysClkInit(void)
22 {
23 1 PLLKEY1=0xAA;
24 1 PLLCON=0x01; //PLL配置
25 1 PLLKEY2=0x55;
26 1 POWKEY1=0x01;
27 1 POWCON=0x00; //CPU时钟配置为41.78MHz
28 1 POWKEY2=0xF4;
29 1 // while(!(PLLSTA & 0x01));
30 1 }
31 ///////////////////////////////////////////////////////////////////////////////////////////////
32
33 //64点的正弦表
34
35 const uint32 SinTable[64] = {
36 0x07FF0000, 0x08C80000, 0x098E0000, 0x0A510000, 0x0B0F0000, 0x0BC40000, 0x0C710000, 0x0D120000,
37 0x0DA70000, 0x0E2E0000, 0x0EA50000, 0x0F0D0000, 0x0F630000, 0x0FA60000, 0x0FD70000, 0x0FF50000,
38 0x0FFF0000, 0x0FF50000, 0x0FD70000, 0x0FA60000, 0x0F630000, 0x0F0D0000, 0x0EA50000, 0x0E2E0000,
39 0x0DA70000, 0x0D120000, 0x0C710000, 0x0BC40000, 0x0B0F0000, 0x0A510000, 0x098E0000, 0x08C80000,
40 0x07FF0000, 0x07360000, 0x06700000, 0x05AD0000, 0x04EF0000, 0x043A0000, 0x038D0000, 0x02EC0000,
41 0x02570000, 0x01D00000, 0x01590000, 0x00F10000, 0x009B0000, 0x00580000, 0x00270000, 0x00090000,
42 0x00000000, 0x00090000, 0x00270000, 0x00580000, 0x009B0000, 0x00F10000, 0x01590000, 0x01D00000,
43 0x02570000, 0x02EC0000, 0x038D0000, 0x043A0000, 0x04EF0000, 0x05AD0000, 0x06700000, 0x07360000
44 };
45
46
47 /*********************************************************************************************/
48 void main(void)
49 {
50 1 uint32 i;
51 1 SysClkInit();
52 1 DACInit();
53 1
54 1 while(1)
55 1 {
56 2 DAC0DAT=SinTable[i]; //DAC0产生正弦波
57 2 DAC1DAT=i<<(6+16); //DAC1产生锯齿波
58 2 if(i&0x20)
59 2 {
ARM COMPILER V2.50a, main 13/04/06 01:40:25 PAGE 2
60 3 DAC2DAT=2*(0x3F<<22)-2*(i<<22); //DAC2产生三角波
61 3 DAC3DAT=0x0FFF0000; //DAC3产生方波
62 3 }
63 2 else
64 2 {
65 3 DAC2DAT=2*(i<<22);
66 3 DAC3DAT=0x00000000;
67 3 }
68 2 i++;
69 2 i&=0x3F;
70 2 }
71 1
72 1 }
73 ///////////////////////////////////////////////////////////////////////////////////////////////
ARM COMPILER V2.50a, main 13/04/06 01:40:25 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (DACInit?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC SysClkInit?T
PUBLIC main
PUBLIC SinTable
*** DATA SEGMENT '?CON?main':
00000000 SinTable:
00000000 BEGIN_INIT
00000000 07FF0000 DD 0x7FF0000
00000004 08C80000 DD 0x8C80000
00000008 098E0000 DD 0x98E0000
0000000C 0A510000 DD 0xA510000
00000010 0B0F0000 DD 0xB0F0000
00000014 0BC40000 DD 0xBC40000
00000018 0C710000 DD 0xC710000
0000001C 0D120000 DD 0xD120000
00000020 0DA70000 DD 0xDA70000
00000024 0E2E0000 DD 0xE2E0000
00000028 0EA50000 DD 0xEA50000
0000002C 0F0D0000 DD 0xF0D0000
00000030 0F630000 DD 0xF630000
00000034 0FA60000 DD 0xFA60000
00000038 0FD70000 DD 0xFD70000
0000003C 0FF50000 DD 0xFF50000
00000040 0FFF0000 DD 0xFFF0000
00000044 0FF50000 DD 0xFF50000
00000048 0FD70000 DD 0xFD70000
0000004C 0FA60000 DD 0xFA60000
00000050 0F630000 DD 0xF630000
00000054 0F0D0000 DD 0xF0D0000
00000058 0EA50000 DD 0xEA50000
0000005C 0E2E0000 DD 0xE2E0000
00000060 0DA70000 DD 0xDA70000
00000064 0D120000 DD 0xD120000
00000068 0C710000 DD 0xC710000
0000006C 0BC40000 DD 0xBC40000
00000070 0B0F0000 DD 0xB0F0000
00000074 0A510000 DD 0xA510000
00000078 098E0000 DD 0x98E0000
0000007C 08C80000 DD 0x8C80000
00000080 07FF0000 DD 0x7FF0000
00000084 07360000 DD 0x7360000
00000088 06700000 DD 0x6700000
0000008C 05AD0000 DD 0x5AD0000
00000090 04EF0000 DD 0x4EF0000
00000094 043A0000 DD 0x43A0000
00000098 038D0000 DD 0x38D0000
0000009C 02EC0000 DD 0x2EC0000
000000A0 02570000 DD 0x2570000
000000A4 01D00000 DD 0x1D00000
000000A8 01590000 DD 0x1590000
000000AC 00F10000 DD 0xF10000
000000B0 009B0000 DD 0x9B0000
000000B4 00580000 DD 0x580000
000000B8 00270000 DD 0x270000
000000BC 00090000 DD 0x90000
000000C0 00000000 DD 0x0
000000C4 00090000 DD 0x90000
000000C8 00270000 DD 0x270000
ARM COMPILER V2.50a, main 13/04/06 01:40:25 PAGE 4
000000CC 00580000 DD 0x580000
000000D0 009B0000 DD 0x9B0000
000000D4 00F10000 DD 0xF10000
000000D8 01590000 DD 0x1590000
000000DC 01D00000 DD 0x1D00000
000000E0 02570000 DD 0x2570000
000000E4 02EC0000 DD 0x2EC0000
000000E8 038D0000 DD 0x38D0000
000000EC 043A0000 DD 0x43A0000
000000F0 04EF0000 DD 0x4EF0000
000000F4 05AD0000 DD 0x5AD0000
000000F8 06700000 DD 0x6700000
000000FC 07360000 DD 0x7360000
00000100 END_INIT
*** CODE SEGMENT '?PR?SysClkInit?T?main':
23: PLLKEY1=0xAA;
00000000 21AA MOV R1,#0xAA
00000002 4800 LDR R0,=0xFFFF0410
00000004 6001 STR R1,[R0,#0x0]
24: PLLCON=0x01; //PLL配置
00000006 2101 MOV R1,#0x1
00000008 4800 LDR R0,=0xFFFF0414
0000000A 6001 STR R1,[R0,#0x0]
25: PLLKEY2=0x55;
0000000C 2255 MOV R2,#0x55
0000000E 4800 LDR R0,=0xFFFF0418
00000010 6002 STR R2,[R0,#0x0]
26: POWKEY1=0x01;
00000012 4800 LDR R0,=0xFFFF0404
00000014 6001 STR R1,[R0,#0x0]
27: POWCON=0x00; //CPU时钟配置为41.78MHz
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=0xFFFF0408
0000001A 6001 STR R1,[R0,#0x0]
28: POWKEY2=0xF4;
0000001C 21F4 MOV R1,#0xF4
0000001E 4800 LDR R0,=0xFFFF040C
00000020 6001 STR R1,[R0,#0x0]
30: }
00000022 4770 BX R14
00000024 ENDP ; 'SysClkInit?T'
*** CODE SEGMENT '?PR?main?main':
48: void main(void)
00000000 B500 PUSH {LR}
00000002 ---- Variable 'i' assigned to Register 'R4' ----
49: {
00000002 ; SCOPE-START
51: SysClkInit();
00000002 F7FF BL SysClkInit?T ; T=0x0001 (1)
00000004 FFFD BL SysClkInit?T ; T=0x0001 (2)
52: DACInit();
00000006 F7FF BL DACInit?T ; T=0x0001 (1)
00000008 FFFB BL DACInit?T ; T=0x0001 (2)
54: while(1)
0000000A L_3:
56: DAC0DAT=SinTable[i]; //DAC0产生正弦波
0000000A 1C21 MOV R1,R4 ; i
0000000C 0089 LSL R1,R1,#0x2 ; i
0000000E 4800 LDR R0,=SinTable ; SinTable
00000010 5841 LDR R1,[R0,R1]
00000012 4800 LDR R0,=0xFFFF0604
00000014 6001 STR R1,[R0,#0x0]
57: DAC1DAT=i<<(6+16); //DAC1产生锯齿波
00000016 1C21 MOV R1,R4 ; i
00000018 0589 LSL R1,R1,#0x16 ; i
ARM COMPILER V2.50a, main 13/04/06 01:40:25 PAGE 5
0000001A 4800 LDR R0,=0xFFFF060C
0000001C 6001 STR R1,[R0,#0x0]
58: if(i&0x20)
0000001E 1C20 MOV R0,R4 ; i
00000020 2220 MOV R2,#0x20
00000022 4210 TST R0,R2 ; i
00000024 D008 BEQ L_5 ; T=0x00000038
60: DAC2DAT=2*(0x3F<<22)-2*(i<<22); //DAC2产生三角波
00000026 0048 LSL R0,R1,#0x1
00000028 4800 LDR R2,=0x1F800000
0000002A 1A12 SUB R2,R0
0000002C 4800 LDR R0,=0xFFFF0614
0000002E 6002 STR R2,[R0,#0x0]
61: DAC3DAT=0x0FFF0000; //DAC3产生方波
00000030 4800 LDR R2,=0xFFF0000
00000032 4800 LDR R0,=0xFFFF061C
00000034 6002 STR R2,[R0,#0x0]
62: }
00000036 E005 B L_6 ; T=0x00000044
00000038 L_5:
65: DAC2DAT=2*(i<<22);
00000038 0049 LSL R1,R1,#0x1
0000003A 4800 LDR R0,=0xFFFF0614
0000003C 6001 STR R1,[R0,#0x0]
66: DAC3DAT=0x00000000;
0000003E 2100 MOV R1,#0x0
00000040 4800 LDR R0,=0xFFFF061C
00000042 6001 STR R1,[R0,#0x0]
67: }
00000044 L_6:
68: i++;
00000044 3401 ADD R4,#0x1
69: i&=0x3F;
00000046 203F MOV R0,#0x3F
00000048 4004 AND R4,R0
70: }
0000004A E7DE B L_3 ; T=0x0000000A
0000004C ; SCOPE-END
72: }
0000004C BC08 POP {R3}
0000004E 4718 BX R3
00000050 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = 256
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -