锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

stc12c5a60s2单片机spwm发生程序带仿真文件

时间:2024-05-20 04:37:11

包含文件和仿真文件的下载地址:http://www.ruidan.com/f/stc12c5a60s2_spwm.zip
下面是主程序部分:
#include
#include

#define uint unsigned int

uchar index;
uchar a;
void init_pca(void)//pca初始化函数

{

CMOD=0x04;//计数器0的溢出为PCA计数器的时钟源

CC=0x00;

CC0=0x42;//8位PWM输出,无中断

CL=0x00;//清零pca计数器

CH=0x00;

CCAP0L=pwm[0]; //初始化spwm输出的占空比

CCAP0H=pwm[0];

CR=1;//运行pca计数器

}

void init_timer(void)//计数器初始化函数

{

TMOD= 0x12; //计数器0工作在方式模式2,计数器1工作在方式1

TH0 = 0xFF;//T0的计数值为5,把时钟源5分频

TL0 = 0xFF;

TH1 = 0xF6;//T1的计数值为625,若是12M晶振,则中断频率为12M/625=1920HZ,正弦频率为1920/32=600HZ,即600/12=50HZ

= 0xA0; //T1的计数值低位

AUXR=0x80;//计数器均工作在8051速度

//ET0 = 1; //开中计数器0断

ET1 = 1; //开计数器1中断

TR0 = 1; //开启计数器0

TR1 = 1; //开计数器1

}

void int_timer1(void) interrupt 3//计数器1中断函数

{

CR=0;
a=a+1;
index++; //查表索引

TH1=0xFD; //重装计数值

TL1=0x8F;

CCAP0H=pwm[index%32]*2;//改变pwm的占空比

CR=1;

}
void main()
{a=0;
EA=1;//开总中断
init_pca();
init_timer();
while(1);
//-.-//
}


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章