久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM8模擬 IIC 觸摸芯片按鍵值讀取程序
[打印本頁]
作者:
climberwin
時間:
2018-9-4 09:33
標題:
STM8模擬 IIC 觸摸芯片按鍵值讀取程序
單片機型號:STM8AF5286UC
SCL PB4
SDA PB5
/////////////////////////////觸摸按鍵端口和引腳配置//////////////////////////////
#define Touch_IIC_PORT GPIOB // 觸摸按鍵引腳配置 SCL PB4;SDA PB5;INT PB3
#define Touch_IIC_SDA GPIO_PIN_5
#define Touch_IIC_SCL GPIO_PIN_4
#define Touch_Key_Int GPIO_PIN_3 //PB3 觸摸按鍵INT輸入
#define CON_ADDR 0x81 // {A[6:0] + RWB} = 81H
#define SDA_On GPIO_WriteHigh(Touch_IIC_PORT,Touch_IIC_SDA)
#define SDA_Off GPIO_WriteLow(Touch_IIC_PORT,Touch_IIC_SDA)
#define SCL_On GPIO_WriteHigh(Touch_IIC_PORT,Touch_IIC_SCL)
#define SCL_Off GPIO_WriteLow(Touch_IIC_PORT,Touch_IIC_SCL)
///////////////////////////////////////////////////////////////////////////////
unsigned int Touch_Data; //觸摸按鍵的值
unsigned int ReadKey(void)
{
unsigned char bitnum,temp,addr;
unsigned int key2byte;
unsigned char bit_temp;
addr=CON_ADDR;
key2byte=0xffff;
SDA_Off; // 拉低 SDA 端口送出 START 信號
for(temp=0;temp<4;temp++){} //延時
//發送 8 位地址字節 (A[6:0]+RWB)
for(bitnum=0;bitnum<8;bitnum++)
{
SCL_Off;
temp=addr&0x80;
if(temp==0x80)
{SDA_On;}
else
{SDA_Off;}
addr=addr<<1;
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
}
SDA_On; //釋放 SDA 端口,將 SDA 設置為輸入端口
SCL_Off;
GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_IN_PU_NO_IT );//SDA輸入
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
bit_temp=GPIO_ReadInputPin(Touch_IIC_PORT,Touch_IIC_SDA) ;
//if(bit_temp==0x01) //讀 ack 回應
//ERR=0; //ack 信號沒有讀到,指示通信有誤
//讀 16 位按鍵數據字節(D[15:0])
for(bitnum=0;bitnum<16;bitnum++)
{
SCL_Off;
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
bit_temp=GPIO_ReadInputPin(Touch_IIC_PORT,Touch_IIC_SDA) ;
if(bit_temp==0x01)
{
key2byte=key2byte<<1;
key2byte=key2byte|0x01;
}
else
{
key2byte=key2byte<<1;
}
}
GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_OUT_PP_HIGH_FAST );//SDA輸出
SCL_Off;
SDA_On;
for(temp=0;temp<40;temp++){} //延時
SCL_On; //發送 NACK 信號
for(temp=0;temp<40;temp++){} //延時
SCL_Off;
SDA_Off;
for(temp=0;temp<40;temp++){} //延時
SCL_On;
for(temp=0;temp<40;temp++){} //延時
SDA_On;
key2byte=key2byte^0xffff;
return(key2byte);
}
void IO_config(void)
{
GPIO_Init(Touch_IIC_PORT,Touch_Key_Int,GPIO_MODE_IN_PU_NO_IT ); //INT輸入
GPIO_Init(Touch_IIC_PORT,Touch_IIC_SCL,GPIO_MODE_OUT_PP_HIGH_FAST );//SCL輸出
GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_OUT_PP_HIGH_FAST );//SDA輸出
//GPIO_Init(Touch_IIC_PORT,Touch_IIC_SDA,GPIO_MODE_IN_PU_NO_IT );//SDA輸入
}
int main(void)
{
/*設置內部高速時鐘16M為主時鐘*/
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
IO_config();
while(1)
{
if (GPIO_ReadInputPin(Touch_IIC_PORT,Touch_Key_Int) == 0)
{
Touch_Data=ReadKey();
if(Touch_Data==0x0400)
{BAR1_Y_ON();}
else if(Touch_Data==0x0800)
{BAR2_Y_ON();}
else if(Touch_Data==0x1000)
{BAR3_Y_ON();}
else
{;}
}
else
{
BAR1_Y_OFF();BAR2_Y_OFF();BAR3_Y_OFF();
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本亚洲精品
|
狠狠干天天干
|
国产美女在线精品免费
|
久久久69
|
欧美精品免费观看二区
|
婷婷综合色
|
久久i
|
国产精品乱码一二三区的特点
|
福利一区视频
|
国产成人精品一区二
|
在线中文视频
|
国产视频福利
|
夜夜久久
|
97人人澡人人爽91综合色
|
中文字幕免费视频
|
日韩a级片
|
久久综合久久综合久久综合
|
久久综合色综合
|
欧美精品久久久久久久久久
|
欧美1区2区
|
亚洲视频不卡
|
av日日操
|
国产精品精品视频一区二区三区
|
美日韩视频
|
亚洲国产成人一区二区
|
www.亚洲国产精品
|
免费在线性爱视频
|
亚洲福利一区二区
|
国产传媒视频在线观看
|
男人天堂网址
|
国产1区2区
|
国产精品美女一区二区三区
|
日韩a视频
|
国产精品亚洲成在人线
|
91日韩在线
|
91精品国产自产在线老师啪
|
国产91精品久久久久久久网曝门
|
亚洲精品91
|
一级久久久久久
|
成人精品鲁一区一区二区
|
国产亚洲精品a
|