胡嘉鑫 发表于 2024-11-23 11:14:55

可以试试用一组adc值,不同按键接上不同电阻,用adc电压检测判断那个按键按下,io不够是个不错的法子

胡嘉鑫 发表于 2024-11-23 11:15:48

但是这样好像需要改电路

_奶咖君_ 发表于 2024-11-23 11:22:54

胡嘉鑫 发表于 2024-11-23 11:14
可以试试用一组adc值,不同按键接上不同电阻,用adc电压检测判断那个按键按下,io不够是个不错的法子 ...

你这里成另一种方案了{:4_187:}

Lkck8210 发表于 2024-11-24 09:51:48

请善用bdata,速度快,效率高
sbit C1 = P0^4;
sbit C2 = P0^3;
sbit C3 = P0^1;
sbit C4 = P0^0;
sbit R1 = P0^7;
sbit R2 = P0^6;
sbit R3 = P0^5;
sbit R4 = P1^5;
uchar bdata GPIO = 0xFF;
sbit GPIO_0 = GPIO^0;
sbit GPIO_1 = GPIO^1;
sbit GPIO_2 = GPIO^2;
sbit GPIO_3 = GPIO^3;
sbit GPIO_4 = GPIO^4;
sbit GPIO_5 = GPIO^5;
sbit GPIO_6 = GPIO^6;
sbit GPIO_7 = GPIO^7;

void Write_GPIO(uchar Dat)
{
        GPIO = Dat;
        C4 = GPIO_0;
        C3 = GPIO_1;
        C2 = GPIO_2;
        C1 = GPIO_3;
        R1 = GPIO_4;
        R2 = GPIO_5;
        R3 = GPIO_6;
        R4 = GPIO_7;
}
uchar Read_GPIO()
{
        uchar Dat;
        GPIO_0 = C4;
        GPIO_1 = C3;
        GPIO_2 = C2;
        GPIO_3 = C1;
        GPIO_4 = R1;
        GPIO_5 = R2;
        GPIO_6 = R3;
        GPIO_7 = R4;
        Dat = GPIO;
        return Dat;
}

Tuier 发表于 2024-11-24 11:29:01

Lkck8210 发表于 2024-11-24 09:51
请善用bdata,速度快,效率高

不错不错,另一种变换思路!

soma 发表于 2024-11-24 13:23:54

Lkck8210 发表于 2024-11-24 09:51
请善用bdata,速度快,效率高

还能这样玩啊
页: 1 [2]
查看完整版本: 不在一组IO口的矩阵按键扫描程序C语言如何处理?