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

📄 main.lst

📁 keil开发平台下的ADUC7027的功能模块代码。
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.50a,  main                                                                 12/04/06  12:37:09  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的第五个实验——按键处理
    5          
    6            作者:Computer-lov
    7            建立日期:2006-4-11
    8            修改日期:2006-4-12
    9            版本:V1.0
   10            版权所有,盗版必究。
   11            任何技术问题可到我的博客上留言:    http://computer00.21ic.org
   12            Copyright(C) Computer-lov 2006-2016
   13            All rights reserved
   14          **********************************************************************************************/
   15          
   16          
   17          
   18          
   19          #include <../My_type.h>
   20          #include <ADuC7027.H>
   21          #include <../LED.H>
   22          #include "KEYS.h"
   23          
   24          
   25          /*********************************************************************************************/
   26          void SysClkInit(void)
   27          {
   28   1       PLLKEY1=0xAA;
   29   1       PLLCON=0x01;   //PLL配置  
   30   1       PLLKEY2=0x55;
   31   1       POWKEY1=0x01;
   32   1       POWCON=0x00;  //CPU时钟配置为41.78MHz
   33   1       POWKEY2=0xF4;
   34   1      // while(!(PLLSTA & 0x01));
   35   1      }
   36          ///////////////////////////////////////////////////////////////////////////////////////////////
   37          
   38          /*********************************************************************************************/
   39          void DelayXms(uint32 x)
   40          {
   41   1       uint32 i;
   42   1       while(x--)
   43   1        {
   44   2         i=5300;
   45   2         while(i--);
   46   2        }
   47   1      }
   48          ///////////////////////////////////////////////////////////////////////////////////////////////
   49          
   50          
   51          
   52          /*********************************************************************************************/
   53          void main(void)
   54          {
   55   1      
   56   1       SysClkInit();
   57   1       KEYBoardInit();
   58   1      
   59   1       EN_LED4();
ARM COMPILER V2.50a,  main                                                                 12/04/06  12:37:09  PAGE 2   

   60   1       EN_LED5();
   61   1       EN_LED6();
   62   1       EN_LED7();
   63   1      
   64   1       OFF_LED4();
   65   1       OFF_LED5();
   66   1       OFF_LED6();
   67   1       OFF_LED7();
   68   1      
   69   1      
   70   1      
   71   1       while(1)
   72   1        {
   73   2         DelayXms(10);      //延迟10mS,即每隔10mS扫描一次键盘。
   74   2         ScanKey();      //也可以将将键盘扫描程序放到10mS的定时中断中,这样主程序就可以安心干活了
   75   2      
   76   2         if(Key.Value)      //如果有按键按下
   77   2          {
   78   3           switch(Key.Value)
   79   3            { 
   80   4            
   81   4              case KEY1:           //短按键或者按住键2秒不放的自动按键,则开、关LED
   82   4                          if(GP3DAT & (1<<(16+LED4)))ON_LED4();
   83   4                          else OFF_LED4();
   84   4                          break;
   85   4              case KEY2:  
   86   4                          if(GP3DAT & (1<<(16+LED5)))ON_LED5();
   87   4                          else OFF_LED5();
   88   4                          break;
   89   4              case KEY3:  
   90   4                          if(GP3DAT & (1<<(16+LED6)))ON_LED6();
   91   4                          else OFF_LED6();
   92   4                          break;
   93   4              case KEY4:  
   94   4                          if(GP3DAT & (1<<(16+LED7)))ON_LED7();
   95   4                          else OFF_LED7();
   96   4                          break;
   97   4      
   98   4              case KEY1L: ON_LED4();break;        //长按键,打开LED
   99   4              case KEY2L: ON_LED5();break;
  100   4              case KEY3L: ON_LED6();break;
  101   4              case KEY4L: ON_LED7();break;
  102   4            }
  103   3           Key.Value=0;
  104   3          }
  105   2        }
  106   1      }
  107          ///////////////////////////////////////////////////////////////////////////////////////////////
  108          
ARM COMPILER V2.50a,  main                                                                 12/04/06  12:37:09  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN DATA (Key)
 EXTERN CODE16 (ScanKey?T)
 EXTERN CODE16 (KEYBoardInit?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         SysClkInit?T
 PUBLIC         DelayXms?T
 PUBLIC         main



*** CODE SEGMENT '?PR?SysClkInit?T?main':
   28:  PLLKEY1=0xAA;
 00000000  21AA      MOV         R1,#0xAA
 00000002  4800      LDR         R0,=0xFFFF0410
 00000004  6001      STR         R1,[R0,#0x0]
   29:  PLLCON=0x01;   //PLL配置  
 00000006  2101      MOV         R1,#0x1
 00000008  4800      LDR         R0,=0xFFFF0414
 0000000A  6001      STR         R1,[R0,#0x0]
   30:  PLLKEY2=0x55;
 0000000C  2255      MOV         R2,#0x55
 0000000E  4800      LDR         R0,=0xFFFF0418
 00000010  6002      STR         R2,[R0,#0x0]
   31:  POWKEY1=0x01;
 00000012  4800      LDR         R0,=0xFFFF0404
 00000014  6001      STR         R1,[R0,#0x0]
   32:  POWCON=0x00;  //CPU时钟配置为41.78MHz
 00000016  2100      MOV         R1,#0x0
 00000018  4800      LDR         R0,=0xFFFF0408
 0000001A  6001      STR         R1,[R0,#0x0]
   33:  POWKEY2=0xF4;
 0000001C  21F4      MOV         R1,#0xF4
 0000001E  4800      LDR         R0,=0xFFFF040C
 00000020  6001      STR         R1,[R0,#0x0]
   35: }
 00000022  4770      BX          R14
 00000024          ENDP ; 'SysClkInit?T'


*** CODE SEGMENT '?PR?DelayXms?T?main':
   39: void DelayXms(uint32 x)
 00000000  ---- Variable 'x' assigned to Register 'R0' ----
   40: {
 00000000            ; SCOPE-START
   42:  while(x--)
 00000000  E004      B           L_1  ; T=0x0000000C
 00000002          L_3:
   44:    i=5300;
 00000002  4800      LDR         R1,=0x14B4
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
   45:    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
   46:   }
 0000000C          L_1:
 0000000C  1C01      MOV         R1,R0 ; x
 0000000E  3801      SUB         R0,#0x1
 00000010  2900      CMP         R1,#0x0 ; x
 00000012  D1F6      BNE         L_3  ; T=0x00000002
 00000014            ; SCOPE-END
   47: }
ARM COMPILER V2.50a,  main                                                                 12/04/06  12:37:09  PAGE 4   

 00000014  4770      BX          R14
 00000016          ENDP ; 'DelayXms?T'


*** CODE SEGMENT '?PR?main?main':
   53: void main(void)
 00000000  B500      PUSH        {LR}
   56:  SysClkInit();
 00000002  F7FF      BL          SysClkInit?T  ; T=0x0001  (1)
 00000004  FFFD      BL          SysClkInit?T  ; T=0x0001  (2)
   57:  KEYBoardInit();
 00000006  F7FF      BL          KEYBoardInit?T  ; T=0x0001  (1)
 00000008  FFFB      BL          KEYBoardInit?T  ; T=0x0001  (2)
   59:  EN_LED4();
 0000000A  220F      MOV         R2,#0xF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -