ATmega16 IO寄存器空间分配表
ATmega16 的IO口使用
项目一:ATmega16 的I/O口使用一、项目内容:(1)、通过I/O口操作8位发光二极管跑马灯;(2)、通过I/O口驱动数码管;(3)、通过I/O口驱动1602字符点阵型液晶显示模块;(4)、利用I/O口完成键盘的设计与使用。
二、项目目标:(1)、掌握本课程学习的基本载体;(2)、熟悉并掌握C语言的基本语法、常用的语句指令、函数的结构;(3)、掌握ATmega16的I/O口使用;三、项目任务:1、8位LED跑马灯程序:#include"iom16v.h"void Delay_l_ms(void){unsigned char cnt_i,cnt_j;for(cnt_i=0;cnt_i<40;cnt_i++){for(cnt_j=0;cnt_j<33;cnt_j++){}}}void Delay_n_ms(unsigned int n_ms){unsigned int cnt_i;for(cnt_i=0;cnt_i<n_ms;cnt_i++){Delay_l_ms();}}void main(void){unsigned char cnt_i;DDRD=0xFF;PORTD=0xFF;while(1){for(cnt_i=0;cnt_i<8;cnt_i++){PORTD=(0x80>>cnt_i);Delay_n_ms(200);}for(cnt_i=8;cnt_i>0;cnt_i--){PORTD=(0x80>>cnt_i);Delay_n_ms(200);}}}仿真图:绘制仿真图,添加程序后,发光二极管按D0到D7再从D7到D0顺序循环发光。
原理图:电路板图:八位LED跑马灯电路板图2、数码管静态显示程序:#include"iom16v.h"const unsigned char Num_Dis_TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};void Delay_1_ms(void){unsigned char cnt_i,cnt_j;for(cnt_i=0;cnt_i<40;cnt_i++){for(cnt_j=0;cnt_j<33;cnt_j++){}}}void Delay_n_ms(unsigned int n_ms){unsigned int cnt_i;for(cnt_i=0;cnt_i<n_ms;cnt_i++){Delay_1_ms();}}void LED_Dis_Static(unsigned char dis_num){PORTD=Num_Dis_TAB[dis_num];PORTB=(1<<2);}void main(void){unsigned char dis_temp;DDRD=0xFF;DDRB=0xFF;PORTD=0xFF;PORTB=0xFF;while(1){for(dis_temp=0;dis_temp<10;dis_temp++){LED_Dis_Static(dis_temp);Delay_n_ms(200);}}}仿真图:数码管静态显示仿真图仿真过程:打开仿真图,输入程序,四位数码管由0开始,按0、1、2、3、4、5、6、7、8、9循环显示。
ATmega16 的EEPROM的使用
ATmega16 包含512 字节的EEPROM 数据存储器。
它是作为一个独立的数据空间而存在的,可以按字节读写。
EEPROM 的寿命至少为100,000 次擦除周期。
EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。
通过SPI和JTAG及并行电缆下载EEPROM数据的操作请分别参见P260、P265及P250。
EEPROM 读/ 写访问EEPROM 读/ 写访问EEPROM 的访问寄存器位于I/O 空间。
EEPROM的写访问时间由Table 1给出。
自定时功能可以让用户软件监测何时可以开始写下一字节。
用户操作EEPROM 需要注意如下问题:在电源滤波时间常数比较大的电路中,上电/ 下电时VCC 上升/ 下降速度会比较慢。
此时CPU 可能工作于低于晶振所要求的电源电压。
请参见P20“ 防止EEPROM 数据丢失” 以避免出现EEPROM 数据丢失的问题。
为了防止无意识的EEPROM 写操作,需要执行一个特定的写时序。
具体参看EEPROM控制寄存器的内容。
执行EEPROM 读操作时,CPU 会停止工作4 个周期,然后再执行后续指令;执行EEPROM 写操作时,CPU 会停止工作2 个周期,然后再执行后续指令。
EEPROM 地址寄存器-EEARH和EEARL· Bits 15..9 – Res: 保留保留位,读操作返回值为零。
· Bits 8..0 – EEAR8..0: EEPROM 地址EEPROM地址寄存器– EEARH和EEARL指定了512字节的EEPROM空间。
EEPROM地址是线性的,从0 到511。
EEAR 的初始值没有定义。
在访问EEPROM 之前必须为其赋予正确的数据。
EEPROM 数据寄存器-EEDR· Bits 7..0 – EEDR7.0: EEPROM 数据对于EEPROM 写操作,EEDR 是需要写到EEAR 单元的数据;对于读操作,EEDR 是从地址EEAR 读取的数据。
atmega16
■ B口(PB7~PB0):8位双向I/O口,每一个引脚 都有独立可控的内部上拉电阻。B口的输出缓冲器具 有双向大电流的驱动能力。当作为输入时,且内部上 拉电阻有效时,如果外部引脚被拉低,B口管脚将输 出电流。在复位过程中,即使还未起振的情况下,B 口仍呈现三态。 B口有第二功能,第二功能的使用方法后续章节 再介绍。
■ 工作在16MHZ时具有16MIPS的性能
■ 片内集成硬件乘法器
片内集成了较大容量的非易失性程序 和数据存储器以及工作寄存器
■ 16K字节的在线可编程Flash ■ 支持在线编程 ■ 1K字节的片内SRAM ■ 512字节的在线可编程EEPROM ■ 可编程的程序加密位
外围资源
■ 2个带预分频器、具有比较、PWM功能的8位定时器/计数器 ■ 1个带预分频器、具有比较、捕获和PWM功能的16位定时器/ 计数器
ATmega16结构
AVR采用了啥佛结构,即程序和数据总线分离,且具有预 取指令功能,即CPU在执行一条指令的同时去取下一条指令, 这种模式使得指令可在一个时钟时期内完成。 ATmega16具有16K字节的程序存储器Flash。因为所有的 指令为16位或32位宽,故Flash的结构为8K×16。为了程序 的安全性,Flash存储器空间被分为两部分:引导程序段和 应用程序段,可以通过对相应熔丝位的编程设定,选择是否 需要使用引导程序段以及该段空间的大小。Flash存储器的使 用寿命至少为1000次的擦写循环。
知识回顾与新课引入
1、ROM和RAM的功能是?它们的相同与不同之处? 2、存储器的分类与特点? 3、计算机体系结构一般分为哪两种?
ATmega16芯片资源
ATmega16是AVR系列单片机的高档产品之一。
ATmega16结构 ATmega16资源及性能 ATmega16的I/O寄存器 ATmega16引脚 ATmega16系统配置
ATmega16单片机小系统板简介
1.概述本单片机小系统板为一单元实验板,使用一颗基于A VR构架的A Tmega16单片机。
A Tmega16有16KB的程序存储空间,1KB内部SRAM,512B内置EEPROM。
外部共有32个GPIO,一路USART,一路主从SPI,一路I2C,两个8位定时器,一个16位定时器,4通道PWM输出,8路10位AD输入。
还有各种丰富的管脚中断和不同的时钟可供使用。
2.硬件说明1.本单片机小系统板的电源输入电压为DC 2.7--5V,科创课程实验建议使用DC 5V。
2.小系统板上的P1为下载口,可供程序烧录、eeprom数据读写、熔断丝设置。
3.小系统板上的接插件PB、PC、PD分别对应A Tmega16芯片引脚的PB、PC、PD口。
PB、PC、PD口是八位数据端口,可作为通用IO口,也可用作第二功能使用,具体请参见datasheet的相关部分。
4.小系统板上的接插件PA的1-5脚分别连接A Tmega16芯片PA口的PA0-PA4,PA0-PA4是AD转换的模拟电压输入端口,也可作为通用IO口使用。
5.小系统板上的接插件PA的9脚连接A Tmega16芯片的V ref ,10脚接地。
A Tmega16有一个标称值为2.56V的内部基准源,每颗芯片的实际值会有所不同。
6.A Tmega16 PA口的PA5-PA7作为串行数据输出到小系统板上的74HC595上,有二片74HC595驱动4位数码管和4个LED灯。
小系统板上的P2作为串行数据输出总线,可级联74HC595。
7.小系统板上的四个按钮SW1-4分别连接在A Tmega16芯片PC4-7。
按钮RST为复位键。
3.开发环境推荐的入门开发环境为A VR studio 4 + WinA VR,即使用Atmel的免费IDE A VR studio 4和基于gcc的WinA VR编译器。
软件安装这两个软件的安装非常简单,双击之后一路回车即可。
官方下载地址:A VR studio 4:/dyn/products/tools_card.asp?tool_id=2725WinA VR:/projects/winavr/files/课程FTP://202.120.39.248也会提供软件包。
ATmega 16 单片机的SPI的相关寄存器
1.SPCR——SPI控制寄存器SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0位 7——SPIE:使能SPI中断置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中断使能位置位,就会引发SPI中断。
位 6——SPE:使能SPISPE置位将使能SPI。
进行任何SPI操作之前必须置位SPE。
位 5——DORD:数据次序DORD置位时数据的LSB首先发送;否则数据的MSB首先发送。
位 4——MSTR:主/从选择MSTR置位时选择主机模式,否则为从机。
如果MSTR为"1”,SS配置为输入,但被拉低,则MSTR被清零,寄存器SPSR的SPIF置位。
用户必须重新设置MSTR进入主机模式。
位3——CPOL:时钟极性CPOL置位表示空闲时SCK为高电平;否则空闲时SCK为低电平。
CPOL功能总结如下:CPOL 起始沿结束沿0 上升沿下降沿1 下降沿上升沿位 2——CPHA:时钟相位CPHA决定数据是在SCK的起始沿采样还是在SCK的结束沿采样。
CPHA 起始沿结束沿0 采样设置1 设置采样位1,0——SPR1,SPR0:SPI时钟速率选择1与0确定主机的SCK速率。
SPR1和SPR0对从机没有影响。
SCK和振荡器的时钟频率fosc关系如下表所示:SPI2X SPR1 SPR0 SCK频率0 0 0 fosc/40 0 1 fosc/160 1 0 fosc/640 1 1 fosc/1281 0 0 fosc/21 0 1 fosc/81 1 0 fosc/321 1 1 fosc/642.SPSR——SPI状态寄存器SPIF WCOL ––––– SPI2X位7——SPIF:SPI中断标志串行发送结束后,SPIF置位。
若此时寄存器SPCR的SPIE和全局中断使能位置位,SPI中断即产生。
如果SPI为主机,SS配置为输入,且被拉低,SPIF也将置位。
进入中断服务程序后SPIF自动清零。
ATmega16寄存器详述
5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @ 珠联璧合 xlzhu xlzhu@
ega1 6 寄存器详述 ATm ATmega1 ega16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
表2 端口引脚配置 DDRXn 0 0 0 1 1 PORTXn 0 1 1 0 1 PUD × 0 1 × × I/O 输入 输入 输入 输出 输出 上拉电阻 否 是 否 否 否 说明 I/O 三态输入 I/O 口带上拉电阻输入 高阻态 推免0输出 推免1输出
点,可直接驱动LED、SSR或继电器。 � � 40引脚PDIP封装,44引脚TQFP 封装,与44引脚MLF封装。
工作电压 � � ATmega16L:2.7 - 5.5V ATmega16:4.5 - 5.5V
�
速度等级 � � 0 ~8 MHz ATmega16L 0 ~16 MHz ATmega16
3. I/O 端口 3.1 I/O 端口特性 � � � � 共有PA~PD四组通用I/O口,每组I/O都是8位寄存器。 作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的读-修改-写功能。 输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。 所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC 和地相连。
◎输入引脚地址 PINA
BIT PINA 读/写 初始值 7 PINA7 R N/A 6 PINA6 R N/A 5 PINA5 R N/A 4 PINA4 R N/A 3 PINA3 R N/A 2 PINA2 R N/A 1 PINA1 R N/A 0 PINA0 R N/A
5 PB 口寄存器 3. 3.5 ◎数据方向寄存器 DDRB
第4章 ATmega16的硬件结构和指令系统
目录
第 4 章 AVR 单片机的基本结构............................................................................................1 4.1 单片机的基本组成....................................................................................................2 4.1.1 单片机的基本组成结构.................................................................................2 4.1.2 单片机基本单元与作用.................................................................................2 4.2 ATmega16 单片机的组成 ..........................................................................................5 4.2.1 AVR 单片机的内核结构 .................................................................................5 4.2.2 典型 AVR 芯片 ATmega16 特点 ...................................................................6 4.2.3 外部引脚与封装.............................................................................................7 4.3 ATmega16 内部结构 ..................................................................................................9 4.3.1 AVR 中央处理器 CPU ..................................................................................10 4.3.2 系统时钟部件............................................................................................... 11 4.3.3 CPU 的工作时序 ...........................................................................................12 4.3.4 存储器...........................................................................................................14 4.3.5 I/O 端口 .........................................................................................................14 4.4 存储器结构和地址空间..........................................................................................14 4.4.1 支持 ISP 的 Flash 程序存储器.....................................................................14 4.4.2 数据存储器 SRAM 空间..............................................................................14 4.4.3 内部 EEPROM 存储器................................................................................15 4.5 通用寄存器组与 I/O 寄存器...................................................................................15 4.5.1 通用寄存器组...............................................................................................15 4.5.2 I/O 寄存器 .....................................................................................................16 4.5.3 状态寄存器和堆栈指针寄存器 ...................................................................19 4.6 ATmega16 单片机的工作状态.................................................................................21 4.6.1 AVR 单片机最小系统 ...................................................................................21 4.6.2 AVR 的复位源和复位方式 ...........................................................................22 4.6.3 对 AVR 的编程下载.....................................................................................26 4.6.4 ATmega16 的熔丝位......................................................................................27 4.6.5 AVR 单片机的工作状态 ...............................................................................29 4.6.6 支持 ISP 编程的最小系统设计 ...................................................................30 4.7 AVR 单片机的指令系统 ..........................................................................................32 4.8 思考与练习..............................................................................................................34
atmega16存器介绍
串口寄存器介绍USART I/O 数据寄存器- UDRUSART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。
将数据写入UDR 时实际操作的是发送数据缓冲器存器(TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。
在5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。
只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。
如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。
当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。
然后数据串行地从TxD 引脚输出。
接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO 就会改变它的状态。
因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。
使用位查询指令(SBIC 和SBIS)时也要小心,因为这也有可能改变FIFO 的状态。
USART 控制和状态寄存器A -UCSRA• Bit 7 – RXC: USART 接收结束标志(中断)接收缓冲器中有未读出的数据时RXC 置位,否则清零。
接收器禁止时,接收缓冲器被刷新,导致RXC 清零。
RXC 标志可用来产生接收结束中断( 见对RXCIE 位的描述)。
• Bit 6 – TXC: USART 发送结束发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。
执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。
TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。
• Bit 5 – UDRE: USART 数据寄存器空UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。
UDRE为1说明缓冲器为空,已准备好进行数据接收。
UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。
Atmega16的IO使用
例4.2.2二进制数输出控制
如图4-6所示为二进制数输入、输出控制的电路原理图。
图4-6 并行输入/输出应用
PC口作为输入接口使用,每一位接有上拉电阻和开关。 当开关断开时,输入为高电平,读取的结果为1;当开关 闭合时,输入为低电平,读取的结果为0。这样8个开关 s0~s7的状态可以组成一个8位的二进制输入数。如图4-7 所示,s7、s5、s2、s0断开,s6、s4、s3、s1闭合。 开关: S7 S6 S5 S4 S3 S2 S1 S0 状态: 开 闭 开 闭 闭 开 闭 开 输入值:1 0 1 0 0 1 0 1 所以,输入的二进制数为0xa5。
位控制
位控制具有把一个位变量输出到某个引脚的含义。所以 位控制时,赋值语句的左边为接口输出变量的位操作符。 例如把C口的第0位控制为高电平,可编写程序如下: DDRC=0xff; PORTC.0=1;
位运算
位运算一般有:置1、清0、取反、与、或、非、异或等运算。 置1:位变量=1; 清0:位变量=0; 取反:位变量=!位变量 与运算:位变量3=位变量1&位变量2 或运算:位变量3=位变量1|位变量2 异或运算:位变量3=位变量1^位变量2 非运算:位变量2=!位变量1
并行输入工作原理 并行输出工作原理 并行输入/输出接口工作原理
并行输入图4-1所示。引脚的 状态取决于外电路,缓冲器后的状态为引脚状态,三态门的输 出由RP端控制,当RP为0时,三态门的输出为高阻状态,数据 总线不受引脚影响;当RP为1时,三态门的输出与输入相同, 此时为读引脚状态。在读接口时,RP控制端有效。
并行输入接口某一位的简化接口电路如图:
并行输出工作原理
并行输出接口中某一位的简化接口电路如图所示。当控制端WP为0 (低电平)时,数据锁存器的输出端Q为上次输出的值,与输入端D 无关,数据总线操作不影响输出。当控制端WP为1时,数据锁存器 的输出端Q的值为输入端D的值,为输出数据状态。数据输出到引脚。 锁存器输出端Q为0时,输出为低电平;锁存器输出端Q为1时,输出 高电平。RL控制端为读取输出值。
ATmega16中文手册
产品特性•高性能、低功耗的 8位AVR®微处理器•先进的RISC结构–131 条指令 – 大多数指令执行时间为单个时钟周期–32个8位通用工作寄存器–全静态工作–工作于16 MHz时性能高达16 MIPS–只需两个时钟周期的硬件乘法器•非易失性程序和数据存储器–16K 字节的系统内可编程Flash擦写寿命: 10,000次–具有独立锁定位的可选Boot代码区通过片上Boot程序实现系统内编程真正的同时读写操作–512字节的EEPROM擦写寿命: 100,000次–1K字节的片内SRAM微控制器–可以对锁定位进行编程以实现用户程序的加密•JTAG 接口(与IEEE 1149.1标准兼容)–符合JTAG标准的边界扫描功能–支持扩展的片内调试功能–通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程•外设特点–两个具有独立预分频器和比较器功能的8位定时器/计数器–一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立振荡器的实时计数器RTC–四通道PWM–8路10位ADC8 个单端通道TQFP封装的7个差分通道2个具有可编程增益(1x, 10x, 或200x)的差分通道–面向字节的两线接口–两个可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式•I/O和封装–32 个可编程的I/O口–40引脚PDIP封装, 44引脚TQFP封装,与44引脚MLF封装•工作电压:–ATmega16L:2.7 - 5.5V–ATmega16:4.5 - 5.5V•速度等级–0 - 8 MHz ATmega16L–0 - 16 MHz ATmega16•ATmega16L在1 MHz, 3V, 25°C时的功耗–正常模式: 1.1 mA–空闲模式: 0.35 mA–掉电模式: < 1 µA2ATmega16(L)2466G–AVR–10/03引脚配置Figure 1. ATmega16的引脚声明本数据手册的典型值来源于对器件的仿真,以及其他基于相同产生工艺的 AVR 微控制器的标定特性。
Atmega16寄存器表
Atmega16寄存器一.引脚说明表1 引脚说明引脚序号 引脚名称 引脚功能PB5 8 位双向I/O 口, 具有可编程的内部上拉电阻。
其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。
作为输入使用时, 若内部上拉电阻使能,端口被外部电路拉低时将输出电流。
在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。
1MOSI SPI 总线的主机输出/ 从机输入信号PB6 8 位双向I/O 口2MISO SPI 总线的主机输入/ 从机输出信号PB7 8 位双向I/O 口3SCK SPI 总线的串行时钟4 RESET 复位输入引脚。
持续时间超过最小门限时间的低电平将引起系统复位。
5 VCC 数字电路的电源6 GND 地7 XTAL2 反向振荡放大器的输出端8 XTAL1 反向振荡放大器与片内时钟操作电路的输入端PD0 8 位双向I/O 口9RXD USART 输入引脚PD1 8 位双向I/O 口10TXD USART 输出引脚PD2 8 位双向I/O 口11INT0 外部中断0 的输入PD3 8 位双向I/O 口12INT1 外部中断1 的输入PD4 8 位双向I/O 口13OC1B T/C1 输出比较B 匹配输出PD5 8 位双向I/O 口14OC1A T/C1 输出比较A 匹配输出PD6 8 位双向I/O 口15ICP1 T/C1 输入捕捉引脚PD7 8 位双向I/O 口16OC2 T/C2 输出比较匹配输出17 VCC 数字电路的电源18 GND 地PC0 8 位双向I/O 口19SCL 两线串行总线时钟线PC1 8 位双向I/O 口20SDA 两线串行总线数据输入/ 输出线PC2 8 位双向I/O 口21TCK JTAG 测试时钟PC3 8 位双向I/O 口22TMS JTAG 测试模式选择PC4 8 位双向I/O 口23TDO JTAG 测试数据输出PC5 8 位双向I/O 口24TDI JTAG 测试数据输入PC6 8 位双向I/O 口25TOSC1 定时振荡器引脚1PC7 8 位双向I/O 口26TOSC2 定时振荡器引脚227 AVCC 端口A与A/D转换器的电源。
第二章 ATmega16芯片资源
•支持在线编程(In-System Programming)
•1K字节的片内SRAM
•512字节的在线可编程EEPROM •可编程的程序加密位
外围资源
•2个带预分频器、具有比较、PWM功能的8位定时器/计数器 •1个带预分频器、具有比较、捕获和PWM功能的16位定时器 /计数器 •1个具有独立振荡器的异步实时时钟(RTC) •4个PWM通道 •8通道10位ADC •1个I2C的串行口 •1个可编程的串行USART接口 •1个主/从收/发的SPI同步串行接口 •带片内RC振荡器的可编程看门狗定时器WDT •片内模拟比较器
ATmega16 封装---PDIP40封装
ATmega16 封装---TQFP44封装
2.ATmega16 资源及性能
AVR RISC 结构
• 高性能、低功耗RISC的结构 • 130条指令,大多数为单周期指令 • 32×8的通用(工作)寄存器+外设控制寄 存器 • 工作在16MHz时具有16MIPS的性能 • 片内集成硬件乘法器(执行速度为2个时钟 周期)
程序和数据存储器、工作寄存器
ATmega16具有16K字节的 在线编程Flash,用于存放程 序指令代码。因为所有的AVR 指令为16 位或32 位,故而 Flash 组织成8K x 16 位的 形式。 Flash存储器至少可以擦 写10,000次。ATmega16的程 序计数器(PC)为13位,因此 可以寻址8K 字的程序存储器 空间。 用SPI 或JTAG 接口实现 对Flash 的串行下载。
•/RESRT:复位输入。在该引脚上,一个超过系统规定长 度的低电平信号,将引起系统复位。低于系统规定长度的 低电平信号脉冲,不能保证可靠复位。 •XTAL1:内部反转晶振放大器的输入端和向内部时钟操作 电路的输入端。 •XTAL2:内部反转晶振放大器的输出端。
AVR ATmega16寄存器(修订版)
ATmega16寄存器说明修订版v1.1 本版修订了很多原版存在的错误同时使其更加清晰易懂原作者:未知修订:拉拉和瑶瑶SREG | I | T | H | S | V | N | Z | C |// 状态寄存器SREGI : 全局中断使能T : 位复制存储位H : 半进位标志位表示算术运算发生了半进位S : 符号位S为负数标志N与2的补码溢出标志V的异或V : 2的补码溢出标志位N : 负数标志位Z : 零标志位C : 进位标志位OSCCAL |CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 |//振荡器标定寄存器OSCCAL OSCAL数值最小频率,标称频率的百分比(%)最大频率,标称频率的百分比(%)0x00 50 1000x7F 75 1500xFF 100 200(编者注:一般可使用0x7F)MCUCR | SM2 | SE | SM1 | SM0 | ISC11 | ISC10 | ISC01 | ISC00 | //MCU控制寄存器MCUCR SM2:0 休眠模式000 空闲模式(停止CPU_clk 和FLASH_clk)001 ADC噪声抑制模式(停止IO_clk CPU_clk 和FLASH_clk)010 掉电模式(停止所有时钟,只有异步模块可以继续工作)011 省电模式100 --101 --110 Standby 模式(仅在使用外部晶振或谐振器时,Standby模式才可用)111 扩展Stabdby模式SE 休眠使能ISCx1:0 说明00 INTx为低电平产生中断请求01 INTx上的任意跳变产生中断请求10 INTx上的下降沿产生中断请求11 INTx上的上升沿产生中断请求(编者注:外部中断0,1触发模式在此设置)MCUCSR | JTD | ISC2 | -- | JTRF | WDRF | BORF | EXTRF | PORF |//MCU控制和状态寄存器MCUCSR JTD 禁止JTAG 接口ISC2 中断2触发方式控制位(0-下降沿中断1-上升沿中断)JTRF JTAG 复位标志WDRF 看门狗复位标志BORF 掉电检测复位标志EXTRF 外部复位标志PORF 上电复位标志GICR | INT1 | INT0 | INT2 | -- | -- | -- | IVSEL | IVCE |// 通用中断控制寄存器INT1 使能外部中断请求1INT0 使能外部中断请求0INT2 使能外部中断请求2IVSEL 中断向量选择IVCE 中断向量修改使能GIFR | INTF1 | INTF0 | INTF2 | -- | -- | -- | -- | -- | // 通用中断标志寄存器INTF1 外部中断标志1INTF0 外部中断标志0INTF2 外部中断标志2(编者注:GICR表明能否中断而GIFR则是是否中断)SPMCR | SPMIE | RWWSB | -- | RWWSRE | BLBSET | PGWRT | PGERS | SPMEN |//保存程序存储器控制寄存器SPMIE SPM 中断使能RWWSB RWW 区忙标志RWWSRE RWW 区读使能BLBSET Boot 锁定位设置PGWRT 页写入PWERS 页擦除SPMEN 存贮程序存储器使能OCDR | MSB/IDRD | | | | | | | LSB | // 片上调试寄存器SFIOR | ADTS2 | ADTS1 | ADTS0 | -- | ACME | PUD | PSR2 | PSR10 | // 特殊功能I/O寄存器ADTS[2:0] ADC自动触发源位000 连续转换模式001 模拟比较器010 外部中断请求0011 定时器/计数器0比较匹配100 定时器/ 计数器1溢出101 定时器/计数器比较匹配B110 定时器/计数器1溢出111 定时器/计数器1捕捉事件ACME 模拟比较器多路复用器使能0 AIN1 连接到比较器的负极输入端1 ADC 多路复用器为模拟比较器选择负极输入PUD 禁用上拉电阻PSR2 预分频复位T/C2PSR10 T/C1 与T/C0 预分频器复位//***********************// PORT端口相关寄存器//******************************// PORTA | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // 数据寄存器DDRA | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // 数据方向寄存器PINA | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // 端口输入引脚PORTB | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |DDRB | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |PINB | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |PORTC | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |DDRC | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |PINC | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |PORTD | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |DDRD | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |PIND | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |(编者注:DDRx为数据方向寄存器,1为输出,0为输入;PORTx为数据寄存器:作为输入时,若允许上//***********************// USART串口相关寄存器//**************************// UDR | RXB7 | RXB6 | RXB5 | RXB4 | RXB3 | RXB2 | RXB1 | RXB0 | // 接收数据缓冲寄存器| TXB7 | TXB6 | TXB5 | TXB4 | TXB3 | TXB2 | TXB1 | TXB0 |// 发送数据缓冲寄存器UCSRA| RXC | TXC | UDRE | FE | DOR | PE | U2X | MPCM | // USART 控制和状态寄存器A RXC USART 接收结束标志TXC USART 发送结束标志UDRE USART 数据寄存器空标志FE 帧错误标志DOR 数据溢出标志PE 奇偶校验错误标志U2X 倍速发送MPCM 多处理器通信模式UCSRB | RXCIE | TXCIE | UDRIE | RXEN | TXEN | UCSZ2 | RXB8 | TXB8 |//USART 控制和状态寄存器B RXCIE 接收结束中断使能TXCIE 发送结束中断使能UDRIE USART 数据寄存器空中断使能RXEN 接收使能TXEN 发送使能UCSZ2 字符长度[2]RXB8 接收数据位8TXB8 发送数据位8UCSRC | URSEL | UMSEL | UPM1 | UPM0 | USBS | UCSZ1 | UCSZ0 | UCPOL |//USART控制和状态寄存器CURSEL 寄存器选择0 UBRRH1 UCSRCUMSEL USART 模式选择0 异步模式1 同步模式UPM1 UPM00 0 禁止0 1 保留1 0 偶校验1 1 奇校验USBS 停止位选择0 停止位数为11 停止位数为2UCSZ2 UCSZ1 UCSZ0 字符长度0 0 1 60 1 0 70 1 1 81 0 0 保留1 0 1 保留1 1 0 保留1 1 1 9//UCPOL为时钟极性选择:UCPOL 发送数据的改变(TxD 引脚的输出) 接收数据的采样(RxD 引脚的输入)0 XCK上升沿XCK下降沿1 XCK下降沿XCK上升沿(编者注:一般如果使用的是查询发,中断收,应打开RXCIE,RXEN,TXEN)UBBRH | U2X | ——| ——| ——| Bit11 | Bit10 | Bit9 | Bit8 | //波特率寄存器高4位UBBRL | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | //波特率寄存器第8位使用模式波特率计算公式UBBR值计算公式异步正常模式(U2X=0)Baud = F(osc)/16(UBBR+1) UBBR = F(osc)/16Baud - 1异步倍速模式(U2X=1)Baud = F(osc)/8(UBBR+1) UBBR = F(osc)/8Baud - 1同步主机模式Baud = F(osc)/2(UBBR+1) UBBR = F(osc)/2Baud – 1//***********************// SPI相关寄存器 //******************************//SPCR | SPIE | SPE | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 | //SPI控制寄存器SPIE 使能SPI中断位SPE 使能SPI位DORD 数据次序0 数据的MSB首先发送1 数据的LSB首先发送MSTR 主从选择0 从机模式1 主机模式CPOL 时钟极性CPOL 起始沿结束沿空闲时的SCK0 上升沿下降沿低电平1 下降沿上升沿高电平CPHA 时钟相位CPHA 起始沿结束沿0 采样设置1 设置采样SPR[1:0] SPI时钟速率选择位SPR2x SPR1 SPR0 SCK频率0 0 0 focs/40 0 1 fosc/160 1 0 fosc/640 1 1 fosc/1281 0 0 fosc/21 1 0 fosc/321 1 1 fosc/64SPSR | SPIF | WCOL | -- | -- | -- | -- | -- | SPI2X | // SPI状态寄存器SPIF SPI中断标志WCOL 写碰撞标志SPI2X SPI倍速位(若为主机SCK可达fosc/2 若为从机则只能保证fosc/4)SPDR | MSB | -- | -- | -- | -- | -- | -- | LSB | //SPI数据寄存器写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓存器//***********************// ADC串口相关寄存器//**************************// ADMUX | REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 | //ADC 多工选择寄存器REFS1 REFS0 参考电压选择0 0 AREF 、内部Vref关闭0 1 A Vcc AREF 引脚外加滤波电容1 0 保留1 1 2.56V 片内基准电压源,AREF引脚外加滤波电容ADLAR ADC转换结果左对齐0 转换结果右对齐1 转换结果左对齐(编者注:当对精度要求低时可以采取右对齐,只读低8位即可;否则采取左对齐,通过将数据左移2位+低八位&&0x03即可)MUX[4:0] 单端输入正差分输入负差分输入增益00000 ADC000001 ADC100010 ADC200011 ADC300100 ADC400101 ADC500110 ADC600111 ADC701000 ADC0 ADC0 10x01001 ADC1 ADC0 10x01010 ADC0 ADC0 200x01011 ADC1 ADC0 200x01100 ADC2 ADC2 10x01101 ADC3 ADC2 10x01110 ADC2 ADC2 200x01111 ADC3 ADC2 200x10000 ADC0 ADC1 1x10001 ADC1 ADC1 1x10010 ADC2 ADC1 1x10011 ADC3 ADC1 1x10100 ADC4 ADC1 1x10101 ADC5 ADC1 1x10110 ADC6 ADC1 1x10111 ADC7 ADC1 1x11000 ADC0 ADC2 1x11001 ADC1 ADC2 1x11010 ADC2 ADC2 1x11011 ADC3 ADC2 1x11100 ADC4 ADC2 1x11101 ADC5 ADC2 1x11110 1.22V(VBG)11111 0V(GND)ADCSRA | ADEN | ADSC | ADATE | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 | //ADC控制和状态寄存器A ADEN ADC使能位ADSC ADC开始转换位ADATE ADC自动触发使能位ADIF ADC中断标志位ADIE ADC中断使能位ADPS[2:0] 为ADC预分频选择位ADPS[2:0] 分频因子000 2001 2010 4011 8100 16101 32110 64111 128ADCH | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // ADC数据寄存器高位ADCL | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // ADC数据寄存器低位SFIOR | ADTS2 | ADTS1 | ADTS0 | -- | ACME | PUD | PSR2 | PSR10 | // 特殊功能I/O寄存器ADTS[2:0] 为ADC自动触发源位ADTS[2:0] 触发源000 连续转换模式001 模拟比较器010 外部中断请求0011 定时器/计数器0比较匹配100 定时器/ 计数器1溢出101 定时器/计数器比较匹配B110 定时器/计数器1溢出111 定时器/计数器1捕捉事件//***********************// 模拟比较器相关寄存器//**********************// SFIOR | ADTS2 | ADTS1 | ADTS0 | -- | ACME | PUD | PSR2 | PSR10 | // 特殊功能I/O寄存器ACME 模拟比较器多路复用器使能0 AIN1 连接到比较器的负极输入端1 ADC 多路复用器为模拟比较器选择负极输入ACSR | ACD | ACBG | ACO | ACI | ACIE | ACIC | ACIS1 | ACIS0 | // 模拟比较器控制和状态寄存器ACD 模拟比较器禁用ACD 置位时,模拟比较器的电源被切断ACBG 选择模拟比较器的能隙基准源ACBG 置位后,模拟比较器的正极输入由能隙基准源所取代ACO 模拟比较器输出ACI 模拟比较器中断标志ACIE 模拟比较器中断使能ACIC 模拟比较器输入捕捉使能ACIS[1:0] 模拟比较器中断模式选择ACIS1 ACIS0 中断模式0 0 比较器输出变化即可触发中断0 1 保留1 0 比较器输出的下降沿产生中断1 1 比较器输出的上升沿产生中断模拟比较器复用输入ACME ADEN MUX[2:0] 模拟比较器负极输入0 x xxx AIN11 1 xxx AIN11 0 000 ADC01 0 001 ADC11 0 010 ADC21 0 011 ADC31 0 100 ADC41 0 101 ADC51 0 110 ADC61 0 111 ADC7//***********************// 外部中断相关寄存器//**************************// MCUCR | SM2 | SE | SM1 | SM0 | ISC11 | ISC10 | ISC01 | ISC00 | // MCU控制寄存器ISx1 ISx0 说明0 0 INTx为低电平产生中断请求0 1 INTx上的任意跳变产生中断请求1 0 INTx上的下降沿产生中断请求1 1 INTx上的上升沿产生中断请求MCUCSR | JTD | ISC2 | -- | JTRF | WDRF | BORF | EXTRF | PORF | // MCU控制和状态寄存器ISC2 中断2触发方式控制位0 下降沿触发中断1 上升沿触发中断GICR | INT1 | INT0 | INT2 | -- | -- | -- | IVSEL | IVCE | // 通用中断控制寄存器INT1 使能外部中断请求1INT0 使能外部中断请求0INT2 使能外部中断请求2GIFR | INTF1 | INTF0 | INTF2 | -- | -- | -- | -- | -- | // 通用中断标志寄存器INTF1 外部中断标志1INTF0 外部中断标志0INTF2 外部中断标志2//***********************// Timer0相关寄存器//**************************//TCCR0 | FOC0 | WGM00 | COM01 | COM00 | WGM01 | CS02 | CS01 | CS00 | //T/C0 控制寄存器FOC0 强制输出比较WGM01:0为波形产生模式(编者注:普通模式下,一直加到0xFF,然后从0开始;CTC模式下一直加到OCR0,然后从0开始;快速PWM从零开始加到OCR0再加到0xFF,然后再从0开始;相位修正PWM从0加到OCR0然后加到0XFF然后减计数到OCR0再减到0)WGM01:0 T/C的波形产生模式TOP OCR0更新时间TOV0的置位时刻00 普通0XFF 立即更新MAX01 PWM,相位修正0xFF TOP BOTTOM10 CTC OCR0 立即更新MAX11 快速PWM 0xFF TOP MAXCOM01:0选择T/C0工作模式COM1:0 CTC 快速PWM 相位修正PWM00 ----------------- 正常的端口操作,不与OC0 相连接--------------------------01 比较匹配时OC0 取反保留保留10 比较匹配时OC0 清零比较匹配时OC0清零,计到TOP时OC0置位升序计数匹配清零OC0;降序计数匹配置位OC011 比较匹配发生时OC0 置位比较匹配OC0置位,计到TOP时OC0清零升序计数匹配置位OC0;降序计数匹配清零OC0CS2:0 时钟选择000 无时钟,T/C 不工作001 clk/1 ( 没有预分频)010 clk/8011 clk/64100 clk/256101 clk/1024110 时钟由T0 引脚输入,下降沿触发111 时钟由T0 引脚输入,上升沿触发TCNT0 | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // T/C0寄存器OCR0 | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // 输出比较寄存器(存储比较值) TIMSK | OCIE2 | TOIE2 | TICIE1 | OCIE1A | OCIE1B | TOIE1 | OCIE0 | TOIE0 | // T/C中断屏蔽寄存器OCIE0 T/C0 输出比较匹配中断使能TOIE0 T/C0 溢出中断使能TIFR | OCF2 | TOV2 | ICF1 | OCF1A | OCF1B | TOV1 | OCF0 | TOV0 | // T/C中断标志寄存器OCF0 输出比较标志0TOV0 T/C0 溢出标志SFIOR | ADTS2 | ADTS1 | ADTS0 | -- | ACME | PUD | PSR2 | PSR10 | // 特殊功能I/O寄存器PSR10 T/C1 与T/C0 预分频器复位//***********************// Timer1相关寄存器//**************************//TCCR1A | COM1A1 | COM1A0 | COM1B1 | COM1B0 | FOC1A | FOC1B | WGM11 | WGM10 |//T/C1 控制寄存器ACOM1A1:0 通道A 的比较输出模式COM1B1:0 通道B 的比较输出模式WGM1 3:0 为波形发生模式WGM1[3:0] T/ C1工作模式TOP OCR1x 更新时刻TOV1 置位时刻0000 普通模式0xFFFF 立即更新MAX0001 8位相位修正PWM 0x00FF TOP BOTTOM0010 9位相位修正PWM 0x01FF TOP BOTTOM0011 10位相位修正PWM 0x03FF TOP BOTTOM0100 CTC OCR1A 立即更新MAX0101 8位快速PWM 0x00FF TOP TOP0110 9位快速PWM 0x01FF TOP TOP0111 10位快速PWM 0x03FF TOP TOP1000 相位与频率修正PWM ICR1 BOTTOM BOTTOM1001 相位与频率修正PWM OCR1A BOTTOM BOTTOM1010 相位修正PWM ICR1 TOP BOTTOM1011 相位修正PWM OCR1A TOP BOTTOM1100 CTC ICR1 立即更新MAX1101 保留–––1110 快速PWM ICR1 TOP TOP1111 快速PWM OCR1A TOP TOP COM1A1:0/COM1B1:0为某一模式下工作方式的选择CTC模式COM1A1:0/COM1B1:0 说明00 普通端口操作,非OC1A/OC1B 功能01 比较匹配时OC1A/OC1B 电平取反10 比较匹配时清零OC1A/OC1B( 输出低电平)11 比较匹配时置位OC1A/OC1B ( 输出高电平)快速PWMCOM1A(B)1:0 说明00 普通端口操作,非OC1A/OC1B 功能01 WGM13:0=15:匹配时OC1A 取反,OC1B不占用物理引脚.WGM13:0为其它值时为普通端口操作,非OC1A/OC1B功能10 比较匹配时清零OC1A/OC1B,OC1A/OC1B在TOP 时置位11 比较匹配时置位OC1A/OC1B,OC1A/OC1B在TOP 时清零相位修正及相频修正PWM 模式COMA(B)1:0 说明00 普通端口操作,非OC1A/OC1B 功能01 WGM13:0=9或14: 比较匹配OC1A取反,OC1B不占用物理引脚.WGM13:0为其它值时为普通端口操作,非OC1A/OC1B功能10 升序记数比较匹配清零OC1A/OC1B,降序记数比较匹配置位OC1A/OC1B11 升序记数比较匹配置位OC1A/OC1B,降序记数比较匹配清零OC1A/OC1BFOC1A 通道A 强制输出比较FOC1B 通道B 强制输出比较FOC1A/FOC1B只有当WGM13:0指定为非PWM模式时被激活TCCR1B | ICNC1 | ICES1 | –| WGM13 | WGM12 | CS12 | CS11 | CS10 | // T/C1 控制寄存器BICNC1 输入捕捉噪声抑制器ICES1 输入捕捉触发沿选择0 下降沿触发1 上升沿触发WGM13:2 波形发生模式见TCCR1A 寄存器中的描述CS12:0 时钟选择000 无时钟源(T/C停止工作)001 clk(无预分频)010 clk/8011 clk/64100 clk/256101 clk/1024110 外部T1 引脚,下降沿驱动111 外部T1 引脚,上升沿驱动TCNT1H | Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bit10 | Bit9 | Bit8 | // T/C1 技术寄存器TCNT1L | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |OCR1AH | Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bit10 | Bit9 | Bit8 | // 输出比较寄存器1AOCR1AL | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |OCR1BH | Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bit10 | Bit9 | Bit8 | // 输出比较寄存器1BOCR1BL | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |ICR1H | Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bit10 | Bit9 | Bit8 | // 输入捕捉寄存器1ICR1L | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |TIMSK | OCIE2 | TOIE2 | TICIE1 | OCIE1A | OCIE1B | TOIE1 | OCIE0 | TOIE0 | //T/C中断屏蔽寄存器TICIE1 T/C1 输入捕捉中断使能OCIE1A 输出比较A 匹配中断使能OCIE1B T/C1 输出比较B 匹配中断使能TOIE1 T/C1 溢出中断使能TIFR | OCF2 | TOV2 | ICF1 | OCF1A | OCF1B | TOV1 | OCF0 | TOV0 | //T/C中断标志寄存器ICF1 T/C1 输入捕捉标志位OCF1A T/C1 输出比较A 匹配标志位OCF1B T/C1 输出比较B 匹配标志位TOV1 T/C1 溢出标志SFIOR | ADTS2 | ADTS1 | ADTS0 | -- | ACME | PUD | PSR2 | PSR10 | // 特殊功能I/O寄存器PSR10 T/C1 与T/C0 预分频器复位//***********************// Timer2相关寄存器//**************************//TCCR2 | FOC2 | WGM20 | COM21 | COM20 | WGM21 | CS22 | CS21 | CS20 |FOC2 强制输出比较WGM2[1:0] 波形产生模式WGM2[1:0] T/C工作模式TOP OCR2的更新时间TOV2的职位时刻00 普通0xFF 立即更新MAX01 相位修正PWM 0xFF TOP BOTTOM10 CTC OCR2 立即更新MAX11 快速PWM 0xFF TOP MAXCOM2[1:0 ] 比较匹配输出模式CTC模式COM21:0 说明00 正常的端口操作,不与OC0 相连接01 比较匹配发生时OC0 取反10 比较匹配发生时OC0 清零11 比较匹配发生时OC0 置位快速PWM 模式COM21:0 说明00 正常的端口操作,不与OC0 相连接01 保留10 比较匹配发生时OC0 清零,计数到TOP 时OC0 置位11 比较匹配发生时OC0 置位,计数到TOP 时OC0 清零相位修正PWMCOM21:0 说明00 正常的端口操作,不与OC2 相连接01 保留10 在升序计数时发生比较匹配将清零OC2 ;降序计数时发生比较匹配将置位OC211 在升序计数时发生比较匹配将置位OC2 ;降序计数时发生比较匹配将清零OC2CS2 2:0 时钟选择000 无时钟,T/C不工作001 clk(t2s)(无预分频)010 clk(t2s)/8011 clk(t2s)/32100 clk(t2s)/64101 clk(t2s)/128110 clk(t2s)/256111 clk(t2s)/1024TCNT2 | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // 定时器/ 计数器寄存器OCR2 | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // 输出比较寄存器ASSR | -- | -- | -- | -- | AS2 | TCN2UB | OCR2UB | TCR2UB | // 异步状态寄存器AS2 异步T/C2AS2为"0”时T/C2由I/O时钟clkI/O驱动;AS2为"1”时T/C2由连接到TOSC1引脚的晶体振荡器驱动TCN2UB T/C2 更新中OCR2UB 输出比较寄存器2 更新中TCR2UB T/C2 控制寄存器更新中TIMSK | OCIE2 | TOIE2 | TICIE1 | OCIE1A | OCIE1B | TOIE1 | OCIE0 | TOIE0 | //T/C2中断屏蔽寄存器OCIE2 T/C2 输出比较匹配中断使能TOIE2 T/C2 溢出中断使能TIFR | OCF2 | TOV2 | ICF1 | OCF1A | OCF1B | TOV1 | OCF0 | TOV0 | //T/C2中断标志寄存器OCF2 输出比较标志2TOV2 T/C2 溢出标志SFIOR | ADTS2 | ADTS1 | ADTS0 | -- | ACME | PUD | PSR2 | PSR1 | // 特殊功能IO寄存器PSR2 预分频复位T/C2//***********************// EEPROM相关寄存器//**************************// EEARH | ----- | ----- | ----- | ----- | ----- | ----- | ----- | EEAR8 | // EEPROM 地址寄存器EEARL | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 |EEDR | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | // EEPROM数据寄存器EECR | -- | -- | -- | -- | EERIE | EEMWE | EEWE | EERE | // EEPROM 控制寄存器EERIE 使能EEPROM 准备好中断EEMWE EEPROM 主机写使能EEWE EEPROM 写使能EERE EEPROM 读使能//***********************// TWI相关寄存器//******************************// TWBR | TWBR7 | TWBR6 | TWBR5 | TWBR4 | TWBR3 | TWBR2 | TWBR1 | TWBR0 |// TWI比特率寄存器TWCR | TWINT | TWEA | TWSTA | TWSTO | TWWC | TWEN | ---- | TWIE |// TWI控制寄存器TWINT TWI中断标志TWEA 使能TWI应答TWSTA TWI START状态标志TWSTO TWI STOP状态标志TWWC TWI写碰撞标志TWEN TWI使能TWIE 使能TWI中断TWSR | TWS7 | TWS6 | TWS5 | TWS4 | TWS3 | –| TWPS1 | TWPS0 | // TWI状态寄存器TWS7:3 TWI状态TWPS:0 TWI 预分频位00 101 410 1611 64TWDR | TWD7 | TWD6 | TWD5 | TWD4 | TWD3 | TWD2 | TWD1 | TWD0 |// TWI 数据寄存器TWAR | TWA6 | TWA5 | TWA4 | TWA3 | TWA2 | TWA1 | TWA0 | TWGCE |// TWI 从机地址寄存器TWA6:0 TWI 从机地址寄存器TWGCE 使能TWI广播识别//***************************************************************************************//。
ATmega16寄存器
ATmega16寄存器状态寄存器——SREGI:全局中断触发禁⽌位,为中断总控制开关。
T:通⽤标志位,⽤户⾃定义。
H:半进位标志位。
S:符号标志位。
V:溢出标志位。
N:负数标志位。
Z:零标志位。
C:进/借位标志位。
通⽤中断控制寄存器——GICRINT1:外部中断1使能。
INT0:外部中断0使能。
INT2:外部中断2使能。
IVSEL:中断向量表选择。
当IVSEL=0时,中断向量区的位置定义在FLASH的开始处;当IVSEL=1时,定义在引导程序载⼊区的起始处。
IVCE:中断向量表转移允许位。
必须在IVCE位被写⼊1后的4个时钟周期内,修改IVSEL。
4个时钟周期后,或IVSEL位写⼊后,IVCE位由硬件⾃动清零。
OCIE2:T/C2输出⽐较匹配中断使能位。
TOIE2:T/C2溢出中断使能位。
TICIE1:T/C1输⼊捕获中断使能位。
OCIE1A:T/C1输出⽐较A中断使能位。
OCIE1B:T/C1输出⽐较B匹配中断使能位;TOIE1:T/C1溢出中断使能位。
OCIE0:T/C0输出⽐较中断使能位。
TOIE0:T/C0溢出中断使能位。
TIFR寄存器中的各个中断标志是与TIMSK中的使能位⼀⼀对应。
当SPMIE位被置位,若状态寄存器中的I位也被置位时,SPM完成中断即被使能。
只要SPMCSR寄存器中的SPMEN位被清零(程序存储器操作完成),SPM中断服务将被执⾏(避免轮询占⽤较多机时)。
RWWSB:RWW区忙标志当开始对RWW区进⾏⾃编程(页擦除或页写⼊)操作时,RWWSB位将被硬件置位,RWWSB ⼀旦被置位,对RWW区的读操作将被禁⽌。
在⾃编程操作完成后,向RWWSRE位写⼊1,会将RWWSB位清除。
此外,如果开始⼀个页读取操作,也会将RWWSB位清零。
RWWSRE:读RWW区允许当启动对RWW区⾃我编程(页擦除或页写⼊)操作时,RWWSB位被硬件置1,禁⽌对RWW区的读操作。
在⾃我编程操作完成后(SPMEN=0),同时将RWWSRE位和SPMEN 位置为1,在其后的4个时钟周期内的SPM指令将使RWW区重新开放。
AVR单片机i-o(输入-输出)端口详解
AVR单片机i/o(输入/输出)端口详解通过前面示例的讲解,已基本知道了单片机I/O 端口的用法。
为了更好、更深入地运用好I/O 端口,下面再来详细讨论一下AVR 单片机ATMega16 的端口结构。
输入/输出端口(I/O 端口)是单片机所能依赖进行控制的唯一通道,如果把单片机内核比作人的大脑,那I/O 端口就相当于人的五官和四肢,负责着信息的获取和动作的执行,如果没有I/O 端口单片机本身就变得毫无意义,因此很有必要来详细了解它们的内部结构。
ATMega16 的端口为具有可选上拉电阻的双向I/O 端口,下面是其中某一位I/O 口的内部结构图(来自于Datasheet)。
在上图中,Pxn 就是这一位的输入/输出端口,也就是单片机的某个外部引脚。
它通过PORTxn 寄存器和数据总线(DATA BUS)相连。
前面示例中对PORTxn 的赋值其实就是通过数据总线来写这个寄存器实现的。
在图中还可以看到,在Pxn 和PORTxn 之间实际上还串有一个门控位,如果要让PORTxn 的结果输出至Pxn,那这个门控位必须得打开,而该门控位的受控信号来自于DDxn(DDRx 中的一位)寄存器。
通过数据总线对该寄存器位写1,就可打开门控位,让输出信号直接输出至引脚Pxn。
这也正是为什么单片机引脚要处于输出状态就必须要给DDRx 方向寄存器赋值1 的原因所在。
如果给DDxn 赋值0,则门控位断开,引脚Pxn 不能做为输出,只能做为输入。
但输入信号可以取自两个地方,一个是直接从外部引脚Pxn 来取(图中的下半部分),实际上是把外部引脚的信号锁存到PINxn 寄存器中来读取;另一个则是从输出寄存器PORTxn 来取(图中门控位控制信号为RRx 的地方)。
一般称从外部引脚(PINxn)来取为读引脚,称从寄存器PORTxn 来取为读端口寄存器。
从图中还可以看出,在引脚Pxn 的上方,有一个受控于MOS 管的上拉电阻。
而MOS 管又同时受到PUD 位、DDxn 位和PORTxn 位的共同控制。
AVR单片机项目4 ATmega16单片机IO接口应用
1<<(x)表示逻辑“1”左移x位,_BV(PX1)为逻辑“1”左移 1位,结果为0b00000010,_BV(PX7)为逻辑“1”左移7位 0b10000000。
DDRA|=_BV(PA1)|_BV(PA7);//PA口的第1位和第7位置高电 平输出 PORTA|=_BV(PA1);//PA口第1位输出高电平 PORTA&=~BV(PA7);//PA口第7位输出低电平
二、I/O接口的寄存器
在GCCAVR C环境中,头文件“io.h”中定义了许多用于控 制I/O接口输入/出操作的宏,这些宏与I/O寄存器同名,通 过这些宏可以控制A、B、C、D接口的输入输出操作。 当A、B、C、D接口用于数据I/O口时,通过DDRx、 PORTx和PINx三个宏控制接口的输入与输出(其中x为A、B、 C或D)。例如: ①DDRA为A口数据方向寄存器,用来定义A口的通讯方 向(输入/输出); ②PORTA为A口数据寄存器,用来输出数据(输入时, PORTX为高,打开上拉电阻);当PORTx=1时,I/O引脚高 电平,可提供输出20mA电流;当PORTx=0时,I/O引脚低电 平,可吸纳20mA电流。因此,AVR的I/O在输出方式下提供 了比较大驱动能力,可以直接驱动LED等小功率外围器件。 ③PINA用来读取A口数据(只读)。
avrio口引脚配置表ddrxnportxnpudio方向上拉电阻引脚状态说明00x输入无效高阻态010输入有效外部引脚拉低时将输出电流011输入无效高阻态10x输出无效输出低电平吸收电流11x输出无效输出高电平输出电流ddrxnportxnpudio方向上拉电阻引脚状态说明00x输入无效高阻态010输入有效外部引脚拉低时将输出电流011输入无效高阻态10x输出无效输出低电平吸收电流11x输出无效输出高电平输出电流atmega16单片机io端口的主要特点?双向可独立位控的io口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
$2E ($004E)
TCCR1B
定时器/计数器1控制寄存器B
ICNC1
ICES1
WGM13
WGM12
CS12
CS11
CS10
$2F($004F)
TCCR1A
定时器/计数器1控制寄存器A
COM1A1
COM1A0
COM1B1
COM1B0
FOC1A
FOC1B
WGM11
WGM10
TWCR
TWI控制寄存器
TWINT
TWEA
TWSTA
TWSTO
TWWC
TWEN
TWIE
$37 ($0057)
SPMCR
程序存储器写控制寄存器
SPMIE
RWWSB
RWWSRE
BLBSET
PGWRT
PGERS
SPMEN
$38 ($0058)
TIFR
定时器/计数器中断标志寄存器
OCF2
TOV2
ICF1
OCF1A
USART波特率寄存器低8位
$0A($002A)
UCSRB
USART控制状态寄存器B
RXCIE
TXCIE
UDRIE
RXEN
TXEN
UCSZ2
RXB8
TXB8
$0B ($002B)
UCSRA
USART控制状态寄存器A
RXC
TXC
UDRE
FE
DOR
PE
U2X
MPCM
$0C($002C)
UDR
USART I/O数据寄存器
PORTC
C口数据寄存器
0
1/0
0
输入
有效/无效
有效时外部引脚拉低时输出电流(uA)
$16 ($0036)
PINB
B口外部输入引脚
0
X
1
输入
无效
三态(高阻)
$17 ($0037)
DDRB
B口数据方向寄存器
1
0
X
输出
无效
推挽0输出,吸收电流(20mA)
$18 ($0038)
PORTB
B口数据寄存器
1
1
WDTCR
看门狗定时控制寄存器
WDTOE
WDE
WDP2
WDP1
WDP0
$22 ($0042)
ASSR
异步模式状态寄存器
AS2
TCN2UB
OCR2UB
TCR2UB
$23 ($0043)
OCR2
定时器/计数器2输出比较寄存器
$24 ($0044)
TCNT2
定时器/计数器2(8位)
$25 ($0045)
TCCR2
X
输出
无效
推挽1输出,输出电流(20mA)
$19 ($0039)
PINA
A口外部输入引脚
$1A($003A)
DDRA
A口数据方向寄存器
$1B ($003B)
PORTA
A口数据寄存器
$1C($003C)
EECR
EEPROM控制寄存器
EERIE
EEMWE
EEWE
EERE
$1D ($003D)
EEDR
EEPROM数据寄存器
ADห้องสมุดไป่ตู้E
ADPS2
ADPS1
ADPS0
$07 ($0027)
ADMUX
ADC多路选择器
REFS1
REFS0
ADLAR
MUX4
MUX3
MUX2
MUX1
MUX0
$08 ($0028)
ACSR
模拟比较控制和状态寄存器
ACD
ACBG
ACO
ACI
ACIE
ACIC
ACIS1
ACIS0
$09 ($0029)
UBRRL
INT1
INT0
INT2
IVSEL
IVCE
$3C($005C)
OCR0
T/C0计数器输出比较寄存器
$3D ($005D)
SPL
堆栈指针寄存器低8位
$3E ($005E)
SPH
堆栈指针寄存器高8位
$3F($005F)
SREG
状态寄存器
I
T
H
S
V
N
Z
C
$29 ($0049)
OCR1BH
定时器/计数器1输出比较寄存器B高8位
$2A($004A)
OCR1AL
定时器/计数器1输出比较寄存器A低8位
$2B ($004B)
OCR1AH
定时器/计数器1输出比较寄存器A高8位
$2C($004C)
TCNT1L
定时器/计数器1寄存器低8位
$2D ($004D)
TCNT1H
DDRD
D口数据方向寄存器
$12 ($0032)
PORTD
D口数据寄存器
表6.1 I/O口引脚配置表
$13 ($0033)
PINC
C口外部输入引脚
DDRXn
PORTXn
PUD
I/O方式
内部上拉电阻
引脚状态说明
$14 ($0034)
DDRC
C口数据方向寄存器
0
0
X
输入
无效
三态(高阻)
$15 ($0035)
ATmega16 I/O寄存器空间分配表
十六进制地址
名称
功能
位7
位6
位5
位4
位3
位2
位1
位0
$00 ($0020)
TWBR
TWI波特率寄存器
$01 ($0021)
TWSR
TWI状态寄存器
TWS7
TWS6
TWS5
TWS4
TWS3
TWS2
TWPS1
TWPS0
$02 ($0022)
TWAR
TWI从机地址寄存器
TWA6
TWA5
TWA4
TWA3
TWA2
TWA1
TWA0
TWGCE
$03 ($0023)
TWDR
TWI数据寄存器
$04 ($0024)
ADCL
ADC数据寄存器低字节
$05 ($0025)
ADCH
ADC数据寄存器高字节
$06 ($0026)
ADCSRA
ADC控制和状态寄存器
ADEN
ADSC
ADATE
ADIF
定时器/计数器2控制寄存器
FOC2
WGM20
COM21
COM20
WGM21
CS22
CS21
CS20
$26 ($0046)
ICR1L
定时器/计数器1输入捕捉寄存器低8位
$27 ($0047)
ICR1H
定时器/计数器1输入捕捉寄存器高8位
$28 ($0048)
OCR1BL
定时器/计数器1输出比较寄存器B低8位
$0D ($002D)
SPCR
SPI控制寄存器
SPIE
SPE
DORD
MSTR
CPOL
CPHA
SPR1
SPR0
$0E ($002E)
SPSR
SPI状态寄存器
SPIF
WCOL
SPI2X
$0F($002F)
SPDR
SPI I/O数据寄存器
$10 ($0030)
PIND
D口外部输入引脚
$11 ($0031)
OCF1B
TOV1
OCF0
TOV0
$39 ($0059)
TIMSK
定时器/计数器中断屏蔽寄存器
OCIE2
TOIE2
TICIE1
OCIE1A
OCIE1B
TOIE1
OCIE0
TOIE0
$3A($005A)
GIFR
通用中断标志寄存器
INTF1
INTF0
INTF2
$3B ($005B)
GICR
通用中断控制寄存器
$1E ($003E)
EEARL
EEPROM地址寄存器低8位
$1F($003F)
EEARH
EEPROM地址寄存器高8位
$20 ($0040)
UBRRH
USART波特率寄存器高4位
UCSRC
USART状态寄存器C
URSEL
UMSEL
UPM1
UPM0
USBS
UCSZ1
UCSZ0
UCPOL
$21 ($0041)
$30 ($0050)
SFIOR
特殊功能I/O寄存器
ADTS2
ADTS1
ADTS0
ACME
PUD
PSR2
PSR10
$31 ($0051)
OSCCAL
内部RC振荡器校准值寄存器
OCDR
在线调试寄存器
$32 ($0052)
TCNT0
定时器/计数器0(8位)
$33 ($0053)
TCCR0
定时器/计数器0控制寄存器
FOC0
WGM00
COM01
COM00
WGM01
CS02
CS01
CS00
$34 ($0054)
MCUCSR
MCU控制和状态寄存器
JTD
ISC2
JTRF
WDRF
BORF
EXTRF
PORF
$35 ($0055)