nizhenyu 发表于 2010-12-14 16:24:41

求助高手赐教,STC12C5616单片机在做SVPWM时PCA不听使唤不能够更给PWM的占空比

#include <stc12c56.h>
#include <pca.h>
typedefunsigned charBYTE ;
#include "SVPWM.h"
bit flag;
BYTE i;

void main()
{ P2M0=0x00;
P2M1=0x01;
P3M0=P2M0|0x00;//P20为PWM2输出强推挽输出信号要取反
P3M1=P2M1|0x80;//P37为PWM0输出强推挽输出
PCA_Init();
EPCA_LVD=1;        //允许中断
EA=1;
CR=1;       //启动PCA计数器
while(1){ ;
                   }
}                                                                  




voidPca_LvdPro(void) interrupt 7
{if(i>=30) {i=0; flag=~flag;}
if(flag){CCAP0H=4*PWM;CCAP2H=0;}//
else { CCAP2H=4*PWM;CCAP0H=0;}//
i++;
CCF1=0;                                                                                                                                         
}


以下是PCA头文件
void PCA_Init(void)
{        
        CCON=0x00;//禁止PCA计数器工作,清除中断标志、计数器溢出标志
        CH=0;
        CL=0;//PCA计数器
        CMOD |=PCACLK1;//系统时钟
//        PCA模块0 PWM模式
        CCAP0L=0x80;
        CCAP0H=0x80; //PWM和比较寄存器值
        PCA_PWM0=0x00;
        CCAPM0 |=0x42;//8位PWM输出;
        //        PCA模块2 PWM模式
        CCAP2L=0x80;
        CCAP2H=0x80; //PWM和比较寄存器值
        PCA_PWM2=0x00;
        CCAPM2 |=0x42;//8位PWM输出;
//        PCA模块3 PWM模式
//        CCAP3L=0x80;
//        CCAP3H=0x80; //PWM和比较寄存器值
//        PCA_PWM3=0x00;
//        CCAPM3 |=0x42;//8位PWM输出;
        //        PCA模块1 软件定时模式
        CCAP1L=0x09;
        CCAP1H=0x00;
        CCAPM1 |=0x49;//产生中断

}


以下是SVPWM数据

BYTE code PWM=
{2,5,8,11,14,17,20,22,24,26,28,29,30,31,32,
32,31,30,29,28,26,24,22,20,17,14,11,8,5,2};
页: [1]
查看完整版本: 求助高手赐教,STC12C5616单片机在做SVPWM时PCA不听使唤不能够更给PWM的占空比