AVR 单片机 DDRA=0X0F,PORTX=0X0F,PA口的低四位输出什么? 为何

AVR
单片机 DDRA=0X0F,PORTX=0X0F,PA口的低四位输出什么? 为何高四位:不带上拉的输入状态 为何

在AVR单片机中,DDRx是代表此口的方向:0为输入,1为输出.与PORTx有关.
如:DDRx=0;PORTx=0;代表此口为悬空输入.
    DDRx=0;PORTx=1;代表此口为上拉输入.
    DDRx=1;PORTx=0;代表此口输出0.
    DDRx=1;PORTx=1;代表此口输出1.x为A,B,C,D其中一个。追问

请问低四位是?

追答

最右边是最低位,最左边是最高位,例如1000 0000,1是最高位,0是最低位。你这里低四位在方向寄存器中对应的配置位均为0 ,在数据寄存器中对应的配置位均为1,对应我刚刚的回答,低4位的模式就是带上拉的输入。

追问

方向寄存器和PORTX:00001111为何代表PA口输出低电平

低四位

追答

不对吧?方向寄存器设置为1,数据寄存器设置9为0才是输出低电平,也就是PORTA = 0x00,DDRA = 0x0F。同理,要让高四位输出电平就是不对吧?方向寄存器设置为1,数据寄存器设置为0才是输出低电平。所以在这PORTA寄存器的低4位全为0,DDRA的低四位全为。后者控制是输入模式还是输出模式,前者在后者为输出模式的基础上决定是高电平还是低电平。

我去。。又打错了

方向寄存器设置为1,数据寄存器设置为0才是输出低电平,也就是PORTA = 0x00,DDRA = 0x0F。后者控制是输入模式还是输出模式,前者在后者为输出模式的基础上决定是高电平还是低电平。

追问

我们那题的答案是PA口低四位输出高电平 PA口高四位是不带上拉的输入

追答

把原题发给我看下

追问

在AVR ATmega16单片机中,利用c语言程序编程时,执行DDRA=0X0F,PORTX=0X0F代码后,PA口的低四位( ),PA口高四位()

第二孔也可以填高阻态

追答

可以对照我最开始的回答啊。你看你原题里两个寄存器的低四位都是1,所以对照过去就是高电平输出。两个寄存器的高四位都是0,所以是浮空/悬空输入,在AVR单片机的IO这边可以把悬空输入理解位高阻态。

追问

谢谢

明白了

温馨提示:答案为网友推荐,仅供参考
相似回答