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

📄 pwm.lst

📁 单片机红外解码及无线解码的应用
💻 LST
字号:
C51 COMPILER V7.01  PWM                                                                    10/25/2005 20:48:35 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE PWM
OBJECT MODULE PLACED IN pwm.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE pwm.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define POWER_MIN 60
   6          #define ms_waiteAA  1
   7          #define ms_waite55  2
   8          #define ms_waiteA5      3
   9          #define ms_waiteD1      4
  10          //#define ms_waiteD2    5
  11          sbit pwm1=P1^5;
  12          sbit pwm2=P1^6;
  13          uchar power1,power2,recdata;
  14          uchar message=0;
  15          uchar receive=0;
  16          
  17          
  18          void delay(uchar count)//延时
  19          {
  20   1      uchar i,k;
  21   1      i=0;
  22   1      k=0;
  23   1      for (k=0;k<count;k++)
  24   1      for (i=0;i<30;i++);
  25   1      }
  26          
  27          
  28          
  29          
  30          void Initial(void)
  31          {
  32   1      IT0=1;
  33   1      IT1=1;
  34   1      IE0=0;
  35   1      IE1=0;
  36   1      EX0=1;
  37   1      EX1=1;
  38   1      SCON=0X50;
  39   1      TMOD=0x20;
  40   1      TH1=0xF3;//0xF3;2400
  41   1      TL1=0xF3;
  42   1      TR1=1;
  43   1      ES=1;
  44   1      PS=1;
  45   1      EA=1;
  46   1      power1=61;//0~80
  47   1      power2=61;
  48   1      message=ms_waiteAA;
  49   1      }
  50          
  51          
  52          
  53          void pwm(void)
  54          {
  55   1      uchar k=0;
C51 COMPILER V7.01  PWM                                                                    10/25/2005 20:48:35 PAGE 2   

  56   1      while(k<=POWER_MIN)
  57   1      {
  58   2      if (power1<POWER_MIN)
  59   2      if (k>=power1)
  60   2      pwm1=0;
  61   2      if (power2<POWER_MIN)
  62   2      if (k>=power2)
  63   2      pwm2=0;
  64   2      delay(1);
  65   2      k++;
  66   2      }
  67   1      
  68   1      pwm1=1;
  69   1      pwm2=1;
  70   1      }
  71          
  72          void int0 (void)interrupt 0 
  73          {
  74   1      pwm();
  75   1      }
  76          
  77          void int1 (void)interrupt 2 
  78          {
  79   1      pwm();
  80   1      }
  81          
  82          void receiveINT (void) interrupt 4
  83          {
  84   1      uchar d;
  85   1      if (TI==1)
  86   1      TI=0;
  87   1      else
  88   1      RI=0;
  89   1      
  90   1      d=SBUF;
  91   1              switch (message)
  92   1                              {       
  93   2                              case ms_waiteAA:
  94   2                                                                      if (d==0xAA)
  95   2                                                                      message=ms_waite55;
  96   2                                                                      else
  97   2                                                                      message=ms_waiteAA;
  98   2                                                                      break;
  99   2                              case ms_waite55:
 100   2                                                                      if (d==0x55)
 101   2                                                                      message=ms_waiteA5;
 102   2                                                                      else
 103   2                                                                      message=ms_waiteAA;
 104   2                                                                      break;
 105   2                              
 106   2                         case ms_waiteA5:
 107   2                                                                      if (d==0xA5)
 108   2                                                                      message=ms_waiteD1;
 109   2                                                                      else
 110   2                                                                      message=ms_waiteAA;
 111   2                                                                      break;  
 112   2      
 113   2                              case ms_waiteD1:                                        
 114   2                                                                      recdata=d;
 115   2                                                                      receive=1;                                                                      
 116   2                                                                      message=ms_waiteAA;
 117   2                                                                      break;
C51 COMPILER V7.01  PWM                                                                    10/25/2005 20:48:35 PAGE 3   

 118   2      
 119   2                              default :                       message=ms_waiteAA;
 120   2                              }
 121   1      
 122   1      
 123   1        }
 124          
 125          main()
 126          {
 127   1      Initial();
 128   1      while(1)
 129   1      {
 130   2              if (receive==1)
 131   2              {
 132   3              receive=0;
 133   3                      switch (recdata)
 134   3                              {       
 135   4                              case 0x0F://上
 136   4                                                              if (power1>20)
 137   4                                                              power1-=10;
 138   4                                                              break;
 139   4                              case 0x05://下
 140   4                                                              if (power1<POWER_MIN)
 141   4                                                              power1+=10;
 142   4                                                              break;
 143   4                              case 0x0A://左
 144   4                                                              if (power2<POWER_MIN)
 145   4                                                              power2+=10;
 146   4                                                              break;
 147   4                              case 0x09://右
 148   4                                                              if (power2>20)
 149   4                                                              power2-=10;
 150   4                                                              break;
 151   4                              default :
 152   4                                                              break;
 153   4                              }                               
 154   3                              
 155   3      
 156   3              }
 157   2      
 158   2      }
 159   1      }
 160          
 161          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    334    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   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 + -