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

📄 main.lst

📁 学习用
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.50a,  main                                                                 04/02/06  11:55:52  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4) 

stmt  level    source

    1          #include <LPC213x.H>    // Philips Peripheral Registers
    2          #include <LPC213xDEF.H> //ARM菜鸟HotPower创建定义文件
    3          #include "main.h"
    4          /*----------------------------------------------------
    5          文   件   名:  LPC213XDEF.H
    6          创   建   人:  ARM菜鸟  HotPower@126.com
    7          创 建 日  期:  2005.7.23   0:38
    8          最近修改日期:  2006.1.11   2:38
    9          创 建 地 点 : 西安大雁塔村队部
   10          说       明 : 已经过LPC2131开发板硬件调试
   11          实 验 项 目 : 串口实验
   12          ------------------------------------------------------*/
   13          
   14          
   15          //函数声明
   16          void UART0_Init(void);
   17          void UART0_SendByte(uint8 dat);
   18          void DelayNS (uint32 dly);
   19          
   20          
   21          
   22          
   23          
   24          void DelayNS (uint32 dly)
   25          {
   26   1          uint32 i;
   27   1          
   28   1          for ( ; dly>0; dly--)
   29   1              for (i=0; i<50000; i++);
   30   1      }
   31          
   32          
   33          /*
   34          *********************************************************************************************************
   35          ** 函数名称 :UART0_Init()
   36          ** 函数功能 :串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率115200。
   37          ** 入口参数 :无
   38          ** 出口参数 :无
   39          *********************************************************************************************************
   40          */
   41          void UART0_Init(void)
   42          {
   43   1      uint16 Fdiv;
   44   1        PINSEL0 |= (P0_0_TXD0 << P0_0_PINSEL) | (P0_1_RXD0 << P0_1_PINSEL); //设置I/O连接到UART0
   45   1        U0LCR = 0x83;                     // DLAB=1,允许设置波特率
   46   1        Fdiv  = (Fpclk / 16) / UART_BPS;  // 设置波特率
   47   1      //  U0DLM = Fdiv / 256;
   48   1      //  U0DLL = Fdiv % 256;
   49   1        U0DLM = 0;
   50   1        U0DLL = 94;//95;//96;//98;//97;
   51   1        U0LCR = 0x03;
   52   1      }
   53          
   54          /*
   55          *********************************************************************************************************
   56          ** 函数名称 :UART0_SendByte()
   57          ** 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。
   58          ** 入口参数 :dat   要发送的数据
   59          ** 出口参数 :无
ARM COMPILER V2.50a,  main                                                                 04/02/06  11:55:52  PAGE 2   

   60          *********************************************************************************************************
   61          */
   62          void UART0_SendByte (uint8 dat)
   63          {
   64   1          U0THR = dat;
   65   1          while ((U0LSR & 0x40) == 0);        // 等待数据发送完毕
   66   1      }
   67          
   68          
   69          void KeyInit(void)
   70          {
   71   1        IO0DIR &=~((1 << KEY1)        // 设置KEY1为输入   
   72   1                |  (1 << KEY2)        // 设置KEY2为输入  
   73   1                |  (1 << KEY3)        // 设置KEY3为输入  
   74   1                |  (1 << KEY4)        // 设置KEY4为输入  
   75   1                |  (1 << KEY5)        // 设置KEY5为输入  
   76   1                |  (1 << KEY6));      // 设置KEY6为输入  
   77   1      }
   78          
   79          
   80           /*
   81          *********************************************************************************************************
   82          ** 函数名称 :main()
   83          ** 函数功能 :用P0.7控制BEEP,让BEEP鸣叫。
   84          ** 调试说明 :需将跳线JP5和LED短接。
   85          *********************************************************************************************************
   86          */
   87          int main (void)
   88          {
   89   1      unsigned int i;
   90   1        PINSEL0 = 0x00000000;     // 设置管脚连接GPIO
   91   1        PINSEL1 = 0x00000000;     // 设置管脚连接GPIO
   92   1        IO0DIR  = 0x00000000;     // 设置P0口为输入
   93   1        IO1DIR  = 0x00000000;     // 设置P1口为输入
   94   1        UART0_Init();
   95   1        KeyInit();
   96   1        while (1)
   97   1        {
   98   2          if (!(IO0PIN & (1 << KEY1))) {//有KEY1键压下(P0.16=0 低电平)
   99   3            for(i = 0; i < 256; i ++) {
  100   4              UART0_SendByte(0x55);//发送256个0x55
  101   4              DelayNS(1);
  102   4            }
  103   3          }
  104   2          else if (!(IO0PIN & (1 << KEY2))) {//有KEY2键压下(P0.17=0 低电平)
  105   3            for(i = 0; i < 256; i ++) {
  106   4              UART0_SendByte(0xaa);//发送256个0xaa
  107   4              DelayNS(1);
  108   4            }
  109   3          }
  110   2          else if (!(IO0PIN & (1 << KEY3))) {//有KEY3键压下(P0.18=0 低电平)
  111   3            for(i = 0; i < 256; i ++) {
  112   4              UART0_SendByte(0x00);//发送256个0x00
  113   4              DelayNS(1);
  114   4            }
  115   3          }
  116   2          else if (!(IO0PIN & (1 << KEY4))) {//有KEY4键压下(P0.19=0 低电平)
  117   3            for(i = 0; i < 256; i ++) {
  118   4              UART0_SendByte(0x11);//发送256个0x11
  119   4              DelayNS(1);
  120   4            }
  121   3          }
  122   2          else if (!(IO0PIN & (1 << KEY5))) {//有KEY5键压下(P0.20=0 低电平)
  123   3            for(i = 0; i < 256; i ++) {
  124   4              UART0_SendByte(0x13);//发送256个0x13
  125   4              DelayNS(1);
ARM COMPILER V2.50a,  main                                                                 04/02/06  11:55:52  PAGE 3   

  126   4            }
  127   3          }
  128   2          else if (!(IO0PIN & (1 << KEY6))) {//有KEY6键压下(P0.21=0 低电平)
  129   3            for(i = 0; i < 256; i ++) {
  130   4              UART0_SendByte(i);//发送256个数据0x00~0xff
  131   4              DelayNS(1);
  132   4            }
  133   3          }
  134   2        }         
  135   1        return 0;
  136   1      }
ARM COMPILER V2.50a,  main                                                                 04/02/06  11:55:52  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         UART0_Init?T
 PUBLIC         UART0_SendByte?T
 PUBLIC         DelayNS?T
 PUBLIC         KeyInit?T
 PUBLIC         main



*** CODE SEGMENT '?PR?DelayNS?T?main':
   24: void DelayNS (uint32 dly)
 00000000  ---- Variable 'dly' assigned to Register 'R0' ----
   25: {
 00000000            ; SCOPE-START
   28:     for ( ; dly>0; dly--)
 00000000  E006      B           L_3  ; T=0x00000010
   29:         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
   30: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'DelayNS?T'


*** CODE SEGMENT '?PR?UART0_Init?T?main':
   42: {
 00000000            ; SCOPE-START
   44:   PINSEL0 |= (P0_0_TXD0 << P0_0_PINSEL) | (P0_1_RXD0 << P0_1_PINSEL); //设置I/O连接到UART0
 00000000  2205      MOV         R2,#0x5
 00000002  4800      LDR         R0,=0xE002C000
 00000004  6801      LDR         R1,[R0,#0x0]
 00000006  4311      ORR         R1,R2
 00000008  6001      STR         R1,[R0,#0x0]
   45:   U0LCR = 0x83;                     // DLAB=1,允许设置波特率
 0000000A  2183      MOV         R1,#0x83
 0000000C  4800      LDR         R0,=0xE000C00C
 0000000E  7001      STRB        R1,[R0,#0x0]
   49:   U0DLM = 0;
 00000010  2100      MOV         R1,#0x0
 00000012  4800      LDR         R0,=0xE000C004
 00000014  7001      STRB        R1,[R0,#0x0]
   50:   U0DLL = 94;//95;//96;//98;//97;
 00000016  215E      MOV         R1,#0x5E
 00000018  4800      LDR         R0,=0xE000C000
 0000001A  7001      STRB        R1,[R0,#0x0]
   51:   U0LCR = 0x03;
 0000001C  2103      MOV         R1,#0x3
 0000001E  4800      LDR         R0,=0xE000C00C
 00000020  7001      STRB        R1,[R0,#0x0]
 00000022            ; SCOPE-END
   52: }
ARM COMPILER V2.50a,  main                                                                 04/02/06  11:55:52  PAGE 5   

 00000022  4770      BX          R14
 00000024          ENDP ; 'UART0_Init?T'


*** CODE SEGMENT '?PR?UART0_SendByte?T?main':
   62: void UART0_SendByte (uint8 dat)
 00000000  1C02      MOV         R2,R0 ; dat
 00000002  ---- Variable 'dat' assigned to Register 'R2' ----
   64:     U0THR = dat;

⌨️ 快捷键说明

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