有关74hc164的问题
看了马老师写的74hc164的程序,有一点想不明白。hc164_data=byte&1<<i,hc164_data的结果为什么会等于0和1呢?假如byte为10011100,i为3,hc164_data应该为00000100(0x04),实际为什么会是1?请各位大侠指点一下,本人刚入门。谢谢!附上马老师写的74hc164串行发送程序void HC164_send_byte(char byte)
{
char i;
for (i=0;i<=7;i++)
{
HC164_data = byte & 1<< i;
HC164_clk = 1;
HC164_clk = 0;
}
} 回复【楼主位】toups
-----------------------------------------------------------------------
我也是刚刚学习马老师的书,我的理解是这样的,不知道对不对?
书上的程序之前有宏定义:
#define HC164_data PORTA.0
#define HC164_clkPORTA.1
CodeVisionAVR 对C语言进行了扩充,定义了新的数据类型sfrb 和sfrw 使C 语言可以直
接访问MCU 的有关寄存器如 sfrb DDRD=0x11,它使用IN OUT汇编指令
位变量的非0值即为真(1)
页:
[1]