请问这样的IO操作怎么简洁?
本帖最后由 sky999 于 2023-3-12 15:10 编辑sbit IN1 P3^1;
sbit IN2 P2^2;
sbit IN3 P3^3;
sbit IN4 P1^4;
....纯粹是写程序中突然发现好奇,
假设有30个IO是IN,IO口又都杂乱不按规律来的,下面写判断的时候很麻烦,每个都要判断和赋值,我意思是,能不能用结构体数组来控制IO,然后在for循环内操作?谢谢
编辑后好像总被网页自动删除了
if(IN1==0)
{
X=0;
}
elseX=1;
假设30个IO都要进行这样的判断 没有更简洁的办法,只能逐个判断
由于8051单片机体系的SFR不支持间接寻址,所以无法使用指针或者数组的方式访问SFR
8051的I/O口也是通过SFR进行访问的,所以同样也无法使用指针或者数组的方式进行访问
我曾经也像你这样尝试过,不行的!:lol 你可以试试用联合试试 我写PLC程序时也有类似情况,解决办法是定义一些地址连续的布尔变量,然后把零散的数字输入赋值给这些布尔变量,程序光操作这些布尔变量就可以了。 可以, 用异或 IN_P1 = P1;
if !(IN_P1 ^ IN_P1_bak)
IN_P1_new =IN_P1 ;
IN_P1_bak =IN_P1 ;
想过这个问题,,,也类比STM32标准库的形式类比的写过一个,,发现有些地方用起来不符合预期,现在想想可能是没有注意函数重入的问题,,
页:
[1]