⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 keil开发平台下的ADUC7027的功能模块代码。
💻 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 + -