dpj8051 发表于 2011-3-6 15:41:02

CVAVR问题咨询

.......
#define HC164_data PORTA.0
#define HC164_clk PORTA.1
.......
.......
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;
    }
}
.......
马老师:以上程序,是您在《基于 AVR 的单片嵌入式系统原理与实践应用》某章节中的内容。现有一问题想咨询:HC164_data = byte & 1<< i;这条赋值语句,右侧byte & 1<< i是字节类型,而左侧是位类型,相互如何赋值?(即在CVAVR中,赋值规则如何?)在C51中,可以采取强制类型转换的,将字节型(byte)强制转化为位(bit)类型。烦请马老师回复,谢谢,再见。

tangwei039 发表于 2011-3-6 16:12:36

有人问过,请看以前帖子。马老师也讲的很清楚。

dpj8051 发表于 2011-3-6 17:18:00

回复【1楼】tangwei039
-----------------------------------------------------------------------

谢谢提醒。

machao 发表于 2011-3-8 11:18:23

这里隐藏着一个“强制类型转换”,将字节型(byte)强制转化为位(bit)类型:不为另为“1”,为另则是“0”。
这个是C的规则。
页: [1]
查看完整版本: CVAVR问题咨询