我正在尝试调试一段代码,我无法弄清楚下面的代码实际上是做什么的。任何人都可以帮我解释或给我关于以下代码功能的想法吗?
uint8_t get_pca9955a_slave_loaded(uint8_t _slave)
{
uint8_t x = (uint8_t)(_slave / 16);
uint8_t y = (uint8_t)(_slave % 16);
uint16_t mask = 1U << y;
if (check_pca9955a_slave_valid(_slave)) {
return (uint8_t)((pca9955a_slaves_loaded[x] & mask) ? 1U : 0U);
} else {
return 0U;
}
}
亲切的问候, 翔
答案 0 :(得分:0)
它将一个字节解包为高半字节x和低半字节y。取mod 16与取四个最低位相同,除以16与取剩余位相同。
然后使用y计算一个位掩码,将x作为偏移量放入某种你没有共享的全局变量表中,检查是否在条目x中设置了位y,并返回1或0无符号字节。