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

📄 ht1621.lst

📁 stc15单片机测试程序V1.0版
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.01   HT1621                                                                05/20/2012 12:25:30 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE HT1621
OBJECT MODULE PLACED IN .\list\HT1621.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HT1621.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\HT1621.lst) OBJECT(.\list\H
                    -T1621.obj)

line level    source

   1          
   2          /*------------------------------------------------------------------*/
   3          /* --- STC MCU International Limited -------------------------------*/
   4          /* --- STC 1T Series MCU RC Demo -----------------------------------*/
   5          /* --- Mobile: (86)13922805190 -------------------------------------*/
   6          /* --- Fax: 86-755-82944243 ----------------------------------------*/
   7          /* --- Tel: 86-755-82948412 ----------------------------------------*/
   8          /* --- Web: www.STCMCU.com -----------------------------------------*/
   9          /* If you want to use the program or the program referenced in the  */
  10          /* article, please specify in which data and procedures from STC    */
  11          /*------------------------------------------------------------------*/
  12          
  13          
  14          /*************  功能说明        **************
  15          
  16          红外接收程序。适用于市场上用量最大的HT6121/6122及其兼容IC的编码。
  17          
  18          对于用户码与User_code定义不同的遥控器,程序会将用户码一起从串口输出。
  19          
  20          使用模拟串口发送监控显示编码,显示内容为ASCII码和中文。
  21          
  22          本接收程序基于状态机的方式,占用CPU的时间非常少。
  23          
  24          HEX文件在本目录的/list里面。
  25          
  26          ******************************************/
  27          
  28          
  29          /*************  用户系统配置    **************/
  30          
  31          #define MAIN_Fosc               12000000L       //定义主时钟, 模拟串口和红外接收会自动适应。5~36MHZ
  32          
  33          #define D_TIMER0                125                     //选择定时器时间, us, 红外接收要求在60us~250us之间
  34          
  35          #define User_code               0xFD02          //定义红外接收用户码
  36          
  37          
  38          /*************  以下宏定义用户请勿修改  **************/
  39          #include        "reg51.H"
  40          #define uchar   unsigned char
  41          #define uint    unsigned int
  42          
  43          #define freq_base                       (MAIN_Fosc / 1200)
  44          #define Timer0_Reload           (65536 - (D_TIMER0 * freq_base / 10000))
  45          
  46          
  47          
  48          
  49          /*************  本地常量声明    **************/
  50          
  51          
  52          
  53          /*************  本地变量声明    **************/
  54          sbit    P_TXD1 = P3^1;          //定义模拟串口发送脚,打印信息用
C51 COMPILER V9.01   HT1621                                                                05/20/2012 12:25:30 PAGE 2   

  55          sbit    P_IR_RX = P1^0;         //定义红外接收输入端口
  56          
  57          bit             P_IR_RX_temp;           //Last sample
  58          bit             B_IR_Sync;                      //已收到同步标志
  59          uchar   IR_SampleCnt;           //采样计数
  60          uchar   IR_BitCnt;                      //编码位数
  61          uchar   IR_UserH;                       //用户码(地址)高字节
  62          uchar   IR_UserL;                       //用户码(地址)低字节
  63          uchar   IR_data;                        //数据原码
  64          uchar   IR_DataShit;            //数据反码
  65          
  66          bit             B_IrUserErr;            //User code error flag
  67          bit             B_IR_Press;                     //Key press flag,include repeat key.
  68          uchar   IR_code;                        //IR code       红外键码
  69          
  70          
  71          /*************  本地函数声明    **************/
  72          void    Tx1Send(uchar dat);
  73          uchar   HEX2ASCII(uchar dat);
  74          void    InitTimer(void);
  75          void    PrintString(unsigned char code *puts);
  76          
  77          
  78          
  79          /*************  外部函数和变量声明 *****************/
  80          
  81          
  82          
  83          /********************* 主函数 *************************/
  84          void main(void)
  85          {
  86   1              InitTimer();            //初始化Timer
  87   1              
  88   1              PrintString("****** STC系列MCU红外接收程序 2010-12-10 ******\r\n");     //上电后串口发送一条提示信息
  89   1      
  90   1              while(1)
  91   1              {
  92   2                      if(B_IR_Press)          //有IR键按下
  93   2                      {
  94   3                              PrintString("红外码: 0x");                      //提示红外键码
  95   3                              Tx1Send(HEX2ASCII(IR_code >> 4));       //键码高半字节
  96   3                              Tx1Send(HEX2ASCII(IR_code));            //键码低半字节
  97   3                              if(B_IrUserErr)                                         //用户码错误,则发送用户码
  98   3                              {
  99   4                                      Tx1Send(' ');                                   //发空格
 100   4                                      Tx1Send(' ');                                   //发空格
 101   4                                      PrintString("用户码: 0x");              //提示用户码
 102   4                                      Tx1Send(HEX2ASCII(IR_UserH >> 4));      //用户码高字节的高半字节
 103   4                                      Tx1Send(HEX2ASCII(IR_UserH));           //用户码高字节的低半字节
 104   4                                      Tx1Send(HEX2ASCII(IR_UserL >> 4));      //用户码低字节的高半字节
 105   4                                      Tx1Send(HEX2ASCII(IR_UserL));           //用户码低字节的低半字节
 106   4                              }
 107   3                              Tx1Send(0x0d);          //发回车
 108   3                              Tx1Send(0x0a);          //发回车
 109   3                              B_IR_Press = 0;         //清除IR键按下标志
 110   3                      }
 111   2              }
 112   1      }
 113          
 114          
 115          /********************* 十六进制转ASCII函数 *************************/
 116          uchar   HEX2ASCII(uchar dat)
C51 COMPILER V9.01   HT1621                                                                05/20/2012 12:25:30 PAGE 3   

 117          {
 118   1              dat &= 0x0f;
 119   1              if(dat <= 9)    return (dat + '0');     //数字0~9
 120   1              return (dat - 10 + 'A');                        //字母A~F
 121   1      }
 122          
 123          
 124          
 125          
 126          //*******************************************************************
 127          //*********************** IR Remote Module **************************
 128          
 129          //*********************** IR Remote Module **************************
 130          //this programme is used for Receive IR Remote (HT6121).
 131          
 132          //data format: Synchro,AddressH,AddressL,data,/data, (total 32 bit).
 133          
 134          //send a frame(85ms), pause 23ms, send synchro of another frame, pause 94ms
 135          
 136          //data rate: 108ms/Frame
 137          

⌨️ 快捷键说明

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