各位前辈,麻烦帮我看下下面这套PWM控制程序能不能工作?
#include<reg51.h>
#include<intrins.h>
sfr CCON=0xD8;//PCA控制寄存器
sbit CCF0=CCON^0;//PCA模块0中断标志
sbit CCF1=CCON^1;//PCA模块1中断标志
sbit CR=CCON^6;//PCA计数器阵列溢出标志位
sbit CF=CCON^7;//PCA计数器阵列运行控制位
sfr CMOD=0xD9;//PCA工作模式寄存器
sfr CL=0xE9;
sfr CH=0xF9;
sfr CCAPM0=0xDA;//PCA模块0的比较/捕获寄存器
sfr CCAP0L=0xEA;//PCA模块0的捕捉/比较寄存器
sfr CCAP0H=0xFA;
sfr CCAPM1=0xDB;//PCA模块0的比较/捕获寄存器
sfr CCAP1L=0xEB;//PCA模块0的捕捉/比较寄存器
sfr CCAP1H=0xFB;
sfr PCAPWM0=0xf2;//PCA模块0的PWM寄存器
sfr PCAPWM1=0xf3;//PCA模块1的PWM寄存器
void PWM_SET();
void main()
{
CMOD=0x84;//使用定时器0计数,禁止CF位的中断
CCAPM0=0x42;//PWM0处于脉宽调节模式
CL=0x00;
CH=0x00;
CCAP0L=0xf0;//设置PWM0初始值与CCAP0H值相同
CCAP0H=0xf0;//PWM0初始时为0
PWM_SET();
CR=1;
while(1);
}
void PWM_SET()
{
CCAP0L=0xf0;
CCAP0H=0xf0;
} |