⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_16.c

📁 F340 的编程例子 与c8051f340 系列的 常常用到编程例子 希望有帮助
💻 C
字号:
/******************************************************************
本程序为PCA16位PWM输出例程,jp2第2脚为PWM输出					   
******************************************************************/

#include <c8051f340.h>                
#define uchar unsigned char
#define uint unsigned int


void port_init (void);
void pca_init (void);

bit pca_flag;
uint pwm=0;
void main (void)
{	
   PCA0MD &= ~0x40;                //关闭看门狗
   OSCICN |= 0x03;                 //使用内部12M晶振
   port_init ();			       //端口初始化
   pca_init ();				       //PCA初始设为16位脉宽
   EA=1;
   
   while (1)      
	{
		
	
	}
}
/******************************************************************
端口初始化程序
******************************************************************/
void port_init (void)
{  P0SKIP = 0xff;		          //跳过P0口
   P1SKIP = 0x03;	     		  //跳过P1.1
   XBR1   = 0x42;				  //将PCA输出配置到P1.2脚
   P1MDOUT |= 0x04;     		  //P1.2配置为推挽输出
}
/******************************************************************
初始化PCA的CEX0输出16位PWM信号
******************************************************************/
void pca_init (void)
{
    PCA0CN    = 0x40;			  //PCA定时器使能
    PCA0CPM0  = 0xc2;			  //使能16位PWM
	PCA0MD    = 0x01;  			  //PCA定时器溢出中断允许
	EIE1= 0x10;					  //允许PCA中断
    pca_flag=0;
}
/******************************************************************
PCA中断处理程序
******************************************************************/
void pca_isr (void) interrupt 11
{     
     
      if(pca_flag==0)			
		{
			PCA0CPL0=(0xff&pwm);
			PCA0CPH0=(0xff&(pwm>>8));
		 	pwm+=0x0050;
		 	if(pwm==0xfff0){pca_flag=1;}
		}
	 if(pca_flag==1)					
		{
			PCA0CPL0=(0xff&pwm);
			PCA0CPH0=(0xff&pwm>>8);
		 	pwm-=0x0050;
		 	if(pwm==0){pca_flag=0;}
		}
	    CF = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -