toups 发表于 2011-9-1 11:50:30

有关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;
}
}

ahit 发表于 2011-9-24 14:32:52

回复【楼主位】toups
-----------------------------------------------------------------------
我也是刚刚学习马老师的书,我的理解是这样的,不知道对不对?


书上的程序之前有宏定义:
#define HC164_data PORTA.0
#define HC164_clkPORTA.1

CodeVisionAVR 对C语言进行了扩充,定义了新的数据类型sfrb 和sfrw 使C 语言可以直
接访问MCU 的有关寄存器如 sfrb DDRD=0x11,它使用IN OUT汇编指令

位变量的非0值即为真(1)
页: [1]
查看完整版本: 有关74hc164的问题