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

📄 www.ourhc.cn.lst

📁 KZS1212-102Y_stc60s2双485单片机开发板
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 23:29:10 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:STC12C5A60S2单片机之PWM
   5          使用芯片:STC12C5A60S2
   6          晶振:11.0592MHZ
   7          波特率:115200
   8          编译环境:Keil
   9          作者:zhangxinchun
  10          网站:www.ourhc.cn
  11          淘宝店:
  12          汇诚科技 http://ourhc.taobao.com
  13          郑兴电子直销部 http://shop68451856.taobao.com
  14          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!  
  15            
  16            说明:单片机的P1.3口输出PWM信号
  17          
  18          *********************************************************************/
  19          #include <REG52.H>
  20          #include <intrins.h>
  21          #define U8 unsigned char
  22          #define U16 unsigned int
  23          
  24          /********************************************************************
  25                                        延时函数
  26          *********************************************************************/
  27          void DelayMs(U8 ms) //在11.0592M晶振下,stc10f系列(单周期指令)的ms级延时
  28          {      
  29   1      U16 i;
  30   1      while(ms--)
  31   1      {
  32   2         for(i = 0; i < 850; i++);
  33   2      }
  34   1      }
  35          
  36          /********************************************************************
  37                                       初始化定义函数
  38          *********************************************************************/
  39          
  40          sfr CCON     = 0xD8; //PCA控制寄存器
  41          sfr CMOD     = 0xD9; //PCA模式寄存器
  42          sfr CCAPM0   = 0xDA; //PCA模块0模式寄存器 //模块0对应P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列)   
  43          sfr CCAPM1   = 0xDB; //PCA模块1模式寄存器 //模块1对应P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列)
  44          sfr CL       = 0xE9; //PCA 定时寄存器 低位
  45          sfr CH       = 0xF9; //PCA 定时寄存器 高位
  46          sfr CCAP0L   = 0xEA; //PCA模块0的 捕获寄存器 低位
  47          sfr CCAP0H   = 0xFA; //PCA模块0的 捕获寄存器 高位
  48          sfr CCAP1L   = 0xEB; //PCA模块1的 捕获寄存器 低位
  49          sfr CCAP1H   = 0xFB; //PCA模块1的 捕获寄存器 高位
  50          sfr PCA_PWM0 = 0xF2; //PCA PWM 模式辅助寄存器0
  51          sfr PCA_PWM1 = 0xF3; //PCA PWM 模式辅助寄存器1
  52          sbit CF   = 0xDF;    //PCA计数溢出标志位
  53          sbit CR   = 0xDE;    //PCA计数器 运行控制位
  54          sbit CCF1 = 0xD9;    //PCA模块1中断标志
  55          sbit CCF0 = 0xD8;    //PCA模块0中断标志
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 23:29:10 PAGE 2   

  56          
  57          //* CCAPOH = CCAPOL = 0XC0; //模块0输出 占空因数为25%
  58          //* CCAPOH = CCAPOL = 0X80; //模块0输出 占空因数为50%
  59          //* CCAPOH = CCAPOL = 0X40; //模块0输出 占空因数为75%
  60          /********************************************************************
  61                                        PWN时钟函数
  62          *********************************************************************/
  63          void PWM_clock(U8 clock)
  64          { 
  65   1      CMOD |= (clock<<1);
  66   1      CL = 0x00;
  67   1      CH = 0x00;
  68   1      }
  69           /********************************************************************
  70                                        PWM输出函数函数
  71          *********************************************************************/
  72          void PWM_start(U8 module,U8 mode) 
  73          {
  74   1      
  75   1      /********************设置PWM信号输出值*******************************/
  76   1      CCAP0L = 0Xc0;
  77   1      CCAP0H = 0Xc0;   //模块0初始输出 占空因数为25%
  78   1      CCAP1L = 0Xc0;
  79   1      CCAP1H = 0Xc0;   //模块1初始输出 占空因数为25%
  80   1      
  81   1      if(module==0)
  82   1         {
  83   2          switch(mode)
  84   2           { 
  85   3         case 0: CCAPM0 = 0X42;break; //模块0设置为8位PWM输出,无中断
  86   3         case 1: CCAPM0 = 0X53;break; //模块0设置为8位PWM输出,下降沿产生中断
  87   3         case 2: CCAPM0 = 0X63;break; //模块0设置为8位PWM输出,上升沿产生中断
  88   3         case 3: CCAPM0 = 0X73;break; //模块0设置为8位PWM输出,跳变沿产生中断
  89   3         default: break;
  90   3         }
  91   2      }
  92   1      else
  93   1          if(module==1)
  94   1           {
  95   2            switch(mode)
  96   2             { 
  97   3         case 0: CCAPM1 = 0X42;break; //模块1设置为8位PWM输出,无中断
  98   3         case 1: CCAPM1 = 0X53;break; //模块1设置为8位PWM输出,下降沿产生中断
  99   3         case 2: CCAPM1 = 0X63;break; //模块1设置为8位PWM输出,上升沿产生中断
 100   3         case 3: CCAPM1 = 0X73;break; //模块1设置为8位PWM输出,跳变沿产生中断
 101   3         default: break;
 102   3         }
 103   2         }
 104   1         else
 105   1           if(module==2)
 106   1              {
 107   2              switch(mode)
 108   2          { 
 109   3            case 0: CCAPM0 = CCAPM1 = 0X42;break; //模块0和1设置为8位PWM输出,无中断
 110   3            case 1: CCAPM0 = CCAPM1 = 0X53;break; //模块0和1设置为8位PWM输出,下降沿产生中断
 111   3            case 2: CCAPM0 = CCAPM1 = 0X63;break; //模块0和1设置为8位PWM输出,上升沿产生中断
 112   3            case 3: CCAPM0 = CCAPM1 = 0X73;break; //模块0和1设置为8位PWM输出,跳变沿产生中断
 113   3            default: break;
 114   3            }
 115   2             }
 116   1      CR=1; //PCA计数器开始计数
 117   1      }
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 23:29:10 PAGE 3   

 118          /********************************************************************
 119                                        定时器函数
 120          *********************************************************************/
 121          void PCA_Intrrpt(void) interrupt 7
 122          {
 123   1      if(CCF0) CCF0=0;
 124   1      if(CCF1) CCF1=0;   //软件清零 
 125   1      if(CF)   CF=0;    //软件清零 
 126   1      }
 127          
 128          /********************************************************************
 129                                       主函数
 130          *********************************************************************/
 131          void main()
 132          {
 133   1      TMOD|=0x02; /* timer 0 mode 2: 8-Bit reload */ 
 134   1      TH0=0xff;
 135   1      TR0=1;     
 136   1      PWM_clock(2);   // PCA/PWM时钟源为 定时器0的溢出
 137   1      PWM_start(0,0); // 模块0,设置为PWM输出,无中断,初始占空因素为25%
 138   1      while(1)
 139   1         {
 140   2          DelayMs(250);
 141   2         }
 142   1      }
 143          
 144          /********************************************************************
 145                                        结束
 146          *********************************************************************/


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