📄 pwm.c
字号:
#include"main.h"
unsigned char Pr2Reg,DutyIni,DutyVar,WdtCount;
unsigned int Ccpr2Reg;
void
PwmSetup(unsigned char DutyVar)
{
TRISC1=1;
PR2=255;;//PWM period = [(PR2)+ 1]*4*TOSC *(TMR2 prescale value)
;//PWM Frequency=FOSC/(4*(PR2+1));TMR2 prescale value=1;
;//(PR2+1)=FOSC/(PWM Fre*4)
;//FOSC=(PR2+1)*PWM Fre*4*TMR2 Prescale value=256*488*4*1=499712
CCP2CON=0X0C;
PwmValueSetup(DutyVar);
TMR2IF=0;
T2CKPS0=1;
T2CKPS1=1; //PRESCALE VALUE IS 16;
TMR2ON=1;
//T2CON=0X04;
do{}
while(TMR2IF==0);
//TRISB=0X00;
//RB6=0;
TMR2IF=0;
TRISC1=0;
}
void
PwmValueSetup(unsigned char DutyVar)
{
unsigned int Ccpr2Reg;
unsigned char BB;
//Pr2Reg=255;//Fosc/(Fre_Pwm*4)-1;
//DutyIni=0;
Ccpr2Reg=DutyVar*10;//Duty*4*(255+1)/100;
//AA=AA/100;
BB=Ccpr2Reg&0x03;
BB=BB<<4;
CCP2CON|=BB;
Ccpr2Reg=Ccpr2Reg>>2;
CCPR2L=Ccpr2Reg&0xff;
}
/*
void
Wdtcon_Set(unsigned int Rate)
{
WDTCON=0X00;
WDTCON|=0X01;
switch(Rate)
{
case 32:WDTCON|=0x00;break;
case 64:WDTCON|=0x02;break;
case 128:WDTCON|=0x04;break;
case 256:WDTCON|=0x06;break;
case 512:WDTCON|=0x08;break;
case 1024:WDTCON|=0x0a;break;
case 2048:WDTCON|=0xc;break;
case 4096:WDTCON|=0x0e; break;
case 8192:WDTCON|=0x10; break;
case 16384:WDTCON|=0x12; break;
case 32768:WDTCON|=0x14; break;
case 65536:WDTCON|=0x16; break;
default:break;
}
}
void
Wdt_Setup(void)
{
PSA=1;
PsReg_Set(8);//2S*X
Wdtcon_Set(65536);//2S
}
void
Fosc_Setup(long int FOSC)
{
OSCCON&=0x8f;
switch(FOSC)
{
case 31000:OSCCON|=0x00;break;
case 125000:OSCCON|=0x10;break;
case 250000:OSCCON|=0x20;break;
case 500000:OSCCON|=0x30;break;
case 1000000:OSCCON|=0x40;break;
case 2000000:OSCCON|=0x50;break;
case 4000000:OSCCON|=0x60;break;
case 8000000:OSCCON|=0x70; break;
default:break;
}
}
void
Ee_Wr(unsigned char EEADR1,unsigned char EEDATA1)
{
EEADR=EEADR1; //写地址
EEDATA=EEDATA1; //表示上电复位
WREN=1;
EECON2=0X55;
EECON2=0XAA;
WR=1;
while(WR);
}
unsigned char
Ee_Rd(unsigned char EEADR1)
{
EEADR=EEADR1; //写地址
RD=1;
while(RD);
return(EEDATA);
}
void
PSSetup(unsigned char Rate)
{
OPTION=0X88;
switch(Rate)
{
case 1:OPTION|=0x00;break;
case 2:OPTION|=0x01;break;
case 4:OPTION|=0x02;break;
case 8:OPTION|=0x03;break;
case 16:OPTION|=0x04;break;
case 32:OPTION|=0x05;break;
case 64:OPTION|=0x06;break;
case 128:OPTION|=0x07; break;
default:break;
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -