本帖最后由 陈立业 于 2020-6-9 12:29 编辑
sbit CLK = P1^4; //时钟
sbit DIO = P1^5; //数据
uchar Scan_Key(void)
{ // 按键扫描
uchar i;
uchar rekey;
Start1650();
WrByte1650(0x49); //读按键命令
Ask1650();
//DIO = 1;
SET_SDA_IN_TM1650(); //切换为输入模式
for(i=0;i<8;i++)
{
CLK = 1;
rekey = rekey<<1;
if(DIO)
{
rekey++;
}
Delay_5us();
CLK = 0;
}
SET_SDA_OUT_TM1650(); //切换为输出模式
Ask1650();
Stop1650();
return(rekey);
}
void SET_SDA_IN_TM1650(void) //切换为输入模式
{
P1CON=0x5c; //设置为0101 1100输入模式
P1PH=0x20;
}
void SET_SDA_OUT_TM1650(void) //切换为输出模式
{
P1CON=0x7c; //设置为0111 1100强推挽模式
P1PH=0x00; //设置为0000 0000
} |