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

📄 main.lst

📁 ARM7 GPIO试验 型号LPC2131 LPC2132 LPC2134 LPC2136 LPC2138 LPC214X 各种方式输入输出演示 Keil原工程代码 本人亲自编写 详细注释 非常易
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.53,  Main                                                                  03/03/09  22:31:59  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE Main
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe Main.c THUMB DEBUG TABS(4) 

stmt  level    source

    1          //ARM7 实验1 GPIO 完成时间2009 2 25
    2          //程序由周立功修改而来
    3          //Adam
    4          
    5          
    6          #include <LPC213x.h>
    7          
    8          #define uint32 unsigned int
    9          
   10          #define BEEP     1 << 7 // P0.7控制蜂鸣器,低电平蜂鸣
   11          
   12          const uint32 LED1 = (1 << 18);  // P1.18控制LED1,低电平点亮 
   13          
   14                              /* LED8~LED1 8个LED分别由P1.25~P1.18控制 */
   15          const uint32 LEDS8 = (0xFF << 18);  // P1[25:18]控制LED8~LED1,低电平点亮 
   16          const uint32 KEY1 = 1 << 16;        // P0.16连接KEY1AD
   17          
   18          //*******************************************************************************************************
             -**
   19          //** 函数名称 :DelayNS()
   20          //** 函数功能 :长软件延时
   21          //** 入口参数 :dly 延时参数,值越大,延时越久
   22          //** 出口参数 :无
   23          //*******************************************************************************************************
             -**
   24          
   25          void DelayNS (uint32 dly)
   26          {
   27   1          uint32 i;
   28   1          
   29   1          for ( ; dly>0; dly--)
   30   1              for (i=0; i<50000; i++);
   31   1      }
   32          
   33          /* 流水灯花样,低电平点亮,注意调用时候用了取反操作 */
   34          const uint32 LED_TBL[] = {
   35              0x00, 0xFF,                                     // 全部熄灭后,再全部点亮
   36              0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮
   37              0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加
   38              0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减
   39              0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开
   40              0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81  // 从两边叠加后递减
   41          };
   42          
   43          int main (void)
   44          {
   45   1          unsigned int i=0,j=0;
   46   1      
   47   1          PINSEL0 = 0x00000000;       // 设置管脚连接GPIO
   48   1          IO0DIR  = BEEP;             // 设置BEEP控制口为输出 
   49   1          PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接GPIO
   50   1          IO1DIR  |= LED1;                // 设置LED1控制口为输出     
   51   1      
   52   1          //单个IO口控制实验
   53   1      
   54   1      
   55   1          for(i=0;i<3;i++)
   56   1          {
   57   2              IO0SET = BEEP;          // BEEP停止蜂鸣
ARM COMPILER V2.53,  Main                                                                  03/03/09  22:31:59  PAGE 2   

   58   2              IO1CLR = LED1;          // LED1点亮
   59   2              DelayNS(30);
   60   2              IO0CLR = BEEP;          // BEEP 蜂鸣
   61   2              IO1SET = LED1;          // LED1熄灭
   62   2              DelayNS(15);
   63   2          }
   64   1          IO0SET = BEEP;          // BEEP停止蜂鸣
   65   1      
   66   1          //算法流水灯
   67   1          IO1DIR  = LEDS8;            // 设置LED1控制口为输出
   68   1          for (j=0; j<2; j++)
   69   1          {
   70   2              for (i=0; i<8; i++)
   71   2              {   /* 流水灯花样显示 */
   72   3                  IO1SET = ~(LEDS8 & (7 << (18+i)));
   73   3                  DelayNS(10);
   74   3                  IO1CLR = LEDS8 & (7 << (18+i));
   75   3                  DelayNS(10);
   76   3              }
   77   2      
   78   2          }
   79   1      
   80   1          //数据流水灯
   81   1          for (j=0; j<2; j++)
   82   1          {
   83   2              for (i=0; i<42; i++)
   84   2              {   /* 流水灯花样显示 */
   85   3                  IO1SET = ~((LED_TBL[i]) << 18);
   86   3                  DelayNS(10);
   87   3                  IO1CLR = ((LED_TBL[i]) << 18);
   88   3                  DelayNS(10);
   89   3              }
   90   2          }
   91   1      
   92   1          //IO口取反实验
   93   1          for (j=0; j<4; j++)
   94   1          {
   95   2              if ((IO1SET&LED1)==0)
   96   2                  IO1SET=LED1;
   97   2              else
   98   2                  IO1CLR=LED1;
   99   2              DelayNS(40);
  100   2      
  101   2          }
  102   1      
  103   1          //特殊方式控制IO PHILIPS不推荐
  104   1          for (j=0; j<10; j++)
  105   1          {
  106   2              IO1PIN = 0xA5 << 18;        // 点亮LED1,LED3,LED5,LED7,其余熄灭
  107   2              DelayNS(50);
  108   2              IO1PIN = 0x5A << 18;        // 点亮LED2,LED4,LED6,LED8,其余熄灭
  109   2              DelayNS(10);
  110   2          }
  111   1      
  112   1          //特殊方式控制IO 配合读取IO口寄存器的值 PHILIPS不推荐
  113   1          for (j=0; j<30; j++)
  114   1          {
  115   2              IO1PIN = ~IO1SET;       // 点亮LED1,LED3,LED5,LED7,其余熄灭
  116   2              DelayNS(10);
  117   2          }
  118   1          
  119   1          //按键实验 按下蜂鸣器响
  120   1          while (1)
  121   1          {
  122   2              if ((IO0PIN & KEY1) == 0)   IO0CLR = BEEP;  // 如果KEY1按下,蜂鸣器鸣叫
  123   2                  else    IO0SET = BEEP;                  // 松开则停止蜂鸣 
ARM COMPILER V2.53,  Main                                                                  03/03/09  22:31:59  PAGE 3   

  124   2          }
  125   1      
  126   1      
  127   1          return 0;
  128   1      }
ARM COMPILER V2.53,  Main                                                                  03/03/09  22:31:59  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         DelayNS?T
 PUBLIC         main
 PUBLIC         LED1
 PUBLIC         LEDS8
 PUBLIC         KEY1
 PUBLIC         LED_TBL



*** DATA SEGMENT '?CON?Main':
 00000000          LED1:
 00000000           BEGIN_INIT
 00000000  00040000  DD          0x40000
 00000004           END_INIT
 00000004          LEDS8:
 00000004           BEGIN_INIT
 00000004  03FC0000  DD          0x3FC0000
 00000008           END_INIT
 00000008          KEY1:
 00000008           BEGIN_INIT
 00000008  00010000  DD          0x10000
 0000000C           END_INIT
 0000000C          LED_TBL:
 0000000C           BEGIN_INIT
 0000000C  00000000  DD          0x0
 00000010  000000FF  DD          0xFF
 00000014  00000001  DD          0x1
 00000018  00000002  DD          0x2
 0000001C  00000004  DD          0x4
 00000020  00000008  DD          0x8
 00000024  00000010  DD          0x10
 00000028  00000020  DD          0x20
 0000002C  00000040  DD          0x40
 00000030  00000080  DD          0x80
 00000034  00000001  DD          0x1
 00000038  00000003  DD          0x3
 0000003C  00000007  DD          0x7
 00000040  0000000F  DD          0xF
 00000044  0000001F  DD          0x1F
 00000048  0000003F  DD          0x3F
 0000004C  0000007F  DD          0x7F
 00000050  000000FF  DD          0xFF
 00000054  000000FF  DD          0xFF
 00000058  0000007F  DD          0x7F
 0000005C  0000003F  DD          0x3F
 00000060  0000001F  DD          0x1F
 00000064  0000000F  DD          0xF
 00000068  00000007  DD          0x7
 0000006C  00000003  DD          0x3
 00000070  00000001  DD          0x1
 00000074  00000081  DD          0x81
 00000078  00000042  DD          0x42
 0000007C  00000024  DD          0x24
 00000080  00000018  DD          0x18
 00000084  00000018  DD          0x18
 00000088  00000024  DD          0x24
 0000008C  00000042  DD          0x42
 00000090  00000081  DD          0x81
 00000094  00000081  DD          0x81
 00000098  000000C3  DD          0xC3
 0000009C  000000E7  DD          0xE7
ARM COMPILER V2.53,  Main                                                                  03/03/09  22:31:59  PAGE 5   

 000000A0  000000FF  DD          0xFF
 000000A4  000000FF  DD          0xFF
 000000A8  000000E7  DD          0xE7
 000000AC  000000C3  DD          0xC3
 000000B0  00000081  DD          0x81
 000000B4           END_INIT



*** CODE SEGMENT '?PR?DelayNS?T?Main':
   25: void DelayNS (uint32 dly)
 00000000  ---- Variable 'dly' assigned to Register 'R0' ----
   26: {
 00000000            ; SCOPE-START
   29:     for ( ; dly>0; dly--)
 00000000  E006      B           L_3  ; T=0x00000010
   30:         for (i=0; i<50000; i++);
 00000002          L_10:
 00000002  2100      MOV         R1,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
 00000004          L_6:
 00000004  3101      ADD         R1,#0x1
 00000006  1C0A      MOV         R2,R1 ; i
 00000008  4800      LDR         R3,=0xC350
 0000000A  429A      CMP         R2,R3 ; i
 0000000C  D3FA      BCC         L_6  ; T=0x00000004
 0000000E  3801      SUB         R0,#0x1
 00000010          L_3:
 00000010  1C01      MOV         R1,R0 ; dly
 00000012  2900      CMP         R1,#0x0 ; dly
 00000014  D8F5      BHI         L_10  ; T=0x00000002
 00000016            ; SCOPE-END
   31: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'DelayNS?T'


*** CODE SEGMENT '?PR?main?Main':
   43: int main (void)
 00000000  B500      PUSH        {LR}
   44: {
 00000002            ; SCOPE-START
   45:     unsigned int i=0,j=0;
 00000002  2000      MOV         R0,#0x0
 00000004  1C05      MOV         R5,R0 ; i
 00000006  ---- Variable 'i' assigned to Register 'R5' ----
 00000006  1C04      MOV         R4,R0 ; j
 00000008  ---- Variable 'j' assigned to Register 'R4' ----
   47:     PINSEL0 = 0x00000000;       // 设置管脚连接GPIO
 00000008  2200      MOV         R2,#0x0

⌨️ 快捷键说明

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