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

📄 pwm.c

📁 PIC19F946下的PWM测试程序
💻 C
字号:
/*
1. 通过写入PR2 寄存器来设置PWM 周期。
2. 通过写入CCPR1L 寄存器和CCP1CON<5:4> 位来设置PWM 占空比。
3. 用户必须通过清零T R ISC<5> 位将RC5/T1CKI/CCP1/SEG10 引脚配置为输出引脚。
4. 通过写T2CON 来设置TMR2 预分频值并使能Timer2。
5. 配置CCP2 模块使之工作于PWM 模式。

PWM 周期 = [(PR2) + 1] *4 * TOSC * (TMR2 预分频比),用时间单位表示
PWM 占空比 = (CCPR1L:CCP1CON<5:4>) ? TOSC ?(TMR2 预分频值)
TMR2 预分频比=16  TOSC=1/4M CCPR1L:CCP1CON<5:4>=256
PR2=256   25%
*/

#include	<pic.h>
/*
该程序用于使CCP1模块产生分辨率为10位的PWM波形,占空比为50%
*/


void CCP2INIT()
{
 
 PR2=0XFF;					//设置PWM的工作周期
 CCPR2L=0X3F;
 CCP2X=1;
 CCP2Y=1;
 TRISD2=0;
 
 T2CON=0X07;
							/*
							bit 7 未用:读为0
							bit 6-3 TOUTPS<3:0>:Timer2 输出后分频比选择位
							0000 = 1:1 后分频比
							0001 = 1:2 后分频比
							?
							?
							?
							1111 = 1:16 后分频比
							bit 2 TMR2ON:Timer2 使能位
							1 = 使能Timer2
							0 = 禁止Timer2
							bit 1-0 T2CKPS<1:0>:Timer2 时钟预分频比选择位
							00 = 预分频比为1
							01 = 预分频比为4
							1x = 预分频比为16
							*/ 
CCP2CON=0X3C;			    //设置CCP2模块为PWM工作方式,且其工作
							/*
							bit 7-6 未用:读为0
							bit 5-4 CCPxX:CCPxY:PWM 最低有效位
							捕捉模式:
							未使用
							比较模式:
							未使用
							PWM 模式:
							这些位是PWM 占空比的低2 位。高8 位在CCPRxL 中。
							bit 3-0 CCPxM<3:0>:CCPx 模式选择位
							11xx = PWM 模式				
							*/
CCP2IE=1;
}

main()
{
IRCF2=1;
IRCF1=1;
IRCF0=1;
HTS=1;
SCS=1;                  //时钟的初始化,令时钟为8M的内部时钟

	CCP2INIT();				//CCP1模块的PWM工作方式初始化
 							//打开TMR2,且使其前分频为0,
		    				//同时开始输出PWM波形
do
	{
		;
	}while(1);				//系统开始输出PWM波形。如果系统是
						    //多任务的,则可以在此执行其它任务,而
							//不会影响PWM波形的产生
}

⌨️ 快捷键说明

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