"); //-->
上图为原理电路
是否上拉 |
DDRB状态 |
PORTB状态 |
PB0电压 |
LED电压 |
不上拉 |
0x01 |
0x01 |
4.56v |
1.87v |
上拉 |
0x00 |
0x01 |
1.69v |
1.63v |
不上拉 |
0x00 |
0x00 |
0v |
0v |
不上拉 |
0x01 |
0x00 |
0v |
0v |
对于AVR单片机来说,它的的IO口是真正的双向IO口,它的上拉电阻的设置只有一种情况,如上表所示DDRB=0x00 PORTB="0x01",这时如果外部电路给引脚输入高电平,由于COMS门没有导通,所以端口是高阻状态,如果外部电路输入的是低电平,那么COMS导通,电阻上拉,引脚会从单片机内部输出一电流,所以对于上面的电路来说二极管的电压是1.69v,会比1.87v的时候暗,这就是由于上拉电阻的作用。但是不管在任何时候引脚的状态都可以通过PINB读出,因为PINB本身不是一个寄存器,
上图是ATMega16的IO口电路,可以结合上表弄明白AVR单片机的IO口究竟是怎样的。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。