AVR的I/O用法笔记

来源:本站
导读:目前正在解读《AVR的I/O用法笔记》的相关信息,《AVR的I/O用法笔记》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AVR的I/O用法笔记》的详细说明。
简介:本文主要介绍了AVR的I/O用法

AVR的I/O有三个寄存器,DDRX,PORTX,PINX。

DDRX 方向,DDRX=1,输出;DDRX=0,输入。

例如设置PA0口为输入,即可写成DDRA&=~(1<

PORTX 分两种情况

如果DDR=1,即在输出状态的话,那么通过设置PORTX的值改变IO端口的电平

如果DDR=0,即在输入状态的话,那么PORT=1则使能上拉电阻,否则不使能。

PINX 此寄存器表示了该端口的实际电平,所以读I/O口的话,应该读PINX,而不是PORTX。

每个I/O口可以输出或吸纳20mA的电流,这一点在设计上要注意。

比如连接LED,键盘等。

以LED为例,LED上的压降是2v左右,正常的工作电流应该是10mA-20mA,可以通过此计算限流电阻的值。

如供电电压为5V,则限流电阻应为(5-2)/10mA=300(Ohm).

一旦将I/O口的工作方式设为输入方式后,必须等待一个时钟周期才能正确读到PIN值。

AVR单片机复位之后所有的I/O均为输入方式,上拉电阻不使能,所以呈现三态高阻输入态。

AVR的I/O寄存器被分配在SRAM地址空间中,可以通过IN、OUT、SBI、CBI这些指令直接访问I/O寄存器,也可以通过访问SRAM访问它们。

如数据手册中所示,例如PORTA,前面的$1B是I/O寄存器的空间地址,括号内的$3B是数据存储器的实际映射地址。

可以通过SBI和CBI指令方便地设置某一位,但是只能对$00-$1f即前32个I/O寄存器进行这种操作。

例如SBI 0x1B,0即是设置PORTA0为1,在速度要求很高的情况下可以直接嵌入这种汇编语句。

提醒:《AVR的I/O用法笔记》最后刷新时间 2024-03-14 01:11:04,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AVR的I/O用法笔记》该内容的真实性请自行鉴别。