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

📄 mtouch1.c

📁 用pic16f883做的一个键的触摸按键(MTOUCH)实现电容式触摸按键的代码。有mtouch1.h和mtouch1.c构成
💻 C
字号:
/****************************************************************************
*	Title	:	mTouch Slider Module										*
*	UpDate	:	2008.12.25													*																		*
*	Device	:	PIC16F883I/P												*																									*
*	Compiler:	Hi-tech	V9.60 std											*
*	IDE		:	MPLAB IDE V8.00	                                            *	
*   AUTHER	:	WOOLLEY										            	*
****************************************************************************/
#include "mtouch1.h"
#include <pic.h>
__CONFIG(MCLRDIS&WDTDIS&UNPROTECT);


void Abit_Delay(unsigned int delay ) 
{
	while(--delay) NOP();
}
void Abit_Avreage_Value(void)
{
	OPTION=Option_128Pre;
	CMCON0=0B00001011;
	for (Avr_Index=0;Avr_Index<4;Avr_Index++)
	{
		TMR0=CLR;
		CMPON=SET;//比较器的使能;
		Abit_Delay(Delay25ms);
		CMPON=CLR;
		Current_Frq=TMR0;
		Avr_Value+=Current_Frq;//4次平均值总和
	}
	Freq_Avr_Value=Avr_Value>>2;//总的平均值右移2即除以4取得平均值
	Avr_Value=Avr_Index=CLR;
	Trip_Point=(Trip_per*100)/Freq_Avr_Value;
}
void Abit_Avreage_Value_Loop(void)
{
	OPTION=Option_128Pre;
	CMCON0=0B00001011;
	TMR0=CLR;
	CMPON=SET;//比较器的使能;
	Abit_Delay(Delay50ms);
	CMPON=CLR;
	Freq_Avr_Value=TMR0;
	Trip_Point=(Trip_per*100)/Freq_Avr_Value;
}
void Abit_Get_Frequency(void)
{
	OPTION=Option_128Pre;
	CMCON0=0B00001011;
	TMR0=CLR;
	CMPON=SET;//比较器的使能;
	Abit_Delay(Delay25ms);
	CMPON=CLR;
	Current_Frq=TMR0;
	TMR0=CLR;
	OPTION=0B11010111;
}
void main(void)
{
	FOSC4=CLR;
	Abit_Delay(50000);
	TRIS=0B00001001;
	Abit_Avreage_Value();
	Push_Flag=CLR;
	while(1)
	{
		Abit_Get_Frequency();
		TMR0=CLR;
		if(Current_Frq<(Freq_Avr_Value-Trip_Point))
		{
			Avr_Cnt=CLR;
			LED1=CLR;

		}
		else
		{
			LED1=SET;
		
			if(Avr_Cnt++>59)
			{
				Avr_Cnt =CLR;
				Abit_Avreage_Value_Loop();
			}
		}
		Current_Frq=CLR;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -