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

📄 carrier.lst

📁 利用51单片机的两个定时器同时产生两路脉冲
💻 LST
字号:
C51 COMPILER V8.16   CARRIER                                                               02/17/2009 20:15:18 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE CARRIER
OBJECT MODULE PLACED IN .\bin\Carrier.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE src\Carrier.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\
                    -bin\Carrier.lst) OBJECT(.\bin\Carrier.obj)

line level    source

   1          #include<reg51.h>
   2          #include"inc/define.h"
   3          #include"inc/config.h"
   4          #include"inc/carrier.h"
   5          
   6          
   7          static u8 tmr_sel;
   8          
   9          u8 SerialData[SerialLen];
  10          u8 SerialPos = 0;
  11          
  12          u8 freq_h,freq_l;
  13          
  14          /******************************************************
  15          *说明:对用于产生串行数据流的定时器进行初始化
  16          *函数名称:carrier_init
  17          *参数:
  18          *tmr:指定用于产生PWM的定时器  0:定时器0   其他:定时器1 
  19          *baud:脉冲频率
  20          *返回值:
  21          *其他:
  22          *********************************************************/
  23          void carrier_init(u8 tmr,u16 baud)
  24          {
  25   1              freq_h = (u32)(65536 - (F_CPU/baud))/256;       
  26   1              freq_l = (u32)(65536 - (F_CPU/baud))%256;
  27   1      
  28   1              if(1==tmr || 0==tmr)
  29   1                      tmr_sel = tmr;
  30   1              else 
  31   1                      tmr_sel = 1;
  32   1              if(1 == tmr_sel)
  33   1              {       
  34   2                      TMOD &= 0x0F; 
  35   2                      TMOD |= 0x10;   /* 定时器1方式1:16位手动装载模式 */
  36   2              
  37   2                      TH1 = freq_h;
  38   2                      TL1 = freq_l;
  39   2              
  40   2      
  41   2                      EA    = 1;       /* 开启全局中断        */
  42   2                      ET1   = 1;   /* 开启定时器1中断 */
  43   2                      TR1   = 1;   /* 启动定时器1 */
  44   2              }
  45   1              else    /* 0 == tmr_sel */ 
  46   1              {
  47   2                      TMOD &= 0xF0; 
  48   2                      TMOD |= 0x01;   /* 定时器0方式1:16位手动装载模式 */
  49   2                      
  50   2                      TH0 = freq_h;
  51   2                      TL0 = freq_l;
  52   2      
  53   2                      EA    = 1;       /* 开启全局中断        */
  54   2                      ET0   = 1;   /* 开启定时器0中断 */
C51 COMPILER V8.16   CARRIER                                                               02/17/2009 20:15:18 PAGE 2   

  55   2                      TR0   = 1;   /* 启动定时器0 */
  56   2              }
  57   1      }
  58          
  59          
  60          /*****************************************************
  61          *说明:使用定时器0产生串行数据载波时起作用
  62          *函数名称:Timer0_ISR
  63          *参数:
  64          *返回值:
  65          *其他:
  66          *******************************************************/
  67          void Timer0_ISR(void) interrupt 1
  68          {
  69   1              TH0 = freq_h;   
  70   1              TL0 = freq_l;
  71   1      
  72   1              if(SerialPos < (SerialLen * 8))
  73   1                      SerialPos++;
  74   1              else 
  75   1                      SerialPos = 0;
  76   1              CarrierPort = ((SerialData[SerialPos/8] & (1 << (SerialPos%8))) << CarrierPIN );
  77   1      }
  78          
  79          /*****************************************************
  80          *说明:使用定时器1产生PWM时起作用
  81          *函数名称:Timer1_ISR
  82          *参数:
  83          *返回值:
  84          *其他:
  85          *******************************************************
  86          void Timer1_ISR(void) interrupt 3
  87          {       
  88                  TH1 = freq_h;   
  89                  TL1 = freq_l;
  90                  
  91                  if(SerialPos < (SerialLen * 8))
  92                          SerialPos++;
  93                  else 
  94                          SerialPos = 0;  
  95                  CarrierPort = ((SerialData[SerialPos/8] & (1 << (SerialPos%8))) << CarrierPIN ); 
  96                  
  97          }
  98          *******************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    232    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       3
   IDATA SIZE       =   ----    ----
   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 + -