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

📄 stc_pwm.lst

📁 这是关于stc12c系列单片机PWM的事例程序,对学习单片机的东东很有用
💻 LST
字号:
C51 COMPILER V7.50   STC_PWM                                                               02/18/2008 17:14:14 PAGE 1   


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

line level    source

   1          //用PWM0模式控制OE(P3.7&P1.2),达到的效果是红渐亮到最亮,再渐暗到黑,然后是绿色、蓝色、白色。
   2          
   3          #include <REGX55.H>
   4          #include "stc12c.h"
   5          #include "b2x.h"
   6          
   7          #define u8      unsigned char   
   8          #define u16     unsigned int
   9          #define STIME   2000            //定时器时间  32ms
  10          sbit    OE =P1^2;
  11          sbit    STB=P1^3;
  12          
  13          bit flag_pwm;
  14          bit flag_dir;
  15          
  16          void time0(void) interrupt 1 using 1
  17          {
  18   1      TH0=-(STIME/256);
  19   1      TL0=-(STIME%256);
  20   1      flag_pwm=1;
  21   1      }
  22          void main(void)
  23          {
  24   1      u8 i,j;
  25   1      u8 liangdu,color_state;
  26   1      //ini 
  27   1      ///////////////////////////////io
  28   1      //P1.2 P3.7为开漏输出,P3.2 P3.3 P3.4 P3.5 为输入 其他默认
  29   1      P1M0=b00000100;
  30   1      P1M1=b00000000;
  31   1      P3M0=b00111100;
  32   1      P3M1=b00000000;  
  33   1      OE=1;
  34   1      ///////////////////////////////spi
  35   1      SPCTL   =b11010000;
  36   1      SPSTAT  =b11000000;
  37   1      //////////////////////////////pwm
  38   1      CMOD=0x02;
  39   1      CL=0x00;
  40   1      CH=0x00;
  41   1      CCAPOL=0xC0;
  42   1      CCAPOH=0xC0;  //占空比设置
  43   1      CCAPM0=0x42;
  44   1      /////////////////////////////
  45   1      color_state=0x22;
  46   1      for(i=0;i<20;i++)
  47   1              {
  48   2              SPDAT=color_state;
  49   2              while(!(SPSTAT&0x80));
  50   2              SPSTAT=0x80;
  51   2              }
  52   1      OE=1;
  53   1      for(j=0;j<2;j++);
  54   1      STB=1;
  55   1      for(j=0;j<2;j++);
C51 COMPILER V7.50   STC_PWM                                                               02/18/2008 17:14:14 PAGE 2   

  56   1      STB=0;
  57   1      for(j=0;j<2;j++);
  58   1      OE=0;
  59   1      for(j=0;j<2;j++);
  60   1      flag_pwm=0;
  61   1      //////////////////////////////time0
  62   1      TMOD=b00000001;
  63   1      TH0=-(STIME/256);
  64   1      TL0=-(STIME%256);
  65   1      ET0=1;
  66   1      TR0=1;
  67   1      ///////////////////////////////start
  68   1      OE=1;
  69   1      CR=1;
  70   1      flag_dir=0;
  71   1      liangdu=2;
  72   1      EA=1;
  73   1      while(1)
  74   1              {
  75   2              if(flag_pwm==1)
  76   2                      {
  77   3                      if(flag_dir==0)
  78   3                              {
  79   4                              //CCAPOH=liangdu;       
  80   4                              CCAPOH=(liangdu/8)*8;   
  81   4                              liangdu++;
  82   4                              if(liangdu==0)
  83   4                                      {
  84   5                                      liangdu=255;
  85   5                                      flag_dir=1;
  86   5                                      }
  87   4                              }
  88   3                      else    
  89   3                              {
  90   4                              //CCAPOH=liangdu;       
  91   4                              CCAPOH=(liangdu/8)*8;
  92   4                              liangdu--;
  93   4                              if(liangdu==0)
  94   4                                      {
  95   5                                      switch(color_state)
  96   5                                              {
  97   6                                              case(0x22):
  98   6                                                      {
  99   7                                                      color_state=0x44;
 100   7                                                      for(i=0;i<20;i++)
 101   7                                                              {
 102   8                                                              SPDAT=color_state;
 103   8                                                              while(!(SPSTAT&0x80));
 104   8                                                              SPSTAT=0x80;
 105   8                                                              }
 106   7                                                      OE=1;
 107   7                                                      for(j=0;j<2;j++);
 108   7                                                      STB=1;
 109   7                                                      for(j=0;j<2;j++);
 110   7                                                      STB=0;
 111   7                                                      for(j=0;j<2;j++);
 112   7                                                      OE=0;
 113   7                                                      for(j=0;j<2;j++);
 114   7                                                      liangdu=1;
 115   7                                                      break;          
 116   7                                                      }
 117   6                                              case(0x44):
C51 COMPILER V7.50   STC_PWM                                                               02/18/2008 17:14:14 PAGE 3   

 118   6                                                      {
 119   7                                                      color_state=0x88;
 120   7                                                      for(i=0;i<20;i++)
 121   7                                                              {
 122   8                                                              SPDAT=color_state;
 123   8                                                              while(!(SPSTAT&0x80));
 124   8                                                              SPSTAT=0x80;
 125   8                                                              }
 126   7                                                      OE=1;
 127   7                                                      for(j=0;j<2;j++);
 128   7                                                      STB=1;
 129   7                                                      for(j=0;j<2;j++);
 130   7                                                      STB=0;
 131   7                                                      for(j=0;j<2;j++);
 132   7                                                      OE=0;
 133   7                                                      for(j=0;j<2;j++);
 134   7                                                      liangdu=1;
 135   7                                                      break;
 136   7                                                      }
 137   6                                              case(0x88):
 138   6                                                      {
 139   7                                                      color_state=0xee;
 140   7                                                      for(i=0;i<20;i++)
 141   7                                                              {
 142   8                                                              SPDAT=color_state;
 143   8                                                              while(!(SPSTAT&0x80));
 144   8                                                              SPSTAT=0x80;
 145   8                                                              }
 146   7                                                      OE=1;
 147   7                                                      for(j=0;j<2;j++);
 148   7                                                      STB=1;
 149   7                                                      for(j=0;j<2;j++);
 150   7                                                      STB=0;
 151   7                                                      for(j=0;j<2;j++);
 152   7                                                      OE=0;
 153   7                                                      for(j=0;j<2;j++);
 154   7                                                      liangdu=1;
 155   7                                                      break;
 156   7                                                      }
 157   6                                              case(0xee):
 158   6                                                      {
 159   7                                                      color_state=0x22;
 160   7                                                      for(i=0;i<20;i++)
 161   7                                                              {
 162   8                                                              SPDAT=color_state;
 163   8                                                              while(!(SPSTAT&0x80));
 164   8                                                              SPSTAT=0x80;
 165   8                                                              }
 166   7                                                      OE=1;
 167   7                                                      for(j=0;j<2;j++);
 168   7                                                      STB=1;
 169   7                                                      for(j=0;j<2;j++);
 170   7                                                      STB=0;
 171   7                                                      for(j=0;j<2;j++);
 172   7                                                      OE=0;
 173   7                                                      for(j=0;j<2;j++);
 174   7                                                      liangdu=1;
 175   7                                                      break;
 176   7                                                      }                                               
 177   6                                              default:
 178   6                                                      {
 179   7                                                      break;  
C51 COMPILER V7.50   STC_PWM                                                               02/18/2008 17:14:14 PAGE 4   

 180   7                                                      }       
 181   6                                              }
 182   5                                      flag_dir=0;
 183   5                                      }
 184   4                              }       
 185   3                      flag_pwm=0;
 186   3                              }
 187   2                      }
 188   1      }       


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


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

⌨️ 快捷键说明

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