找回密码
 立即注册
查看: 52|回复: 3

AI8A8K64D4管脚动态切换问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-06-10 16:20:49

12

主题

17

回帖

146

积分

注册会员

积分
146
发表于 6 天前 | 显示全部楼层 |阅读模式
我现在用8个管脚, 对应8个继电器.

现在遇到硬件有的地方会虚焊, 导致有的继电器不能控制

所以我想把用到的管脚存在数组里, 动态的去切换,

比如P01, P02, P03, P04, P05, P06, P07, P08, 存到一个数组里, 然后根据eeprom里存储的顺序去切换,

请问这个sbit, 我该怎么存储数组比较好? 也没看到具体sbit的定义? 用u8 pin[8] = {P01, P02, P03, P04, P05, P06, P07, P08}; 可以吗?


/*  P0  */
sbit  P01 = P0^1;
sbit  P02 = P0^2;
sbit  P03 = P0^3;
sbit  P04 = P0^4;
sbit  P05 = P0^5;
sbit  P06 = P0^6;
sbit  P07 = P0^7;


回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-06-10 16:20:49

12

主题

17

回帖

146

积分

注册会员

积分
146
发表于 6 天前 | 显示全部楼层
请问下, 这个sbit是在哪里定义的?

具体是bit? 还是u8? 还是什么东东?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:208
  • 最近打卡:2025-06-16 08:41:37
已绑定手机

67

主题

1910

回帖

4291

积分

荣誉版主

无情的代码机器

积分
4291
发表于 6 天前 | 显示全部楼层
头文件里,可以存储一个字节代表P0.
0x01,0b00000001,对应P00 为 1,P0其它为0.
0x03,  0b00000011,   对应P00 P01为1,P0其它为0.
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5132

回帖

9140

积分

超级版主

DebugLab

积分
9140
发表于 6 天前 | 显示全部楼层
sbit是对sfr的位声明,不能这样使用
刚才帖子中提到的,访问IO口就是读写SFR
控制继电器,IO作为输出,只能写成P0=0xXX这种形式
你需要做的是控制XX的值
思路如下
u8 pin[8] = {3, 2, 1, 0, 7, 6, 5, 4}; //自定义顺序
P0|=(0x01<<pin[0]); //P03置1
P0&=~(0x01<<pin[0]); //P03置0
……
P0|=(0x01<<pin[7]); //P04置1
P0&=~(0x01<<pin[7]); //P04置0
自定义顺序中的8个字节保存到EEPROM

DebugLab
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 11:10 , Processed in 0.260549 second(s), 65 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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