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

📄 main.lst

📁 一个基于ARM单片机的红外解码的程序,红外时序通过串口发出,是红外解码的一个辅助助手,非常好用.
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.50a,  main                                                                 16/06/07  08:25:44  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          //本程序针对引导码:9ms低->4.5ms高
    2          //连发码:9ms低->2.25ms高
    3          //0:0.565低->0.56高
    4          //1:0.565低->1.125高
    5          //数据位为32位,即4个字节
    6          //的编码遥控器使用
    7          //控制器芯片:NEC公司芯片6122/6121
    8          //使用ARM资源:1个外部中断(本程序中使用EINT2),1个定时器,不用开中断(本程序中使用定时器1)
    9          //通过串口发送解码后的数据,波特率:115200
   10          //2007年5月6号
   11          
   12          #include "config.h"
   13          #include "irquart0.h"
   14          
   15          
   16          uint32  Reddata;
   17          uint8 KeyDown;
   18          uint8 Redinfo;
   19          void main(void)
   20          {
   21   1          UARTMODE set;
   22   1      
   23   1          set.datab = 8;
   24   1          set.stopb = 1;
   25   1          set.parity = 0;
   26   1      
   27   1          rcv_new = 0;
   28   1      
   29   1          PINSEL0 |= 0x05;                      //设置IO连接到UART0
   30   1          PINSEL0=(PINSEL0&(~(3<<14)))|(3<<14);
   31   1      
   32   1      
   33   1          UART0_Init(115200,set);
   34   1          //U0FCR = 0x81; //接收器触发点为8个字符
   35   1          U0FCR = 0x01;   //接收器触发点为1个字符
   36   1      
   37   1          U0IER = 0x01;   //接收中断开,发送中断关
   38   1      
   39   1          //串口0中断设置
   40   1          VICVectCntl0 = 0x20|0x06;
   41   1          VICVectAddr0 = (uint32)IRQ_UART0;
   42   1          VICIntEnable = 1<<0x06;
   43   1      
   44   1          /* 外部中断2初始化 */
   45   1      
   46   1          VICVectCntl5   = 0x20 | 16;         // 分配外部中断0到向量中断0
   47   1          VICVectAddr5   = (uint32)IRQ_Eint2; // 设置中断服务程序地址
   48   1          VICIntEnable   = 1 << 16;           // 使能EINT2中断
   49   1          //EXTWAKE        = 0x01;                // 外部中断0唤醒芯片
   50   1          EXTINT         = 0x0f;              // 清除EINT所有中断标志
   51   1          EXTMODE        = 0x04;              // EINT2为下降沿中断
   52   1      
   53   1      //定时器1中断设置
   54   1          //T1TC  = 0;                        
   55   1          T1PR  = 0;
   56   1          T1MCR = 0x00;                       //禁止定时器1所有相关中断
   57   1          //T1MR0 = Fpclk/1580;               //中断时间设置 中断时间设置为600ms
   58   1          T1PR = Fpclk/100000;                //预分频寄存器定时时间为0.01ms
   59   1          T1TCR = 0x00;                       //定时器计数器禁止计数
ARM COMPILER V2.50a,  main                                                                 16/06/07  08:25:44  PAGE 2   

   60   1      
   61   1          //定时器1中断设置
   62   1          //VICVectCntl1 = 0x20|0x05;
   63   1          //VICVectAddr1 = (uint32)IRQ_Timer1;
   64   1          //VICIntEnable = 1<<0x05;
   65   1      
   66   1          VICIntSelect   = 0x00000000;        // 设置所有中断分配为IRQ中断
   67   1      
   68   1          KeyDown=0;
   69   1          UART0_SendByte('K');
   70   1          while(1)
   71   1          {
   72   2              if(KeyDown == 1)
   73   2              {
   74   3                  Redinfo = Reddata;          //用户码
   75   3                  UART0_SendByte(Redinfo);
   76   3                  Reddata>>=8;                
   77   3                  Redinfo = Reddata;          //用户反码
   78   3                  UART0_SendByte(Redinfo);
   79   3                  Reddata>>=8;                
   80   3                  Redinfo = Reddata;          //键值数据字节
   81   3                  UART0_SendByte(Redinfo);
   82   3                  Reddata>>=8;                
   83   3                  Redinfo = Reddata;          //键值数据反字节
   84   3                  UART0_SendByte(Redinfo);
   85   3                  KeyDown=0;
   86   3              }
   87   2          }
   88   1      }
ARM COMPILER V2.50a,  main                                                                 16/06/07  08:25:44  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE32 (IRQ_Eint2?A)
 EXTERN CODE16 (UART0_SendByte?T)
 EXTERN DATA (rcv_new)
 EXTERN CODE32 (IRQ_UART0?A)
 EXTERN CODE16 (UART0_Init?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         main
 PUBLIC         Reddata
 PUBLIC         KeyDown
 PUBLIC         Redinfo



*** DATA SEGMENT '?DT0?main':
 00000000          Reddata:
 00000000            DS          4
 00000004          KeyDown:
 00000004            DS          1
 00000005          Redinfo:
 00000005            DS          1



*** CODE SEGMENT '?PR?main?main':
   19: void main(void)
 00000000  B500      PUSH        {LR}
 00000002  B081      SUB         R13,#0x4
   20: {
 00000004            ; SCOPE-START
   23:     set.datab = 8;
 00000004  2108      MOV         R1,#0x8
 00000006  A800      ADD         R0,R13,#0x0
 00000008  7001      STRB        R1,[R0,#0x0] ; set
   24:     set.stopb = 1;
 0000000A  2201      MOV         R2,#0x1
 0000000C  2101      MOV         R1,#0x1
 0000000E  4469      ADD         R1,R13
 00000010  700A      STRB        R2,[R1,#0x0] ; set+1
   25:     set.parity = 0;
 00000012  2200      MOV         R2,#0x0
 00000014  2102      MOV         R1,#0x2
 00000016  4469      ADD         R1,R13
 00000018  700A      STRB        R2,[R1,#0x0] ; set+2
   27:     rcv_new = 0;
 0000001A  4800      LDR         R1,=rcv_new ; rcv_new
 0000001C  700A      STRB        R2,[R1,#0x0] ; rcv_new
   29:     PINSEL0 |= 0x05;                      //设置IO连接到UART0
 0000001E  2305      MOV         R3,#0x5
 00000020  4800      LDR         R1,=0xE002C000
 00000022  680A      LDR         R2,[R1,#0x0]
 00000024  431A      ORR         R2,R3
 00000026  600A      STR         R2,[R1,#0x0]
   30:     PINSEL0=(PINSEL0&(~(3<<14)))|(3<<14);
 00000028  4800      LDR         R1,=0xE002C000
 0000002A  680A      LDR         R2,[R1,#0x0]
 0000002C  4800      LDR         R1,=0xC000
 0000002E  438A      BIC         R2,R1
 00000030  430A      ORR         R2,R1
 00000032  4800      LDR         R1,=0xE002C000
 00000034  600A      STR         R2,[R1,#0x0]
   33:     UART0_Init(115200,set);
 00000036  B081      SUB         R13,#0x4
 00000038  4669      MOV         R1,R13
 0000003A  2304      MOV         R3,#0x4
ARM COMPILER V2.50a,  main                                                                 16/06/07  08:25:44  PAGE 4   

⌨️ 快捷键说明

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