AVR单片机端口赋值问题

2019-07-15 20:35发布

tica, SimSun, sans-serif">我应用的单片机是Atmeg16,在一本书上我看到对某一端口赋值8位二进制数,
void HC164_send_byte(unsigned char byte)  //这里写的是一个串口扩展的发送函数
{
unsigned char i ;
   for (i = 0;i<=7;i++)
   {
    PORTA.0 = byte & 1 << i   //这是什么意思呢,一个八位的char类型的数值赋值给某一个端口,它是怎样工作的呢?还请哪位高手给解释一下,在此谢过!

    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
依然落叶飘零
2019-07-15 21:26
这个程序是串口传输一个8位的无符号数,低位开始传输。“<<”左移的优先级比“&”与的优先级高,以此先执行 1<<i 操作。就是 1(十六进制为 0x01)左移 i 位。依次得出的结果为 0x00,0x01,0x02,0x04,0x08……(十六进制表示),再和 byte与则等到对应的位。PORTA.0 = byte & 1 << i 就是分别取byte的每一位,通过PORTA.0传送出去,最低位开始传输。

一周热门 更多>