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

📄 ir.lst

📁 C8051F.rar
💻 LST
字号:
C51 COMPILER V7.05   IR                                                                    02/16/2006 21:27:56 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN IR.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe IR.C DB OE

stmt level    source

   1          //参考程序B:     C程序   //IR.C
   2          //程序说明:此程序接收红外发射过来的数据解码后由CPU读取并显示在LED数码管上.
   3          #include <c8051f020.h>          /*SFR定义*/
   4          #include <intrins.h>
   5          #define PORTA           0x8000     /*8255的A口*/
   6          #define PORTB           0x8001     /*8255的B口*/
   7          #define PORTC           0x8002     /*8255的C口*/
   8          #define PORTCON         0x8003     /*8255的控制口*/
   9          #define DataPort        0x8400          /*红外数据接收口*/
  10          void PORT_Init (void);  //端口初始化
  11          void displayled(void) ;//显示1位数据
  12          sbit BUZ = P3^5;
  13          unsigned char ReadFlag;                 /*读红外数据标志*/
  14          unsigned char ReadData,IRData;
  15          unsigned char WE[6]={1,2,4,8,0x10,0x20};   //位选
  16          void sleep_ms(unsigned int count)//延时
  17          {
  18   1        unsigned char ii,jj;
  19   1        for(ii=0;ii<count;ii++)
  20   1          {
  21   2            for(jj=0;jj<250;jj++)
  22   2                _nop_();                      
  23   2          }   
  24   1      }
  25          void INITEXINT67(void)
  26          {
  27   1              EIE2 |= 0x10;                   /*允许外部中断6*/
  28   1      }
  29          void INT6_ISR(void) interrupt 18
  30          {
  31   1              P3IF &= ~0x40;                  /*清外部中断6标志*/
  32   1              ReadFlag = 0x01;                /*置允许读标志*/
  33   1      }
  34          void main (void) {
  35   1              unsigned char xdata *idata Pointir;
  36   1              WDTCN = 0xde;                           /*无效看门狗*/
  37   1              WDTCN = 0xad;
  38   1              PORT_Init();                                                    /*输入/输出口初始化*/
  39   1              INITEXINT67();                                                  /*初始化外部中断6*/
  40   1              EA=1;                                                                   /*开总中断*/
  41   1              ReadFlag=0;
  42   1              while(1){
  43   2                      while(ReadFlag==0x00);                          /*是否允许读红外数据*/
  44   2                      Pointir=DataPort;
  45   2                      ReadData=*Pointir;                                      /*读红外数据*/
  46   2                      if((ReadData&0x80)==0x00) continue;     /*是否接到红外数据*/
  47   2                      IRData = (~ReadData )&0x0f;                     /*保存收到的红外数据*/
  48   2                      BUZ = 0;                                                        /*蜂鸣器响*/
  49   2                      sleep_ms(250);
  50   2                      BUZ = 1;                                                        /*蜂鸣器灭*/
  51   2                      displayled() ;//显示1位数据
  52   2                      do{
  53   3                              ReadData = *Pointir;
  54   3                      }while((ReadData&0x80)==0x80);     /*上次红外中断是否结束*/
  55   2                      _nop_();
C51 COMPILER V7.05   IR                                                                    02/16/2006 21:27:56 PAGE 2   

  56   2              }
  57   1              _nop_();
  58   1      }
  59          void PORT_Init (void)
  60          {
  61   1         EMI0CF |= 0x2c;      /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高*/
  62   1      /*低脉宽占1个SYSCLK周期*/
  63   1         EMI0TC |= 0x6d;              /*地址建立/保持时间占1个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
  64   1         P74OUT=0x3f;         /*P7为漏极开路,P4,P5,P6为推拉方式*/
  65   1      }
  66          void displayled(void)
  67          {unsigned int i;
  68   1      unsigned char  k;
  69   1      char j;
  70   1      unsigned char xdata * Pointm;
  71   1      unsigned char code F7SEG[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
  72   1      0x39,0x5e,0x79,0x71};
  73   1              Pointm=PORTCON;
  74   1              *Pointm=0x80;           //8255初始化,设定B口输出,C口输出,A口不用
  75   1      while(1)                //循环显示
  76   1          {
  77   2          k=F7SEG[IRData];             // 查表,得到字形码数值存放在变量K中
  78   2              Pointm=PORTB;          // B口存放字位码
  79   2              *Pointm=0x01;          //从左边第一位数码管开始显示数字
  80   2              Pointm=PORTC;          //C口存放字形码
  81   2          *Pointm=k;                 //显示K中存放的字形码
  82   2         }
  83   1      }
*** WARNING C280 IN LINE 67 OF IR.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 69 OF IR.C: 'j': unreferenced local variable
  84           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    150    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       3
   IDATA SIZE       =   ----       2
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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