AVR 学习.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR 学习

第一章 通用I/O端口的结构与应用 1 AVR单片机I/O口引脚配置表 工作状态 DDRx.n PORTx.n PINx.n 功能描述 输入状态 0 0 读入端口引脚电平状态 端口处于输入状态,内建上拉电阻无效 1 端口处于输入状态,内建上拉电阻打开 输出状态 1 0 对PINx不影响端口状态 端口输出低电平“0” 1 端口输出低电平“1” 设计电路时,如果良好利用AVR内部的I/O口上拉电阻,可节省外部的上拉电阻。 注:I/O口在使用时还需注意一组端口的电流综合不能超过一定限额,具体数值请查询数据手册。 例: #include avr/io.h //AVR-LIBC总控头文件 Unsigned char port_value; //定义一个无符号字符型变量 DDRD = 0xFF; //设置PD0~PD7均为输出端口 PORTD = 0xA3; //在PD端口输出0xA3(0 DDRD = 0x00; //设置PD0~PD7均为输入端口 port_value = PIND; //读入PD端口状态到变量port_value 2 端口的位操作 在以一个完整字节操作PC口相关寄存器是,ATmega48单片机会自动屏蔽对于“不存在”的PC6、PC7的操作,免除了我们使用位操作。 在使用取反运算是,需要将其与“逻辑非”运算符“!”区别。逻辑非操作只关心操作数是否为0,若为0就返回一个非0的值,取反操作则是对操作数执行“按位逐个取反”的操作。 在macros.h头文件中,定义了一个“#define BIT(x)(1(x))”宏,用该宏来操作位变量,编译后生成的代码质量更高。如下例: #define PORTA0 0 #define PORTA1 1 #define PORTA2 2 #define PORTA3 3 #define PORTA4 4 #define PORTA5 5 #define PORTA6 6 #define PORTA7 7 在使用前,应在头文件加入“#include macros.h”定义。如要将PORTA7清零,可以使用以下语句: PORTA=~BIT(PORTA7); 如果需要将PORTA7置位,可以使用以下语句: PORTA|=BIT(PORTA7); 这样对I/O端口进行位操作,比较直观,且生成的代码能够充分利用AVR对I/O端口操作的位指令,生成高质量的代码。 3上拉电阻的使用 当AVR单片机I/ 0口片内的上拉电阻使能时,I/ 0引脚被外部上拉电阻拉高为高电平;当引脚与地线短接,为低电平状态O在按键释放状态下拉高引脚的作用,同时还起到了限流的作用,通常取值在5~50 KΩ。 第二章 中断系统及其应用 中断响应过程: 在单片机中,通常断电的保护和恢复会有单片机内部的硬件电路自动实现,但对于中断现场的保护和恢复,则需要程序员在编写中断处理程序时小心处理。 中断向量: 由于一个中断向量通常仅占几个字节或一条指令的长度,所以在中断向量区一般不能直接放置中断服务程序。中断服务程序一般放置在程序存储器的其他地方,而在中断向量处放置一条跳转到中断服务程序的指令。这样,CPU响应中断后,首先自动转向执行中断向量处的转移指令,再跳转到真正中断服务程序。 中断优先级: 对于中断优先级的确定,通常是由单片机的硬件结构规定的。一般的确定规则方式为:某中断对应的中断向量地址越小,其中断优先级越高。AVR不支持软件对中断控制寄存器的设定。 中断嵌套: AVR的硬件系统不支持自动实现中断嵌套的处理。如果在系统设计中,必须使用中断嵌套处理,则需要由用户编写相应的程序,通过软件设置来实现中断嵌套的功能。 Cli() //* 清0使能位I,以禁止全局中断 */ Sei() //* 置1使能位I,以允许全局中断 */ 第三章 定时/计数器的结构与应用 T/C0计数寄存器TCNT0: TCNT0是T/C0的计数值寄存器,可以直接被MCU读/写访问。写TCNT0寄存器将在下一定时器式中周期中阻塞比较匹配。因此,在计数器运行期间修改TCNT0的内容,有可能丢失一次TCNT0与OCR0的匹配比较操作。 输出比较寄存器A—OCR0A/B—OCR0B: 输出比较寄存器A/B包含一个8位的数据,不间断地与计数器数值TCNT0进行比较。匹配事件可以用来产生输出比较中断,或者用来在OC0A/ OC0B引脚上产生波动。 T/C0中断屏蔽寄存器—TIMSK0 1) 位2 – OCIE0B: T/C0输出比较匹配B 中断使能当OCIE0B和状态寄存器的全局中断使能位I都为“1”时,T/C0的输出比较匹配B中断使能。当T/C0的比较匹配方式,即TIFR0的OCF

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档