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

📄 pwm-8.lst

📁 c8051f系列的产生pwm波,理解了只要稍加改动就能成为自己的程序
💻 LST
字号:
C51 COMPILER V8.08   PWM_8                                                                 04/17/2009 18:51:14 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE PWM_8
OBJECT MODULE PLACED IN pwm-8.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm-8.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //===================================================================================
   2          //PCA工作在8位脉宽调制器工作方式,在PWM引脚输出一个占空比为0<-->0xfe的PWM
   3          //信号且重复输出,可用示波器观察占空比变化。
   4          
   5          //实验时短接J12的1,2引脚.
   6          //-----------------------------------------------------------------------------------
   7          // Includes
   8          //-----------------------------------------------------------------------------------
   9          
  10          #include <c8051f310.h>                 // SFR declarations
  11          #include <INTRINS.H>
  12          #include <stdio.h>
  13          
  14          //------------------------------------------------------------------------------------
  15          //------------------------------------------------------------------------------------
  16          void PORT_Init (void);
  17          void PCA_Init (void);
  18          void PCA_ISR (void);
  19          //------------------------------------------------------------------------------------
  20          // MAIN Routine
  21          //------------------------------------------------------------------------------------
  22          void main (void)
  23          {       
  24   1              unsigned long b;
  25   1               
  26   1         /*关看门狗*/
  27   1         PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
  28   1         OSCICN |= 0x03; // Set internal oscillator to highest
  29   1                         // setting (24500000)
  30   1              
  31   1              PORT_Init ();                   /*初始化I/O口*/
  32   1              PCA_Init ();                            /*PCA初始化成8位脉宽调置方式*/
  33   1          EIE1= 0x10;
  34   1              EA=1;
  35   1              PCA0CPH0=0x20;
  36   1              while (1)      
  37   1              {
  38   2                      
  39   2                      for(b=0;b>0xffffffff;b++)//延时
  40   2                      {
  41   3                              _nop_();
  42   3                      }       
  43   2              }
  44   1      }
  45          //配置I/O端口
  46          void PORT_Init (void)
  47          {  P0SKIP =0xff;
  48   1         P1SKIP = 0x3f;
  49   1         XBR1 = 0x42;                 /*CEX0-->P1.6*/
  50   1      
  51   1         P1MDOUT |= 0x40;     /*使能P1.6脚推挽输出*/
  52   1      }
  53          //配置PCA的CEX0输出8位PWM信号
  54          void PCA_Init (void)
  55          {
C51 COMPILER V8.08   PWM_8                                                                 04/17/2009 18:51:14 PAGE 2   

  56   1          PCA0CN    = 0x40;
  57   1          PCA0CPM0  = 0x42;   //pwm-8模式
  58   1          PCA0CPL0  = 0x00;
  59   1          PCA0CPH0  = 0x00;
  60   1              //PCA0CPL4  = 0x00;
  61   1              //PCA0MD   &= 0x40;
  62   1              PCA0MD    = 0x01;  //pca计数器/定时器溢出中断允许
  63   1      }
  64          //-------------------------------
  65          void PCA_ISR (void) interrupt 11
  66          {     unsigned char a ;
  67   1            bit       PWM_PAC;
  68   1            CF = 0;
  69   1            if(PWM_PAC==0)                    //占空比由0     >>0xfe
  70   1                      {
  71   2                              PCA0CPH0=a;
  72   2                              a++;
  73   2                              if(a==0xfe){PWM_PAC=1;}
  74   2                      }
  75   1                      else                                    //占空比由0xfe  >>0
  76   1                      {
  77   2                              PCA0CPH0=a;
  78   2                              a--;
  79   2                              if(a==0){PWM_PAC=0;}
  80   2                      }
  81   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    137    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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