📄 main.c
字号:
/* ****************************************************************
** 功能描述: ECCP1工作于PWM半桥输出;P1A、P1B带死区控制的调制信号输出
*************************************************************** */
#include "pic18.h" /* PIC18系列的头文件 */
/* ****************************************************************
** 函 数 名: initial()
** 功能描述: 系统初始化子程序
*************************************************************** */
void initial()
{
INTCON=0x00; /* bit7-bit0:关总中断 */
ADCON1=0X07; /* 设置数字输入输出口 */
PIE1=0; /* PIE1 的中断不使能 */
PIE2=0; /* PIE2 的中断不使能 */
PIE3=0; /* PIE3 的中断不使能 */
}
/* **************************************************************
** 函 数 名: ECCPinitial()
** 功 能:ECCP1的PWM工作初始化子程序
****************************************************************** */
void ECCPinitial()
{
CMCON=0x07; /* 关比较器 */
TRISD=TRISD&0X0F; /* 关闭ECCP1的P1A、P1B、P1C、P1D输出 */
PR2=0XFF; /* PWM工作周期=((PR2)+1)*4*Tosc*(TMR2前分频值)*/
ECCPR1L=0X80; /* ECCP1高电平高8位为1000 0000=0X80 */
ECCP1CON=0X8C; /* ECCP1工作于PWM,P1A、P1C激活为高电平,P1B、P1D激活为高电平,半桥输出,P1A、P1B带死区控制的调制信号输出,P1C、P1D分配为端口引脚;PWM工作循环周期的低两位为00,占空比为0.5 */
ECCP1DEL=0x0f; /* 半桥输出模式中PWM延时计数为15个指令周期 */
TMR2IF=0; /* 清中断标志 */
T2CON=0X04; /* 打开TMR2,其前分频为1,同时开始输出PWM波形 */
while(1)
{
if(1==TMR2IF)break; /* 等待TMR2溢出,新的PWM周期从此开始 */
}
TRISD5=0; /* P1B使能调制输出 */
TRISD4=0; /* P1A使能调制输出 */
}
main()
{
initial(); /* 系统初始化子程序 */
ECCPinitial(); /* ECCP1设置 */
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -