?? touch.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 + -