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条回答
依然落叶飘零
1楼-- · 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传送出去,最低位开始传输。
tiannanxingyu
2楼-- · 2019-07-15 23:56
 精彩回答 2  元偷偷看……
愤怒的企鹅
3楼-- · 2019-07-16 05:54
2楼正解,如果LZ还不解,你应该去看一下串口通信,了解了串口是怎么送发数据了,那应该就清楚了,原理就重要,了解了原理,学习起来就容易多了
654700926
4楼-- · 2019-07-16 07:03
愤怒的企鹅 发表于 2014-4-1 11:54
2楼正解,如果LZ还不解,你应该去看一下串口通信,了解了串口是怎么送发数据了,那应该就清楚了,原理就重 ...

谢谢各位的点播

一周热门 更多>