这是我在这里的第一篇文章,所以请原谅我做错了什么:) 这是我的情况。我正在使用 MPLAB 和 HI-Tech C 编译器为 PIC16F876 编写一个简单的数据传输操作。
我有一个称为数据的字符,我想访问数据中的位并将它们发送到端口 B0,从 MSB 开始。
在组装中,我会简单地做:
PORTB,0 = data,7
// 要获取 MSB 并将其放在端口 B0 上,然后我将对所有位执行此操作。
然而,在 C 中,这似乎更复杂。我做了一些研究,发现了一个有效的功能:
getBit(char data, int bitNumber)
{
return (data & (1 << bitNumber-1)) != 0;
}
然后我只使用:
PORTBbits.RB0 = getBit(data,7);
这没关系,但是很乱而且似乎需要更长的时间,我不知道为什么我需要一个额外的功能......所以我的问题是:没有简单的方法来访问寄存器中的位吗?喜欢:
PORTBbits.RB0 = data,7
我不明白为什么编译器无论如何都不会将其转换为程序集??!!!!
提前致谢。问候,蒂姆。