ATmega16单片机(AVR)主要特点总结
这款AVR单片机现在变得好贵啊!
本不打算学习AVR的, 因为早先贪多, 买了本马潮老师的书(真心不错的一本书), 现在不看浪费, 看了不做也浪费, 所以买了几块芯片做着学, 反正各种处理器也没啥大的区别! 总归没有坏处.
在加上硬件基础知识真心烂啊! 希望亲自画/搭电路好好补补, 对以后学习 RISC 体系的 ARM 处理器应该也有益处. ^_^
这篇博客内容, 其实多数都是手册上或者马老师书上的(<AVR 单片机嵌入式系统原理与应用实践.2版>), 之所以写博客上为了做做笔记, 加深记忆. 好了, 吐槽完毕, 舒畅多了, 开干!!!
芯片手册有中/英文版, 可以到Atmel官网或者网络搜索下载. 不多说.
下面就总结一下AVR单片机ATmega16的主要特点:
(注: 括号内有红色 *x* 符号的表示文章下方会有解释/扩展)
1) 采用 RISC 结构的AVR内核单片机.
- 131 条机器指令, 大多数指令为单个系统时钟周期执行的指令;
- 32 个 8 位通用工作寄存器;
- 全静态工作方式(Fully Static Operation). (*A*)
- 工作在 16 MHz 时具有 16 MIPS 的性能.(注: ATmega16L 系列最大工作频率为 8 MHz);
- 内部配备有 2 个时钟周期的硬件乘法器.
- 16KB 在线可编程(ISP, In-System Programming)Flash 程序存储器(擦写次数>10 000), 采用 Boot load 技术支持IAP(In-Application Programming)功能.
- 1KB片内 SRAM 数据存储器, 可以实现 3 级锁定的程序加密;
- 512 字节片内 ISP 的EEPROM 数据存储器(擦鞋次数>100 000);
- 支持符合 JTAG 标准(与IEEE 1149.1 标准兼容)的边界扫描功能, 用于芯片检测;
- 支持扩展的片内在线调试功能;
- 可通过 JTAG 接口对片内 Flash, EEPROM, 熔丝位和加密锁定位实现下载编程; (*C*)
- 2 个带有分别独立和可设置预分频的 8 位定时/计数器;
- 1 个带有可设置预分频器, 具有比较, 捕捉功能的 16 位定时/计数器;
- 片内含独立振荡器的实时时钟 RTC;
- 4 路 PWM 通道;
- 8 路 10 位 ADC;
- 面向字节的两线接口 TWI(Two—Wire Serial Interface, 完全兼容 IIC 总线硬件接口);
- 1 个可编程, 增强型全双工, 支持同步/异步通信的串行接口 USART;
- 1 个可工作于主机/从机模式的 SPI (Serial Peripheral Interface Bus)串行接口(支持 ISP 程序下载);
- 片内集成模拟比较器; (*D*)
- 片内含有可编程的具有独立片内震荡期的看门狗定时器 WDT;
- 内含上电复位电路以及可编程的掉电检测复位电路 BOD(Brown-out Detection);
- 片内含有 1/2/4/8 MHz 经过标定的, 可校正的 RC 震荡器, 可作为系统时钟使用;
- 21 种内外部中断源; (*E*)
- 6 种休眠模式(空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及
扩展的Standby 模式), 支持节电方式工作; - 32 个可编程 I/O 口. 封装方式有: 40脚 PDIP 封装, 44 脚 TQFP 封装, 与44 脚的 MLF 封装; (*F*)
- 工作电压: ATmega16L 为 2.7~5.5V, ATmega16 为 4.5~5.5V;
- 运行速度: ATmega16L为 0~8MHz, ATmega16为0~16MHz;
- 功耗指标: ATmega16L 工作在 1MHz, 3V, 25摄氏度时: 典型功耗为 1.1mA, 空闲模式为 0.35mA, 掉电模式为 < 1uA;
注释A:
全静态工作方式就是时钟停止振荡(而且手册中也说了工作频率是 0~8/16MHz), 但是寄存器和数据存储器(ATmega16采用的是 SRAM 存储器, 所以不必进行定时刷新)的数据不会丢失. 前提是你电源得存在, 不然就关机了不是?
注释B:
Atmega16 单片机的 Flash 程序存储器空间可以分为两段: 引导程序段(Boot Program Section)和应用程序段(Application Program section). 两段的读/写保护可以分别通过设置对应的锁定位(Lock Bits)来实现. 在引导程序段内驻留的引导程序中, 可以使用 SPM 指令实现对应用程序段的写操作(即实现 IAP 功能, 使系统能自懂更新系统程序). 在 AVR 中, 所有的存储空间都是线型的. SRAM 可以通过 6 种不同的寻址方式进行访问.(分别是: 数据存储器空间直接/间接寻址, 带后增/预减量的数据存储器空间的寄存器间接寻址, 带位移的数据存储器空间的寄存器间接寻址, 数据存储器空间堆栈寄存器 SP 间接寻址).
注释C:
熔丝是一个保护知识产权的设计。就是在特定的引脚上加上电压,足够的电流,就可以烧断里边的这根熔丝(AVR的熔丝可以多次编程, 并不是 OTP 熔丝),烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行. 通过设定和配置 AVR 单片机的熔丝位, 我们就可以使 AVR 具有不同特性的功能组合, 更加适合实际的使用和学习. 出厂时不同熔丝位的设定值是不同的, 一定要注意区分, 熔丝位的配置在 AVR 单片机中非常重要, 配置不好可能会锁死单片机或者不能正常工作; 配置之前一定要对照datasheet 手册仔细核对准; 一定要发篇博客总结学习下.
注释D:
比较器是通过比较两个输入端的电流或电压的大小,在输出端输出不同电压结果的电子元件。比较器常被用于模数转换电路中。 使用 AVR 的模拟比较器就可以构成 ADC 转换器; AVR 单片机在复位后, 模拟比较器是处于允许工作状态的. 如果不使用它, 就把寄存器 ACSR 的 ACD 位设置为 1, 以关闭模拟比较器减少电源消耗; 与其相关的寄存器是 SFIOR 和 ACSR. AVR 的模拟比较器是 AVR 的中断源之一;
注释E:
这 21 个内外部中断源是(按优先级排序):
向量号 | Flash空间地址 | 中断源 |
中断定义说明 |
1 | $000 | RESET |
外部引脚电平引发的复位, 上电复位, 掉电检测复位, 看门狗复位, JTAG AVR 复位 |
2 | $002 | INT0 | 外部中断 0 |
3 | $004 | INT1 | 外部中断 1 |
4 | $006 | TIMER 2 COMP | 定时/计数器 2 比较匹配 |
5 | $008 | TIMER 2 OVF | 定时/计数器 2 溢出 |
6 | $00A | TIMER 1 CAPT | 定时/计数器 1 事件捕捉 |
7 | $00C | TIMER 1 COMPA | 定时/计数器 1 比较匹配 A |
8 | $00E | TIMER 1 COMPB | 定时/计数器 1 比较匹配 B |
9 | $010 | TIMER 1 OVF | 定时/计数器 1 溢出 |
10 | $012 | TIMER 0 OVF | 定时/计数器 0 溢出 |
11 | $014 | SPI STC | SPI 串行传输结束 |
12 | $016 | USART RXC | USART, 接收结束 |
13 | $018 | USART UXRE | USART, 数据寄存器空 |
14 | $01A | USART TXC | USART, 发送结束 |
15 | $01C | ADC | A/C 转换结束 |
16 | $01E | EE_RDY | EEPROM 就绪 |
17 | $020 | ANA_COMP | 模拟比较器 |
18 | $022 | TWI | 两线串行接口 |
19 | $024 | INT2 | 外部中断请求 2 |
20 | $026 | TIMER 0 COMP | 定时/计数器 0 比较匹配 |
21 | $028 | SPM_RDY | 保存程序存储器内容就绪 |
中断向量区大小 = 中断源个数 X 每个中断向量占据字数
注释F:
AVR 单片机的 I/O 口共 32 个, 分为 4 组端口, 每组 8 个; 4 个端口的第一功能是通用的双向 I/O 口, 每位都要通过指令设置为独立的输入/输出口. 设置为输入时内部自带有上拉电阻, 这些内部上拉可以通过编程设置为有效或者无效. 当输出高电平时, 可输出 20mA 的电流, 而当输出低电平时,可以吸收 40mA 的电流. 因此 AVR 可以直接驱动数码管和 LED 发光二极管. 另外要注意的就是, AVR 单片在复位后, 所有的 I/O 口都是默认为输入方式的, 上拉电阻无效, 即I/O为输入高阻的三态状态. I/O空间为连续的 64 个 I/O 寄存器空间, 他们分别对应单片机各个外围功能的控制和数据寄存器地址. I/O 寄存器空间可使用 I/O 寄存器访问指令直接访问, 也可将其映射为通用工作寄存器组后的数据存储器空间, 使用数据存储器访问指令进行操作. I/O 寄存器空间在数据存储器空间的映射地址为 $020--&05F.
下图是 AVR 单片机的内部结构框图:
ATmega16单片机(AVR)主要特点总结相关推荐
- 基于ATMEGA16单片机,MQ-3酒精传感器,LCD1602液晶显示的酒精浓度检测阈值报警仪
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文章为个人单片机课程大作业,代码都是自己写的,只是记录自己的学习过程,不做任何商用. 目录 单片机大作业: 一.使用仪器.材料 二. ...
- atmega16单片机c语言程序设计经典实例pdf,Atmega16单片机实用程序.pdf
Atmega16单片机实用程序 Atmega16单片机实用程序 /************************************************ /***************** ...
- 基于ATMEGA16单片机的空调控制器
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87853101 源码获取 主要内容: ...
- Atmega16单片机串口通信
Atmega16单片机串口通信 Atmega16单片机串口通信 串口通信需要使用到的内部寄存器 程序代码 Atmega16单片机串口通信 本篇文章参考自叶大鹏老师于2008年4月5日完成的UART通信 ...
- 基于ATmega16单片机和GPS的多用途定位仪设计
目录 摘要 I Abstract II 第1章绪论 1 1.1 课题研究的背景及意义 1 1.2国内外研究现状 1 1.2.1 外国研究发展现状 1 1.2.2国内研究发展现状 2 1.3课题研究技术 ...
- atmega16单片机c语言程序设计经典实例pdf,《AVR单片机C语言程序设计实例精粹》.pdf...
AutodeskAsiaPteLtd主编的<AutodeskRevitStructure2012应用宝典>是对AutodeskRevitStructure2012进行全面介绍的权威用书.全 ...
- 基于avr atmega16单片机 1602显示,pwm控制电机,电压采集,智能小车程序外部中断等。
前言 最近写avr时候发现网上教程太少,本着为各位的学习提供帮助的心理,把自己写的程序发出来,一起探讨学习,希望我们共同努力,为梦想奋斗. 功能 在AVR开发板上模拟一台吊车的操作控制和状态显示功能. ...
- ATmega16和avr
话说有没有ATmega16学的很好,avr学的也很好的大佬啊,课程设计好难,少壮不努力,老大徒伤悲啊
- 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
位运算是指按二进制位进行的运算.在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断. C语言提供的位运算符有: 运算符 含义 功能 & 按位与 如果两个相应的二进制位都为1,则该位的结 ...
最新文章
- 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念
- 算法 - 选择排序(C#)
- C++输出变量类型、max报错原因
- 向linux内核加入系统调用新老内核比較
- Flex 与 JavaScript 交互
- 1013 B. And
- DPDK:不仅是加速
- [Unity] ACT 战斗系统学习 2:从 Buff 系统开始的思考
- gtone eclipse plugin install
- (转)Hibernate框架基础——多对多关联关系映射
- [原创]jQuery插件Realtime-Modifier正式发布!
- 偶然遇到的Java泛型错误,百思不得其解。
- 【学习笔记】C# 动态系统托盘图标的实现 - NotifyIcon控件
- 2022年中国物联网行业研究报告丨附下载
- Matlab GUI的文件打开和保存uigetfile uigetdir
- 美国农业初创公司Gotham Greens获2900万美元融资:用大数据运营温室
- 失恋CPR 自救手册
- oracle招聘ocp认证,OracleOCP认证要通过哪些考试?
- Uniapp——生成二维码
- JZOJ 1285. 奶酪厂
热门文章
- jointjs使用总结
- Educational Codeforces Round 133 (Rated for Div. 2)(CD题解)
- iperf udb_使用PHP脚本通过Zend Core for i5 / OS访问DB2 UDB for iSeries数据
- 让你的电脑也识得二维码图片(二)
- 谷歌、Facebook等大公司都用什么语言?一张图带你看懂!
- 合众达SEED-DEC138工作环境配置
- SSM 写出乐淘商城
- linux推流软件推荐,在Linux 系统使用ffmpeg软件做哔哩哔哩视频网站推流 | IT工程师的生活足迹...
- 华为云HCIA鲲鹏结业考试笔记 试题及答案
- 自动发送邮件的服务器,自动邮件发送_任何情况立刻通知你