一、什么是端口对应管脚地址:
??在AVR学习中会遇到类似于LED闪烁灯闪烁灯示例,其中我们可以看到诸如如下示例:
??这里可以看到DDR已经將C口设置为输出状态,同时使用PORT寄存器将0xfe管脚设置为高电平
??其中PORT寄存器即数据寄存器,是通过AVR的IO操作将数据输出至某一管脚但其寄存器是配合DDR寄存器同时作用的,若DDR设置为输出状态则PORT是相应的会设置为1,即高电平输出反之会设置为0,即低电平输出
二、寄存器怎样对应地址:
??首先这里可以理解一下DDR寄存器如何设置方向的:
??DRC其对应了PC7~PC0 8个引脚,若我们在程序中将DDRC设置為0xFF时则表示将C端口所对应的8个引脚均被设置为输出,若将DDRC设置为0x00时则将其设置为输入
??若我们将DDRC设置为0xF0时,则表示将C端口对应的低4位的4个引脚(PC0~PC3)设置为输入高4位的4个引脚(PC4~PC7)设置为输出,若将DDRC设置为0x0F则反之。
??这里可以得出例如在PC7~PC0的8个管脚中对应二进制位数如丅:
??其中前4位代表了高4位的端口,后四位则代表了低4位的端口
??同时在AVR中,PORT与DDR是相关联的两个寄存器每个管脚的高低电平取决於DDR与PORT关联,其关系如下:
0 | 0 | |
0 | 0 | 被外部电路拉低时将输出电流 |
0 | ||
0 | ||
x代表端口号(A、B、C、D、E、F、G)
n代表个端口号的位号(0~7)
??所以由此得知若DDR设置端口为输出状态时,将该低电平地址赋值给PORT则对应端口号会设置成指定的高低电平。
??趁计算管脚电平位顺便复习一下位運算的方式方法:
如果两个相应的二进制位都为1,则该位的结果值为1;否则为0 |
若参加运算的两个二进制位同号则结果为0(假)異号则结果为1(真) |
~是一个单目(元)运算符,用来对一个二进制数按位取反即将0变1,将1变0 |
左移运算符是用来将一个数嘚各二进制位全部左移N位,右补0 |
表示将a的各二进制位右移N位,移到右端的低位被舍弃,对无符号数,高位补0 |