1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > pic pwm 占空比可调 源码_PIC16F914输出可调占空比PWM波形程序

pic pwm 占空比可调 源码_PIC16F914输出可调占空比PWM波形程序

时间:2022-12-16 23:22:05

相关推荐

pic pwm 占空比可调 源码_PIC16F914输出可调占空比PWM波形程序

#include

typedef unsigned int uint;

typedef unsigned char uchar;

#define KEY0_DOWN()(RB4==0)//定义按键按下

__CONFIG(0X1014);//内部时钟

uchar KEY0_FLAG=0;

/*************************/

//OSC SET; INTER 4MHZ PERIOD 1US

/*************************/

void OSC_INIT()

{

OSCCON=0X67;//设置内部时钟4MHZ

}

/*************************/

//DELAY FUNCtiON();

/*************************/

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/*************************/

//GPIO SET;

/*************************/

void GPIO_INIT()

{

TRISC5=0;//RC5 SET PWM OUT;

TRISD2=0;//RD2 SET PWM OUT;

RC5=RD2=0;

TRISB4=1;

IOCB4=1;//使能RB4电平变化中断

WPUB=0X10;//使能上拉

RBIE=1;

RBIF=0;

PEIE=1;

GIE=1;

}

/*************************/

//PWM MODEL INIT;

/*************************/

void PWM_INIT()

{

CCP1CON=0B00001100;//PWM 模式

CCP2CON=0B00001100;//PWM 模式

T2CKPS1=1;

PR2=155;//PWM周期=【PR2+1】*4*TOSC*T2预分频值 故PWM频率=1/周期=400HZ

TMR2ON=1;

CCPR1L=0;//占空比=CCPR1L:CCP1CON<5:4>/4(PR2+1);

CCPR2L=0;//占空比=CCPR2L:CCP2CON<5:4>/4(PR2+1);

}

void main()

{

GPIO_INIT();

PWM_INIT();

while(1);//初始化完毕等中断响应就OK

}

//中断响应入口

void interrupt ALL_ISR()//输出10%-100%占空比的PWM波形

{

if(RBIF)

{

delay(5);

if(KEY0_DOWN())

{

KEY0_FLAG++;

if(KEY0_FLAG==11)KEY0_FLAG=0;

}

switch(KEY0_FLAG)

{

case 0:CCPR1L=CCPR2L=0;break;

case 1:CCPR1L=CCPR2L=16;break;

case 2:CCPR1L=CCPR2L=32;break;

case 3:CCPR1L=CCPR2L=47;break;

case 4:CCPR1L=CCPR2L=62;break;

case 5:CCPR1L=CCPR2L=78;break;

case 6:CCPR1L=CCPR2L=94;break;

case 7:CCPR1L=CCPR2L=109;break;

case 8:CCPR1L=CCPR2L=125;break;

case 9:CCPR1L=CCPR2L=141;break;

case 10:CCPR1L=CCPR2L=156;break;

default:break;

}

RBIF=0;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。