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

📄 ir.lst

📁 C8051F
💻 LST
字号:
C51 COMPILER V7.20   IR                                                                    10/18/2005 11:10:05 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN IR.OBJ
COMPILER INVOKED BY: c:\KEIL\C51\BIN\C51.exe IR.c DB OE

line level    source

   1          //-----------------------------------------------------------------------------
   2          // 版权归新华龙电子公司所有
   3          //-----------------------------------------------------------------------------
   4          //
   5          //文件名:      IR.c
   6          //
   7          //编写人:      LC
   8          //
   9          //编写时间:2005/03/10
  10          //
  11          //目标器件: C8051F02x
  12          //
  13          //编译工具: Silicon Laboratories IDE
  14          //
  15          //程序说明:     此程序接收红外发射过来的数据,接收解码后由CPU读取,程序运行前将S2
  16          //                      都拨到ON.J17短接第一和第二脚。  
  17          
  18          
  19          //------------------------------------------------------------------------------------
  20          // 头文件包含
  21          //------------------------------------------------------------------------------------
  22          #include <c8051f020.h>          /*SFR定义*/
  23          #include <intrins.h>
  24          
  25          //------------------------------------------------------------------------------------
  26          // Global CONSTANTS
  27          //------------------------------------------------------------------------------------
  28          #define DataPort        0x8400          /*红外数据接收口*/
  29          
  30          sbit BUZ = P3^5;
  31          unsigned char ReadFlag;                 /*读红外数据标志*/
  32          
  33          
  34          //------------------------------------------------------------------------------------
  35          // Function PROTOTYPES
  36          //------------------------------------------------------------------------------------
  37          void PORT_Init (void);
  38          
  39          /***************************************************************************************
  40          函数名称:      void sleep_ms(WORD count)
  41          功能描述:      延时
  42          输入:          WORD count(所要延时的长度)
  43          输出:          无
  44          全局变量:      无
  45          调用模块:      _nop_()
  46          ***************************************************************************************/
  47          void sleep_ms(unsigned int count)
  48          {
  49   1        unsigned char ii,jj;
  50   1        for(ii=0;ii<count;ii++)
  51   1          {
  52   2            for(jj=0;jj<250;jj++)
  53   2                _nop_();                      
  54   2          }   
  55   1      }
C51 COMPILER V7.20   IR                                                                    10/18/2005 11:10:05 PAGE 2   

  56          
  57          
  58          /***************************************************************************************
  59          函数名称:      void INITEXINT67(void)
  60          功能描述:      初始化外部中断6
  61          输入:          无
  62          输出:          无
  63          全局变量:      EIE2
  64          调用模块:      无
  65          ***************************************************************************************/
  66          void INITEXINT67(void)
  67          {
  68   1              EIE2 |= 0x10;                   /*允许外部中断6*/
  69   1      }
  70          
  71          
  72          /***************************************************************************************
  73          函数名称:      void INT6_ISR(void) interrupt 18
  74          功能描述:      外部中断6的中断服务程序
  75          输入:          无
  76          输出:          无
  77          全局变量:      P3IF
  78                                  ReadFlag:       读取红外数据标志
  79          调用模块:      无
  80          ***************************************************************************************/
  81          void INT6_ISR(void) interrupt 18
  82          {
  83   1              P3IF &= ~0x40;                  /*清外部中断6标志*/
  84   1              ReadFlag = 0x01;                /*置允许读标志*/
  85   1      }
  86          
  87          
  88          //------------------------------------------------------------------------------------
  89          // MAIN Routine
  90          //------------------------------------------------------------------------------------
  91          void main (void) {
  92   1              unsigned char ReadData,IRData;
  93   1              unsigned char xdata *idata Pointir;
  94   1              /*无效看门狗*/
  95   1              WDTCN = 0xde;
  96   1              WDTCN = 0xad;
  97   1              PORT_Init();                                                    /*输入/输出口初始化*/
  98   1              INITEXINT67();                                                  /*初始化外部中断6*/
  99   1              EA=1;                                                                   /*开总中断*/
 100   1              ReadFlag=0;
 101   1              while(1){
 102   2                      while(ReadFlag==0x00);                          /*是否允许读红外数据*/
 103   2                      Pointir=DataPort;
 104   2                      ReadData=*Pointir;                                      /*读红外数据*/
 105   2                      if((ReadData&0x80)==0x00) continue;     /*是否接到红外数据*/
 106   2                      IRData = ReadData &0x0f;                        /*保存收到的红外数据*/
 107   2                      BUZ = 0;                                                        /*蜂鸣器响*/
 108   2                      sleep_ms(250);
 109   2                      BUZ = 1;                                                        /*蜂鸣器灭*/
 110   2                      _nop_();
 111   2                      do{
 112   3                              ReadData = *Pointir;
 113   3                      }while((ReadData&0x80)==0x80);          /*上次红外中断是否结束*/
 114   2                      _nop_();
 115   2              }
 116   1              _nop_();
 117   1      }
C51 COMPILER V7.20   IR                                                                    10/18/2005 11:10:05 PAGE 3   

 118          
 119          
 120          /***************************************************************************************
 121          函数名称:      void PORT_Init(void)
 122          功能描述:      配置交叉开关和输入/输出口
 123          输入:          无
 124          输出:          无
 125          全局变量:      XBR2,P74OUT,EMI0CF,EMI0TC,P3MDOUT
 126          调用模块:      无
 127          ***************************************************************************************/
 128          //------------------------------------------------------------------------------------
 129          // PORT_Init
 130          //------------------------------------------------------------------------------------
 131          //
 132          // Configure the Crossbar and GPIO ports
 133          //
 134          void PORT_Init (void)
 135          {
 136   1         XBR2    = 0x40;      /*使能交叉开关和弱上拉*/
 137   1         P74OUT |= 0x0f;      /*使能P4~P7推挽输出*/
 138   1         EMI0CF |= 0x2c;              /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/
 139   1         EMI0TC |= 0x6c;              /*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
 140   1         P3MDOUT |= 0x00;     /*使能P3.5推挽输出*/
 141   1      }
 142          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    121    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       1
   IDATA SIZE       =   ----       2
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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