📄 pwmtest.c
字号:
//*************************************************************
// |-| |-| |-|
// | | | | | |
// __| |________| |_______|_|_____------>PWM1
//
// |----| |----| |----|
// | | | | | |
// __| |_____| |____| |_------>PWM2
//本实验利用PIC单片机的CCP模块功能产生PWM功能,PWM的周期为:
//(PR2+1)*4TOSC*(TMR2预分频值)
//了解CCP模块的CCP1CON寄存器功能,
//了解TMR2与CCP模块的之间关系,
//掌握对CCP模块的相关寄存器的初始化及设置
//硬件平台: SP9608-PIC单片机增强型开发板 fosc=4MHz
//软件平台: HT-PICC编程器与MPLAB集成开发环境
//作者: 孙安青(Sun An-qing)
//网址: www.supermcu.com
//E-Mail: supermcu@126.com
//利用CCP1模块产生的PWM信号由RC2引脚输出,
//同时利用CCP2模块产生的PWM信号由RC1引脚输出,两者都可用示波器即可
//观察到该PWM波形.
//*************************************************************
#include <p18f452.h>
void main(void)
{
//***********************************************************
CCP1M3=1;//Enable CPP1 Work as PWM mode
CCP1M2=1;
CCP1M1=1;
CCP1M0=1;
TRISC2=0;//Enable RC2 work as output
CCPR1L=0x10;//PWM脉宽值,改变PWM的脉宽,只需改变CCPR1L中的值
CCP1X=0;//以及CCP1CON中的CCP1X和CCP1Y这两个位的值
CCP1Y=0;
//***********************************************************
CCP2M3=1;//Enable CPP2 Work as PWM mode
CCP2M2=1;
CCP2M1=1;
CCP2M0=1;
TRISC1=0;//Enable RC0 work as output
CCPR2L=0x20;//PWM脉宽值,改变PWM的脉宽,只需改变CCPR2L中的值
CCP2X=0;//以及CCP2CON中的CCP2X和CCP2Y这两个位的值
CCP2Y=0;
//***********************************************************
TOUTPS3=0;//Enable TMR2--->1:1
TOUTPS2=0;
TOUTPS1=0;
TOUTPS0=0;
T2CKPS1=1;//Enable TMR2--->1:16
T2CKPS0=1;
TMR2ON=1;//Enable TMR2 Working
TMR2=0;
PR2=0x40;//PWM周期,改变PWM的周期,只需改变PR2中的值即可
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -