📄 initial.c
字号:
#include<pic.h>
#include<pic16f887.h>
void initial_io(void)
{
TRISC=0;
PORTC=0;
TRISB=0XFD;//RB1工作指示灯
PORTB=0;
TRISA=0XC0;
PORTA=0X0;
TRISE=0X9;
PORTE=0;
TRISD=0X0;
PORTD=0X0;
ANSEL=0X20;//AN5模拟输入
ANSELH=3;//AN8,AN9模拟输入
WPUB=0XF0;//弱上拉使能
IOCB=0XF0;//电平变化中断使能
INTCON=0XC8;
}
void initial_tmr0(void)
{
OPTION=4;//TMR0=1:256;;7 INT为下绛沿触发
TMR0=178;
T0IF=0;
T0IE=1;
}
void initial_ad(void)
{
ADCON0=161;//AN8 AD
ADCON1=0;
ADIF=0;
ADIE=1;
}
void initial_pwm(void)
{
T2CON=28;//预分频1:1;后分频1:4
TMR2IE=1;
TMR2IF=0;
CCPR1L=0;
CCP1CON=140;//P1AP1B为带死区控制的半桥输出
CCP2CON=0;
PWM1CON=8;//2us死区时间(1/16US*4*PWM1CON)=0.25*PWM1CON;死区时间
PR2=199;//PWM周期为20KHz(20US)
//PWM(周期)=(PR2+1)*4*(TOSC)*T1分频比
//本程序晶振=16MHz,TOSC=1/16US
//T1为1:1分频
//PWM周期为50US(20KHz)
//(CCPRxL:CCPxCON<5:4>)最大取值为796;因此CCPR1L最大值为199,此时占空比为100%
}
void intital_other(void)
{
GIE=0;
CM1CON0=0x86;//使能比较器1
CM2CON1=0;
VRCON=0XA7;//比较器参考电压选者:0x7/24*5v=1.45833V
INTF=0;
INTE=1;
T1CON=0X31;
TMR1H=0;
TMR1L=0;
C1IF=0;
C1IE=1;
GIE=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -