- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AVR学习资料整理.
Atmega16引脚图
I/O端口引脚配置
I/O 端口寄存器的说明
端口A数据寄存器- PORTA
端口A数据方向寄存器-DDRA
端口A输入引脚地址-PINA
Bit 7 6 5 4 3 2 1 PORTA PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 读/写 R/W R/W R/W R/W R/W R/W R/W 初始值 0 0 0 0 0 0 0
AVR的真正双向IO结构就复杂多了,单是控制端口的寄存器也有4个 PORTx.DDRx,PINx,SFIOR(PUD位),不过功能也强劲多了作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的读- 修改- 写功能。这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会无意地改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC 和地相连。 (很多数字器件都有保护二极管,在低功耗应用时要考虑保护二极管的电流倒灌的影响)数据寄存器PORTx和数据方向寄存器DDRx为读/ 写寄存器,而端口输入引脚PINx为只读寄存器。但是需要特别注意的是,对PINx 寄存器某一位写入逻辑1“ 将造成数据寄存器相应位的数据发生0“ 与“1“ 的交替变化。当寄存器MCUCR 的上拉禁止位PUD置位时所有端口引脚的上拉电阻都被禁止。在( 高阻态) 三态({DDxn, PORTxn} = 0b00) 输出高电平({DDxn, PORTxn} = 0b11) 两种状态之间进行切换时,上拉电阻使能({DDxn, PORTxn} = 0b01) 或输出低电平({DDxn,PORTxn} = 0b10) 这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果使用情况不是这样子,可以通过置位SFIOR 寄存器的PUD 来禁止所有端口的上拉电阻。在上拉输入({DDxn, PORTxn} = 0b01)和输出低电平({DDxn,PORTxn} = 0b10)之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn} = 0b00) 或输出高电平({DDxn, PORTxn} = 0b1) 作为中间步骤。不论如何配置DDxn,都可以通过读取PINxn 寄存器来获得引脚电平PINxn寄存器的各个位与其前面的锁存器组成了一个同步器。这样就可以避免在内部时钟状态发生改变的短时间范围内由于引脚电平变化而造成的信号不稳定。其缺点是引入了延迟。
AVR IO具备多种IO模式高阻态多用于高阻模拟信号输入,例如ADC数模转换器输入,模拟比较器输入弱上拉状态(Rup=20K~50K)输入用。为低电平信号输入作了优化,省去外部上拉电阻,例如按键输入,低电平中断触发信号输入推挽强输出状态驱动能力特强(20mA),可直接推动LED,而且高低驱动能力对称使用注意事项:写用PORTx,读取用PINx实验时,尽量不要把管脚直接接到GND/VCC,当设定不当,IO口将会输出/灌入 80mA(Vcc=5V)的大电流,导致器件损坏。作输入时:通常要使能内部上拉电阻,悬空(高阻态)将会很容易受干扰。(51的抗干扰能力强,是因为51永远有内部电阻上拉)尽量不要让输入悬空或模拟输入电平接近VCC/2,将会消耗太多的电流,特别是低功耗应用场合------CMOS电路的特点读取软件赋予的引脚电平时需要在赋值指令out 和读取指令in 之间有一个时钟周期的间隔,如nop 指令。功能模块(中断,定时器)的输入可以是低电平触发,也可以是上升沿触发或下降沿触发。用于高阻模拟信号输入,切记不要使能内部上拉电阻,影响精确度。例如ADC数模转换器输入,模拟比较器输入?
作输出时:采用必要的限流措施,例如驱动LED要串入限流电阻
复位时复位时内部上拉电阻将被禁用。如果应用中(例如电机控制)需要严格的电平控制,请使用外接电阻固定电平
休眠时作输出的,依然维持状态不变作输入的,一般无效,但如果使能了第二功能(中断使能),其输入功能有效。例如外部中断的唤醒功能。
AVR的C语言IO操作:AVR的C语言基于ANSI C,没有像51那样扩展了位操作(布尔操作),虽然汇编指令里面有SBI/CBI/SBIC/SBIS指令所以需要采用?位逻辑运算来实现,这是必须要掌握的。IO口和功能寄存器的操作方法一样,但对于部分功能寄存器的读写有特殊要求,请参看手册。不必考虑代码效率的问题,如果可能,GCCAVR会自动优化为SBI/CBI/SBIC/SBIS指令,跟汇编的效率是
文档评论(0)