ATmega16寄存器详述

发布时间:2024-11-10

ATmega16芯片各寄存器汇总

1.产品特性

高性能、低功耗的8位AVR®微处理器先进的RISC结构

131条指令–大多数指令执行时间为单个时钟周期32个8位通用工作寄存器全静态工作

工作于16MHz时性能高达16MIPS

只需两个时钟周期的硬件乘法器非易失性程序和数据存储器

16K字节的系统内可编程Flash,擦写寿命10,000次,具有多重密码保护锁定(LOCK)

功能。

具有独立锁定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正的

同时读写操作。

512字节的EEPROM,擦写寿命100,000次,可用于保存系统的设定参数、固定

表格和掉电后的数据的保存。即方便了使用,减小了系统的空间,又大大提高了系统的保密性。

1K字节的片内SRAM,可灵活使用指令运算,适合使用功能很强的C语言编程,

易学、易写、易移植。

可以对锁定位进行编程以实现用户程序的加密

JTAG接口(与IEEE1149.1标准兼容)

符合JTAG标准的边界扫描功能支持扩展的片内调试功能

通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程

外设特点

两个具有独立预分频器和比较器功能的8位定时器/计数器一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器四通道PWM8路10位ADC

8个单端通道

TQFP封装的7个差分通道

2个具有可编程增益(1x,10x,或200x)的差分通道

面向字节的两线接口TWI

1

ATmega16芯片各寄存器汇总

两个可编程的串行USART

可工作于主机/从机模式的SPI串行接口

具有独立片内振荡器的可编程看门狗定时器WDT,可防止程序走飞,提高产品的

抗干扰能力。

片内模拟比较器

特殊的处理器特点

上电复位以及可编程的掉电检测片内经过标定的RC振荡器片内/片外中断源

6种睡眠模式:空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模

式以及扩展的Standby模式

I/O和封装

32个可编程的I/O口,具有大电流10~20mA(输出电流)或40mA(吸电流)的特

点,可直接驱动LED、SSR或继电器。

40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装。

工作电压

ATmega16L:2.7-5.5VATmega16:4.5-5.5V

速度等级

0~8MHzATmega16L0~16MHzATmega16

2.引脚说明

2

ATmega16芯片各寄存器汇总

3

ATmega16芯片各寄存器汇总

4

ATmega16芯片各寄存器汇总

3.I/O端口3.1I/O端口特性

共有PA~PD四组通用I/O口,每组I/O都是8位寄存器。

作为通用数字I/O使用时,所有AVRI/O端口都具有真正的读-修改-写功能。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC和地相连。

3.2通用I/O引脚配置

每个端口都有三个I/O存储器地址:数据寄存器PORTx、数据方向寄存器DDRx和端口输入引脚PINx。数据寄存器和数据方向寄存器为读/写寄存器,而端口输入引脚为只读寄存器。但是需要特别注意的是,对PINx寄存器某一位写入逻辑“1”将造成数据寄存器相应位的数据发生“0”与“1”的交替变化。当寄存器SFIOR的上拉禁止位PUD置位时所有端口引脚的上拉电阻都被禁止。端口引脚配置见表。

5

ATmega16芯片各寄存器汇总

3.3I/O寄存器地址表

ATmega16的4个8位的端口都有各自对应的3个I/O端口寄存器,它们占用了I/O空间的12个地址。

4PA口寄存器3.3.4

◎数据方向寄存器DDRA

6

ATmega16芯片各寄存器汇总

◎数据寄存器PORTA

◎输入引脚地址PINA

3.5PB口寄存器3.5

◎数据方向寄存器DDRB

◎数据寄存器PORTB

7

ATmega16芯片各寄存器汇总

◎输入引脚地址PINB

6PC口寄存器3.3.6

◎数据方向寄存器DDRC

◎数据寄存器PORTC

◎输入引脚地址PINC

8

ATmega16芯片各寄存器汇总

7PD口寄存器3.3.7

◎数据方向寄存器DDRD

◎数据寄存器PORTD

◎输入引脚地址PIND

DDRX是方向寄存器,可读可写。在写操作时用于制定PX口是作为输入口还是输出口;在读操作时,从DDRX寄存器读出来的是端口的方向设定值。DDRX寄存器的初始值为0x00。

PORTX是数据寄存器,可读写。在写操作时,从PORTX写入的数据存入内部锁存器,以确定端口的工作状态或者将写入的数据送到外部数据总线。PORTX寄存器的初始值为0x00。

PINX用来访问端口X的逻辑值,且只允许读操作。从PINX读入的数据只是X口引脚的逻辑状态。其初始值为高阻态。8寄存器头文件3.3.8

/*PortA*/

9

ATmega16芯片各寄存器汇总

#definePINA

(*(volatileunsignedchar*)0x39)

#defineDDRA(*(volatileunsignedchar*)0x3A)#definePORTA(*(volatileunsignedchar*)0x3B)/*PortB*/#definePINB

(*(volatileunsignedchar*)0x36)

#defineDDRB(*(volatileunsignedchar*)0x37)#definePORTB(*(volatileunsignedchar*)0x38)/*PortC*/#definePINC

(*(volatileunsignedchar*)0x33)

#defineDDRC(*(volatileunsignedchar*)0x34)#definePORTC(*(volatileunsignedchar*)0x35)/*PortD*/#definePIND

(*(volatileunsignedchar*)0x30)

#defineDDRD(*(volatileunsignedchar*)0x31)#definePORTD(*(volatileunsignedchar*)0x32)/*PortAbits*/#definePORTA7#definePORTA6#definePORTA5#definePORTA4#definePORTA3#definePORTA2#definePORTA1#definePORTA0#definePA7#definePA6#definePA5#definePA4#definePA3#definePA2#definePA1#definePA0

7654321076543210

10

ATmega16芯片各寄存器汇总

#defineDDA6#defineDDA5#defineDDA4#defineDDA3#defineDDA2#defineDDA1#defineDDA0#definePINA7#definePINA6#definePINA5#definePINA4#definePINA3#definePINA2#definePINA1#definePINA0/*PortBbits*/#definePORTB7#definePORTB6#definePORTB5#definePORTB4#definePORTB3#definePORTB2#definePORTB1#definePORTB0#definePB7#definePB6#definePB5#definePB4#definePB3#definePB2#definePB1#definePB0

7654321076543210

11

654321076543210

ATmega16芯片各寄存器汇总

#defineDDB6#defineDDB5#defineDDB4#defineDDB3#defineDDB2#defineDDB1#defineDDB0#definePINB7#definePINB6#definePINB5#definePINB4#definePINB3#definePINB2#definePINB1#definePINB0/*PortCbits*/#definePORTC7#definePORTC6#definePORTC5#definePORTC4#definePORTC3#definePORTC2#definePORTC1#definePORTC0#definePC7#definePC6#definePC5#definePC4#definePC3#definePC2#definePC1#definePC0

7654321076543210

12

654321076543210

ATmega16芯片各寄存器汇总

#defineDDC6#defineDDC5#defineDDC4#defineDDC3#defineDDC2#defineDDC1#defineDDC0#definePINC7#definePINC6#definePINC5#definePINC4#definePINC3#definePINC2#definePINC1#definePINC0/*PortDbits*/#definePORTD7#definePORTD6#definePORTD5#definePORTD4#definePORTD3#definePORTD2#definePORTD1#definePORTD0#definePD7#definePD6#definePD5#definePD4#definePD3#definePD2#definePD1#definePD0

7654321076543210

13

654321076543210

ATmega16芯片各寄存器汇总

#defineDDD6#defineDDD5#defineDDD4#defineDDD3#defineDDD2#defineDDD1#defineDDD0#definePIND7#definePIND6#definePIND5#definePIND4#definePIND3#definePIND2#definePIND1#definePIND0

654321076543210

3.9I/O编程注意事项

设置I/O口的数据方向寄存器,确定其输入/输出方式。配置为输出方式时,设置数据寄存器的初始值。配置为输入方式时,根据情况选择是否使用上拉电阻。

配置为输入方式时,若读取外部引脚的电平,应读取PINxn的值,而不是PORTxn的值。

4.外部中断

中断是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。

Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。中断向量表见表,处于越低地址的中断具有更高优先级。

外部中断通过引脚INT0、INT1与INT2触发。只要使能了中断,即使引脚INT0..2配置为输出,只要电平发生了合适的变化,中断也会触发。

14

ATmega16芯片各寄存器汇总

4.1状态寄存器SREG

I:全局中断使能位

在I置位后,单独的中断使能由不同的中断寄存器控制。若I为0,则禁止中断。4.2MCU控制寄存器MCUCR

SE:MCU休眠使能位

15

ATmega16芯片各寄存器汇总

外部中断1由引脚INT1激发,如果SREG寄存器的I标志位和相应的中断屏蔽位置位的话。触发方式如上表所示。在检测边沿前MCU首先采样INT1引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。

外部中断0由引脚INT0激发,如果SREG寄存器的I标志位和相应的中断屏蔽位置位的话。触发方式如上表所示。在检测边沿前MCU首先采样INT0引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。

4.3MCU控制与状态寄存器MCUCSR

16

ATmega16寄存器详述.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219