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

📄 initial.c

📁 PWM输出产生正玄波后经AD采集电压控制输出幅度,并显示电压等状态
💻 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 + -