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

📄 eint2.lst

📁 一个基于ARM单片机的红外解码的程序,红外时序通过串口发出,是红外解码的一个辅助助手,非常好用.
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.50a,  EINT2                                                                16/06/07  08:25:44  PAGE 1   


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

stmt  level    source

    1          /****************************************Copyright (c)**************************************************
    2          **                               Guangzou ZLG-MCU Development Co.,LTD.
    3          **                                      graduate school
    4          **                                 http://www.zlgmcu.com
    5          **
    6          **--------------File Info-------------------------------------------------------------------------------
    7          ** File name:           main.c
    8          ** Last modified Date:  2004-09-16
    9          ** Last Version:        1.0
   10          ** Descriptions:        The main() function example template
   11          **
   12          **------------------------------------------------------------------------------------------------------
   13          ** Created by:          Chenmingji
   14          ** Created date:        2004-09-16
   15          ** Version:             1.0
   16          ** Descriptions:        The original version
   17          **
   18          **------------------------------------------------------------------------------------------------------
   19          ** Modified by:         Chenxibing
   20          ** Modified date:       2005-01-20
   21          ** Version:
   22          ** Descriptions:        外部中断唤醒掉电CPU,同时产生中断。
   23          **
   24          ********************************************************************************************************/
   25          #include "config.h"
   26          
   27          //#define   BEEP    1 << 7      // P0.7控制BEEP
   28          
   29          extern uint8 RedStart;
   30          extern uint32   Reddata;
   31          extern uint8 KeyDown;
   32          uint16  RedTime;
   33          uint16  RedCnt;
   34          uint8   Outdata[5];
   35          uint8 const ASCII[]={'0','1','2','3','4','5','6','7','8','9'};
   36          /*
   37          *********************************************************************************************************
   38          ** 函数名称 :IRQ_Eint0()
   39          ** 函数功能 :外部中断0 EINT0服务程序
   40          ** 入口参数 :无。
   41          ** 出口参数 :无。
   42          *********************************************************************************************************
   43          */
   44          void  IRQ_Eint2 (void)  __irq
   45          {
   46   1          /*  等待外部中断信号恢复为高电平
   47   1              若信号保持为低电平,中断标志会一直置位。*/
   48   1          if ((EXTINT & 0x04) != 0)
   49   1          {
   50   2              EXTINT = 0x04;                  // 清除EINT0中断标志
   51   2              T1TCR  = 0x00;                  // 定时器计数器禁止计数
   52   2              RedTime = T1TC;                 // 保存两次下降沿这间的时间
   53   2              if((EXTPOLAR & 0x04) == 0x00)   // 这次为下降沿中断
   54   2              {
   55   3                  EXTPOLAR = 0x04;        // EINT2改为上升沿中断
   56   3              } else {
   57   3                  EXTPOLAR = 0x00;        // EINT2改为下降沿中断
   58   3              }
   59   2              T1TCR  = 0x03;                  // 复位
ARM COMPILER V2.50a,  EINT2                                                                16/06/07  08:25:44  PAGE 2   

   60   2              T1TCR  = 0x01;                  // 定时器计数器开始计数
   61   2              if((EXTPOLAR & 0x04) == 0x00)   // 这次为下降沿中断
   62   2              {
   63   3                  UART0_SendByte(13);
   64   3                  UART0_SendByte(10);
   65   3                  UART0_SendByte(0xb5);
   66   3                  UART0_SendByte(0xcd);
   67   3              } else {
   68   3                  UART0_SendByte(0xb8);
   69   3                  UART0_SendByte(0xdf);   
   70   3              }
   71   2      
   72   2              RedCnt = RedTime;
   73   2              if((RedCnt/1000) != 0)
   74   2              {
   75   3                  UART0_SendByte(ASCII[RedCnt/1000]);
   76   3              }
   77   2              if((RedCnt%1000/100) != 0)
   78   2              {
   79   3                  UART0_SendByte(ASCII[(RedCnt%1000/100)]);
   80   3              }
   81   2              UART0_SendByte('.');
   82   2              UART0_SendByte(ASCII[(RedCnt%100)/10]);
   83   2              
   84   2              UART0_SendByte(ASCII[RedCnt%10]);           
   85   2              //UART0_SendByte(ASCII[RedTime%10]);            
   86   2          }
   87   1          
   88   1          VICVectAddr = 0;                                // 向量中断结束
   89   1      }
   90          
   91          /*
   92          *********************************************************************************************************
   93          ** 函数名称 :main()
   94          ** 函数功能 :演示外部中断唤醒掉电的CPU
   95          ** 入口参数 :无。
   96          ** 出口参数 :无。
   97          *********************************************************************************************************
   98          */
   99          /*
  100          int main (void)
  101          {
  102              PINSEL0 = 0x00000000;               // 管脚连接GPIO
  103              PINSEL1 = 0x00000001;               // P0.16连接EINT0
  104              IO0DIR  = BEEP;                     // 设置BEEP控制口为输出,其余输入
  105              
  106              IRQEnable();                        // 使能IRQ中断
  107              
  108              // 外部中断0初始化 
  109              VICIntSelect   = 0x00000000;        // 设置所有中断分配为IRQ中断
  110              VICVectCntl5   = 0x20 | 16;         // 分配外部中断0到向量中断0
  111              VICVectAddr5   = (uint32)IRQ_Eint2; // 设置中断服务程序地址
  112              VICIntEnable   = 1 << 16;           // 使能EINT2中断
  113              //EXTWAKE        = 0x01;                // 外部中断0唤醒芯片
  114              EXTINT         = 0x04;              // 清除EINT0中断标志
  115              
  116              IO0SET = BEEP;
  117          
  118              while (1)   
  119              {
  120                  PCONP = 0x00;                   // 关闭定时器、RTC、UART等功能部件
  121                  PCON  = 0x02;                   // 系统进入掉电模式
  122                  
  123                  // 当系统被唤醒后,取反BEEP控制
  124                  if ((IO0SET & BEEP) == 0) IO0SET = BEEP;
  125                      else IO0CLR = BEEP;
ARM COMPILER V2.50a,  EINT2                                                                16/06/07  08:25:44  PAGE 3   

  126              }
  127          
  128              return (0); 
  129          }*/
  130          /********************************************************************************************************
             -*
  131          **                            End Of File
  132          ********************************************************************************************************/
ARM COMPILER V2.50a,  EINT2                                                                16/06/07  08:25:44  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (UART0_SendByte?T)
 EXTERN CODE32 (UART0_SendByte?A)
 EXTERN CODE32 (?C?SDIV?A)



*** PUBLICS:
 PUBLIC         IRQ_Eint2?A
 PUBLIC         RedTime
 PUBLIC         RedCnt
 PUBLIC         Outdata
 PUBLIC         ASCII



*** DATA SEGMENT '?DT0?EINT2':
 00000000          RedTime:
 00000000            DS          2
 00000002          RedCnt:
 00000002            DS          2
 00000004          Outdata:
 00000004            DS          5

*** DATA SEGMENT '?CON?EINT2':

⌨️ 快捷键说明

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