本程序通过模拟仿真,实际示波器测试,均表现良好,愿拿出来分享,若有更好的实现方法,希望高手多多指教。。。。/*************spwm产生程序******/
/*单片机STC12C5A60S2,晶振11.0592M,正弦波50Hz,spwm波形21.6KHz*/
#include #define uchar unsigned char
#define uint unsigned int
uchar code pwm[54]={255,240,226,211,196,182,168,154,141,128,115,103,91,80,69,59,50,42,34,27,20,15,10,6,3,1,0,
0,1,3,6,10,15,20,27,34,42,50,59,69,80,91,103,115,128,141,154,168,182,196,211,226,240,255
}; // 反正弦变化
int index=0;
sbit P13=P1^3; //PCA模块0输出
sbit P14=P1^4; //PCA模块1输出
bit zf=0; //前后半周期标志
void init_pca(void)//pca计数器初始化函数
{
CMOD=0x02;//计数器0的溢出为PCA计数器的时钟源,允许pca中断使能
CCON=0x00;
CCAPM0=0x42;//8位PWM输出,无中断
CCAPM1=0x42;//8位PWM输出,无中断
CL=0x00;//清零pca计数器
CH=0x00;
CCA