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

📄 touch.c

📁 51单片机及其C语言程序开发实例光盘资料.rar
💻 C
字号:
#include<reg51.h>
#include"Config.h"
#include"IOCfg.c"
#include"TimeDLY.h"
#include"IIC_PCA8574.h"
#include"Touch.h"

//判断触发其处理函数:Touch_Sample()
bit Touch_Sample(INT8U tmode,INT32U tword,INT8U n,INT16U freq)
{
	bit x;
	INT16U addr=0;
	INT8U singl;
	INT8U temp,i,j;
	INT8U temp1,temp2,temp3,k,m;
	INT32U trig;
	INT8U Flag[8]={1,1,1,1,1,1,1,1};
	bit Touch_EN=1;
	INT8U sel=0x01;
	if(tmode==SINGLE)
	{
		do
		{
			singl = tword & 0xff;
			x=PCA8574_GetOne(0x43,temp);
			for(i=0;i<8;i++)
			{
				if(n&sel) Flag[i]=(bit)((temp&0x01)^(singl&0x01));
				sel = sel<<1;
				singl >>= 1;
				}
			for(j=0;j<8;j++) Touch_EN=Touch_EN | Flag[i];
			Touch_EN &= n;
			}
		while(Touch_EN);
		do
		{
			RAM_CS = 1;
			RAM_WE = 1;
			RAM_ADDR_L = addr&0xff;
			RAM_ADDR_L = (addr>>8)&0xff;
			RAM_CS = 0;
			RAM_WE = 0;
			T0_Delay(freq); 
			addr += 1;
			}
		while(addr<400);
		return 1;		
		}
	else if(tmode==TRI_T)
	{
		do
		{
			trig = (tword >> 8)&0xfff;
			x=PCA8574_GetOne(0x43,temp1);
			T0_Delay(freq);
			x=PCA8574_GetOne(0x43,temp2);
			T0_Delay(freq);
			x=PCA8574_GetOne(0x43,temp3);
			for(k=0;k<8;k++)
			{
				if(n&sel) 
					Flag[k]=(bit)((((temp1&0x01)<<2)|((temp2&0x01)<<1)|(temp3&0x01))^(trig&0x03));
				sel = sel<<1;
				trig >>= 3;
				}
			for(m=0;m<8;m++) Touch_EN=Touch_EN | Flag[m];
			Touch_EN &= n;
			}
		while(Touch_EN);
		do
		{
			RAM_CS = 1;
			RAM_WE = 1;
			RAM_ADDR_L = addr&0xff;
			RAM_ADDR_L = (addr>>8)&0xff;
			RAM_CS = 0;
			RAM_WE = 0;
			T0_Delay(freq); 
			addr += 1;
			}
		while(addr<400);
		return 1;
		}
	}

⌨️ 快捷键说明

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