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

📄 pwm3.c

📁 PIC18F452 PWM程序,CCP1 CCP2模拟程序
💻 C
字号:
#include	"p18f452.h"	 
/* ****************************************************************
** 函 数 名: initial()
** 功能描述: 系统初始化子程序,放在程序首部
*************************************************************** */
void	initial(void)
{
	INTCON=0x00;		//* bit7-bit0:关总中断 */
	ADCON1=0X07;		//* 设置数字输入输出口 */
	PIE1=0;				//* PIE1 的中断不使能 */			
	PIE2=0;				//* PIE2 的中断不使能 */	
//	PIE3=0;				//* PIE3 的中断不使能 */	
}
/* 	**************************************************************
**	函 数 名: PWMSet()
**	功    能:CCP1输出PWM设置,设置完成后即输出PWM 
****************************************************************** */ 
//设置PWM 操作
//通过以下步骤将CCP 模块配置为PWM 操作:
//1. 写入PR2 寄存器以设定PWM 周期。
//2. 写入CCPR1L 寄存器和CCP1CON<5:4> 位以设置PWM 占空比。
//3. 将TRISC<2> 位清零以将CCP1 引脚设为输出。
//4. 写入T2CON 以设置TMR2 预分频值并使能Timer2。
//5. 将CCP1 模块配置为PWM 模式。
//6. speed为速度,取值范围从0~127

void PWMinit(void)
{	PR2=0X7F;		//* 设置PWM工作周期=((PR2)+1)*4*Tosc*(TMR2前分频值);Tosc=fosc/4*/  7F--25K
	CCPR1L=0;		//* CCP1高电平值高8位为1000 0000=80,占空比0 */
	CCPR2L=0;		//* CCP2高电平值高8位为1000 0000=80,占空比0 */
	TRISC=TRISC&0XF9;	//* 设置CCP1(RC2)引脚为输出方式 */	
	//TRISC=TRISC&0XFD;	//* 设置CCP2(RC1)引脚为输出方式 */	
	CCP1CON=0X0C;		//* CCP1模块为PWM工作方式,高电平值低2位为00*/
	CCP2CON=0X0C;		//* CCP2模块为PWM工作方式,高电平值低2位为00*/	
	T2CON=0X04;			//* 打开TMR2,且使其前后分频为1,同时开始输出PWM波形 */
	PIE1bits.RCIE=0; 	//CCP1IE=0;	//* CCP1中断禁止 */
}
void	PWMSet1(unsigned char speed)
{
	CCPR1L=speed;		//* CCP1高电平值高8位为speed */
}

void	PWMSet2(unsigned char speed)
{
	CCPR2L=speed;		//* CCP2高电平值高8位为speed */
}

void main(void)
{
	initial();			//* 系统初始化子程序 */
	PWMinit();
	RCONbits.IPEN=1;	// 使能中断高低优先级
	INTCON=INTCON|0xc0;	// 开总中断、开外围接口中断

	while(1)
	{
		PWMSet1(70);
		PWMSet2(127);		
	}
}

⌨️ 快捷键说明

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