- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个基于C8051F120的SPWM输出C程序
/****************************2010年12月13日17:27:48******************************** 内部系统时钟98M*********************************************************************************** 测试: CEX0中断用于输出所需SPWM波形,CEX2中断用于计算CEX0翻转值最小脉宽0.63us 左右*********************************************************************************///// Includes//#include c8051f120.h // SFR declarations//// Global Constants//#define uchar unsigned char#define uint unsigned short int#define N 0X4096#define T 0x1324 //0.05*98*10^3 载波周期 T=50ussbit SPWM_H=P0^0;//SPWM_H用于高低电平判断uint count2=0,s0=0,s2=0,cpl2=0,cph2=0,cpl1=0,cph1=0,cpl0=0,cph0=0;//查表值//测试值 高电平 0.1 0.2 0.4 0.6 0.8 0.8 0.6 0.4 0.2 0.1 //uint s_code_num=10,s_code[]={0,0xd7,0x1ea,0x3d4,0x50a,0x7a8,0x7a8,0x50a,0x3d4,0x1ae,0xd7};//测试值 1usuint s_code_num=10,s_code[]={0X00,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62};//测试值 0.62us OK//uint s_code_num=9,s_code[]={0X3D,0X3D,0X3D,0X3D,0X3D,0X3D,0X3D,0X3D,0X3D,0X3D,0X3D};//测试值 0.05us 无法通过//uint s_code_num=9,s_code[]={0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,0X31,};//// Function Prototypes//void OSCILLATOR_Init (void);void PORT_Init (void);void PCA0_Init (void);void pca_isr(void);//// main() Routine//void main (void) { // Disable watchdog timer WDTCN = 0xde; WDTCN = 0xad; EIP1|=0x08; //设置为高优先级 EIE1=0x08; //PAC中断允许 //EIE1=0x10; //由于软件原因,软件仿真的时候EIE1需改为0X10!!! EA=1; PORT_Init (); // Initialize crossbar and GPIO OSCILLATOR_Init (); // Initialize oscillator PCA0_Init (); // Initialize PCA0 SFRPAGE = PCA0_PAGE; // Change to PCA0 page while (1) if(count2==s_code_num) { count2=0; P0=0X00; s0=0X00; s2=0X00; PCA0L=0X00; PCA0H=0X00; //每个周期结束,必须清零PCA0计时器, CCF2=1; }}//// OSCILLATOR_Init//void OSCILLATOR_Init (void){ int loop; // Software timer char SFRPAGE_save = SFRPAGE; // Save Current SFR page SFRPAGE = CONFIG_PAGE; // Set SFR pa
文档评论(0)