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

📄 red_tran.lst

📁 红外调试程序
💻 LST
字号:
C51 COMPILER V7.50   RED_TRAN                                                              06/19/2007 08:00:05 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE RED_TRAN
OBJECT MODULE PLACED IN red_tran.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE red_tran.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************************************************/
   2          #include <REG2051.H>
   3          /****************************************************************************************************/
   4          //端口定义
   5          sbit  led     =P1^6;   //指示灯
   6          sbit  wave_bit=P1^7;   //红外载波输出端
   7          sbit  key_1   =P3^2;   //按键一
   8          sbit  key_2   =P3^3;   //按键二(高级按键)
   9          /****************************************************************************************************/
  10          //标志位及全局变量
  11          bit   key1_bit=0;      //按键1(普通用户)标志位  
  12          bit   key2_bit=0;      //按键2(高级用户)标志位
  13          unsigned char normal_user_code[3]={0x55,0x03,0xaa};  //普通用户红外代码
  14          unsigned char senior_user_code[3]={0x00};  //高级用户红外代码
  15          /****************************************************************************************************/
  16          //函数名称:ini_51
  17          //函数功能:对51单片机的初始状态进行设置,供监控程序调用
  18          //入口参数:无
  19          //出口参数:无
  20          //****备注:本函数中对51单片机初始状态进行设置的有:SCON,T0,T1,INT0,INT1
  21          void ini_51(void)
  22          {
  23   1         wave_bit=0;        //初始状态中不产生载波
  24   1         PCON = PCON&0x7f;  //取消波特率倍增位
  25   1         SCON = 0x40;       //串口工作在模式1
  26   1         TMOD = 0x22;       //T0,T1均工作在自重装的方式下
  27   1         TL0  = 0xf4;       //T0产生40KHz载波
  28   1         TH0  = 0xf4;
  29   1         TL1  = 0xe8;       //波特率为1200
  30   1         TH1  = 0xe8;
  31   1         ET0  = 1   ;       //允许T0中断
  32   1         EX0  = 1   ;       //允许外部中断0中断
  33   1         EX1  = 1   ;       //允许外部中断1中断
  34   1         EA   = 1   ;       //开中断
  35   1         TR1  = 1   ;       //启动定时器1
  36   1      }
  37          /****************************************************************************************************/
  38          //函数名称:t0_sev
  39          //函数功能:定时器0中断服务程序
  40          //入口参数:无 
  41          //出口参数:无
  42          //****备注:用于产生40KHz载波
  43          void t0_sev(void) interrupt 1
  44          {
  45   1        wave_bit=!wave_bit;  //在单片机模拟载波的端口上产生40KHz的载波
  46   1      }
  47          /****************************************************************************************************/
  48          //函数名称:int0_sev
  49          //函数功能:外部中断0的中断服务函数
  50          //入口参数:无
  51          //出口参数:无
  52          //****备注:用来将按键1(普通用户)标志位置位
  53          void int0_sev(void) interrupt 0
  54          {
  55   1        EA=0;
C51 COMPILER V7.50   RED_TRAN                                                              06/19/2007 08:00:05 PAGE 2   

  56   1        key1_bit=1;     //置按键1(普通用户)位
  57   1        EA=1;
  58   1      }
  59          /****************************************************************************************************/
  60          //函数名称:int1_sev
  61          //函数功能:外部中断1的中断服务函数
  62          //入口参数:无
  63          //出口参数:无
  64          //****备注:用来将按键2(高级用户)标志位置位
  65          void int1_sev(void) interrupt 2
  66          { 
  67   1        EA=0;
  68   1        key2_bit=1;    //置按键2(高级用户)位
  69   1        EA=1;
  70   1      }
  71          /****************************************************************************************************/
  72          //函数名称:delay
  73          //函数功能:软件产生延迟时间
  74          //入口参数:具体需要延时时间的参数
  75          //出口参数:无 
  76          //****备注:无 
  77          void delay(unsigned int N)
  78          {
  79   1        unsigned int i;
  80   1        for(i=0;i<N;i++);
  81   1      }
  82          /****************************************************************************************************/
  83          //函数名称:uart_tran
  84          //函数功能:串口数据发送
  85          //入口参数:指向地址的指针
  86          //出口参数:无
  87          //****备注:无
  88          void uart_tran(unsigned char *p)
  89          {
  90   1        SBUF=*p;             //发送数据
  91   1        while(TI==0)         //未发送完成,等待
  92   1          {;}
  93   1        if(TI)               //发送完成
  94   1         {
  95   2           TI=0;             //清发送中断标志位
  96   2         }
  97   1      }
  98          /****************************************************************************************************/
  99          //函数名称:key1_manage
 100          //函数功能:按键1(普通用户)处理程序
 101          //入口参数:无
 102          //出口参数:无
 103          //****备注:无
 104          void key1_manage(void)
 105          {
 106   1        unsigned char i,j;
 107   1        unsigned char start_byte=0x55;   //数据包的开始字节,用于同步数据的传送
 108   1        unsigned char   end_byte=0xaa;     //数据包的结束字节,用于结束数据的传送
 109   1        normal_user_code[0]=start_byte;
 110   1        normal_user_code[2]=  end_byte;
 111   1        led=0;         //点亮指示灯
 112   1        for(j=0;j<3;j++)                      //按键一次发送三次
 113   1          {
 114   2                for(i=0;i<3;i++)
 115   2                  {
 116   3                        EA =1;    //允许中断,制造载波
 117   3                TR0=1;   //启动T0,制造载波
C51 COMPILER V7.50   RED_TRAN                                                              06/19/2007 08:00:05 PAGE 3   

 118   3                        uart_tran(normal_user_code+i);    //一次发送三个字节
 119   3                TR0=0;   //一个字节的数据发送完毕,停止载波的制造
 120   3                    EA =0;     //关中断,避免按键中断的触发
 121   3                        wave_bit=0;  //禁止红外的输出
 122   3                      }
 123   2                delay(1500);      //延时约30MS
 124   2              }
 125   1        led=1;            //动作完毕后,关闭指示灯
 126   1      }
 127          /****************************************************************************************************/
 128          //函数名称:key2_manage
 129          //函数功能:按键2(普通用户)处理程序
 130          //入口参数:无 
 131          //出口参数:无 
 132          //****备注:无 
 133          void key2_manage(void)
 134          {
 135   1        ;
 136   1      }
 137          /****************************************************************************************************/
 138          //函数名称:main
 139          //函数功能:监控程序
 140          //入口参数:无
 141          //出口参数:无
 142          //****备注:无
 143          void main(void)
 144          {
 145   1        ini_51();
 146   1        while(1)
 147   1          {
 148   2                if(key1_bit)
 149   2                 {
 150   3                   EA=0;     //关中断,禁止按键的再次中断
 151   3                   key1_bit=0;          //清按键1(普通用户)标志位
 152   3                       delay(1000);         //延时20MS左右
 153   3                       if(key_1==0)         //若此时按键1(普通用户)的状态仍为0,表示确实有键按下
 154   3                        {
 155   4                          while(key_1==0)
 156   4                                {;}             //在按键松开前一直等待
 157   4                          key1_manage();    //在按键松开后即执行按键相应的处理程序
 158   4                        }
 159   3                       else {break;}             //无键按下,空动作
 160   3                   EA =1;      //一次按键的动作执行完毕,开中断等待下次中断的到来
 161   3                 }
 162   2                if(key2_bit)
 163   2                 {
 164   3                   key2_bit=0;          //清按键2(高级用户)标志位
 165   3                 }
 166   2              }
 167   1      }
 168          /****************************************************************************************************/
 169          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    176    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
C51 COMPILER V7.50   RED_TRAN                                                              06/19/2007 08:00:05 PAGE 4   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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