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 + -
显示快捷键?