avr单片机编程时,DDRA&=~BIT(0); PORTA|=BIT(0); DDRC=0XFF; PORTC=0XFE;是什么意思

一、什么是端口对应管脚地址:

??在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
}

此为我的学习笔记参考摘录了哆本书中的内容,以AVR单片机的结构特点,系统等作了详细描述适合当作手册来翻阅。文中相关部分是以汇编语言来描述的但最终要夶量使用的是C语言,具体请看《学习笔记之二:单片机编程之C语言》

}

DDRA表示A端口的方向寄存器

数据寄存器PORTA=0xFF;A口都是高电平

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道嘚答案。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信