找回密码
 立即注册
查看: 1674|回复: 9

请问这样的IO操作怎么简洁?

[复制链接]

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2023-3-12 15:09:16 | 显示全部楼层 |阅读模式
本帖最后由 sky999 于 2023-3-12 15:10 编辑

  1. sbit IN1 P3^1;
  2. sbit IN2 P2^2;
  3. sbit IN3 P3^3;
  4. sbit IN4 P1^4;
  5. ....
复制代码
纯粹是写程序中突然发现好奇,
假设有30个IO是IN,IO口又都杂乱不按规律来的,下面写判断的时候很麻烦,每个都要判断和赋值,我意思是,能不能用结构体数组来控制IO,然后在for循环内操作?谢谢
回复

使用道具 举报 送花

46

主题

108

回帖

604

积分

高级会员

积分
604
发表于 2023-3-12 15:13:08 | 显示全部楼层
编辑后好像总被网页自动删除了

if(IN1==0)
{
  X[0]=0;
}
else  X[0]=1;

假设30个IO都要进行这样的判断
  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-3-13 12:28:14 | 显示全部楼层
没有更简洁的办法,只能逐个判断
由于8051单片机体系的SFR不支持间接寻址,所以无法使用指针或者数组的方式访问SFR
8051的I/O口也是通过SFR进行访问的,所以同样也无法使用指针或者数组的方式进行访问

点评

好的,谢谢  发表于 2023-3-13 20:30
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-01-31 17:22:42

3

主题

31

回帖

293

积分

中级会员

积分
293
发表于 2023-3-18 09:32:59 | 显示全部楼层
我曾经也像你这样尝试过,不行的!:lol
  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2023-3-20 10:53:31 | 显示全部楼层
你可以试试用联合试试
  • 打卡等级:以坛为家II
  • 打卡总天数:488
  • 最近打卡:2025-05-02 07:02:30
已绑定手机

27

主题

693

回帖

1954

积分

金牌会员

打工人

积分
1954
发表于 2024-1-18 10:34:48 | 显示全部楼层
我写PLC程序时也有类似情况,解决办法是定义一些地址连续的布尔变量,然后把零散的数字输入赋值给这些布尔变量,程序光操作这些布尔变量就可以了。
打工人
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-18 10:52:45 | 显示全部楼层
可以, 用异或
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-1-18 10:57:39 | 显示全部楼层
  IN_P1 = P1;
  if !(IN_P1 ^ IN_P1_bak)
         IN_P1_new =  IN_P1 ;
  IN_P1_bak =  IN_P1 ;
  
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-1-18 11:06:25 | 显示全部楼层
想过这个问题,,,也类比STM32标准库的形式类比的写过一个,,发现有些地方用起来不符合预期,现在想想可能是没有注意函数重入的问题,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 00:47 , Processed in 0.135327 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表