beep.c
来自「自己设计的pic单片机开发板源程序和说明书(内有原理图)支持pic16系列28脚」· C语言 代码 · 共 63 行
C
63 行
/*#include "..\demo\def.h"
#include "..\demo\demo.h"
#include "..\demo\PIC_EVB.h"*/
void set_pwm2(int16 fpwm)
{
int16 duty;
int8 pr2_val,t2div= 16;
pr2_val = (MCLK/fpwm/t2div)>>2 - 1; // mclk/4/fpwm/t2div-1
duty = (pr2_val+1)<<1; //50% duty.
//ccsc defined: duty = Tduty/(t2div*Tclk)
//Tperiod = Tclk*4*t2div*(pr2+1);
//pwm is 50%,so Tduty = Tperiod / 2
//so duty = Tperiod/2/t2div/Tclk=2*(pr2+1)
setup_timer_2(T2_DIV_BY_16, pr2_val, 1);
set_pwm2_duty(duty);
}
int8 Test_beep()
{
int16 duty,fpwm;
int8 i;
fpwm = 1000; //1000hz.
set_pwm2(fpwm);
setup_ccp2(CCP_PWM);
// set_tris_c(0xfd);
output_low(beep);
while(TRUE)
{
i = getc();
if(i == '=')
{
if(fpwm<20000)
{
fpwm+=100;
set_pwm2(fpwm);
printf("%ld\n",fpwm);
// putc(fpwm>>8);
// putc(fpwm&0x00ff);
}
}
else if(i == '-')
{
if(fpwm>500)
{
fpwm-=100;
set_pwm2(fpwm);
printf("%ld \n",fpwm);
// putc(fpwm>>8);
// putc(fpwm&0x00ff);
}
}
else if(i == ESC_KEY)
{
input(beep);
return(0);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?