avr寄存器详细资料补充.docx

上传人:b****7 文档编号:8975441 上传时间:2023-02-02 格式:DOCX 页数:56 大小:52.38KB
下载 相关 举报
avr寄存器详细资料补充.docx_第1页
第1页 / 共56页
avr寄存器详细资料补充.docx_第2页
第2页 / 共56页
avr寄存器详细资料补充.docx_第3页
第3页 / 共56页
avr寄存器详细资料补充.docx_第4页
第4页 / 共56页
avr寄存器详细资料补充.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

avr寄存器详细资料补充.docx

《avr寄存器详细资料补充.docx》由会员分享,可在线阅读,更多相关《avr寄存器详细资料补充.docx(56页珍藏版)》请在冰豆网上搜索。

avr寄存器详细资料补充.docx

avr寄存器详细资料补充

Atmega16单片机有32个通用I/O口,有PA~PD四组,每组都是8位。

其主要的寄存器有DDRXn(X=A,B,C,D;n=0,2,…,7,下同),PORTXn和PINXn。

I/O组合设置见表1。

表1I/O组合设置

DDRXn

PORTXn

I/O

上拉电阻

说明

0

0

输入

I/O三态输入

0

1

输入

I/O口带上拉电阻输入

1

0

输出

推免0输出

1

1

输出

推免1输出

1.PA口寄存器

(1)DDRA

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DDRA7

DDRA6

DDRA5

DDRA4

DDRA3

DDRA2

DDRA1

DDRA0

(2)PORTA

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PORTA7

PORTA6

PORTA5

PORTA4

PORTA3

PORTA2

PORTA1

PORTA0

(3)PINA

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PINA7

PINA6

PINA5

PINA4

PINA3

PINA2

PINA1

PINA0

2.PB口寄存器

(1)DDRB

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DDRB7

DDRB6

DDRB5

DDRB4

DDRB3

DDRB2

DDRB1

DDRB0

(2)PORTB

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

(3)PINB

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

3.PC口寄存器

(1)DDRC

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DDRC7

DDRC6

DDRC5

DDRC4

DDRC3

DDRC2

DDRC1

DDRC0

(2)PORTC

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PORTC7

PORTC6

PORTC5

PORTC4

PORTC3

PORTC2

PORTC1

PORTC0

(3)PINC

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PINC7

PINC6

PINC5

PINC4

PINC3

PINC2

PINC1

PINC0

4.PD口寄存器

(1)DDRD

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DDRD7

DDRD6

DDRD5

DDRD4

DDRD3

DDRD2

DDRD1

DDRD0

(2)PORTD

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PORTD7

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

(3)PIND

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

PIND7

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

DDRX是方向寄存器,可读可写。

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

DDRX寄存器的初始值为0x00。

PORTX是数据寄存器,可读写。

在写操作时,从PORTX写入的数据存入内部锁存器,以确定端口的工作状态或者将写入的数据送到外部数据总线。

PORTX寄存器的初始值为0x00。

PINX用来访问端口X的逻辑值,且只允许读操作。

从PINX读入的数据只是X口引脚的逻辑

状态。

其初始值为高阻态。

三.中断寄存器

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

Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。

如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。

中断向量表见表2,处于越低地址的

中断具有更高优先级。

表2中断向量表

向量号

程序地址

中断源

描述

1

0x00

RESET

外部引脚电平引发的复位,上电复位,掉电检测复位,看门狗复位,以及JTAGAVR复位

2

0x02

INT0

外部中断请求0

3

0x04

INT1

外部中断请求1

4

0x06

TIMER2COMP

定时器/计数器2比较匹配

5

0x08

TIMER2OVF

定时器/计数器2溢出

6

0x0a

TIMER1CAPT

定时器/计数器1事件捕捉

7

0x0c

TIMER1COMPA

定时器/计数器1比较匹配A

8

0x0e

TIMER1COMPB

定时器/计数器1比较匹配B

9

0x10

TIMER1OVF

定时器/计数器1溢出

10

0x12

TIMER0OVF

定时器/计数器0溢出

11

0x14

SPI,STC

SPI串行传输结束

12

0x16

USART,RXC

USART,Rx结束

13

0x18

USART,UDRE

USART数据寄存器空

14

0x1a

USART,TXC

USART,Tx结束

15

0x1c

ADC

ADC转换结束

16

0x1e

EE_RDY

EEPROM就绪

17

0x20

ANA_COMP

模拟比较器

18

0x22

TWI

两线串行接口

19

0x24

INT2

外部中断请求2

20

0x26

TIMER0COMP

定时器/计数器0比较匹配

21

0x28

SPM_RDY

保存程序存储器内容就绪

1.状态寄存器SREG

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

I

T

H

S

V

N

Z

C

I:

全局中断使能位。

在I置位后,单独的中断使能由不同的中断寄存器控制。

若I为0,则禁止中断。

2.MCU控制寄存器MCUCR

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

SM2

SE

SM1

SM0

ISC11

ISC10

ISC01

ISC00

SE:

MCU休眠使能位

SM1~SM0:

MCU休眠模式选择

SM2

SM1

SM0

休眠模式

0

0

0

空闲

0

0

1

ADC噪声抑制模式

0

1

0

掉电模式

0

1

1

省电模式

1

0

0

保留

1

0

1

保留

1

1

0

Standby

(1)模式

1

1

1

扩展Standby

(1)模式

ISC11~ISC10:

外部中断1的中断触发检测方式

ISC11

ISC10

INT1中断

0

0

低电平中断

0

1

INT1引脚上任意的逻辑电平变化都将引发中断

1

0

下降沿中断

1

1

上升沿中断

ISC01~ISC00:

外部中断0的中断检测方式

ISC01

ISC00

INT0中断

0

0

低电平中断

0

1

INT1引脚上任意的逻辑电平变化都将引发中断

1

0

下降沿中断

1

1

上升沿中断

通用中断控制寄存器GICR

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

INT1

INT0

INT2

-

-

-

IVSEL

IVCE

INT1:

使能外部中断请求1

INT0:

使能外部中断请求0

INT2:

使能外部中断请求2

4.通用中断标志寄存器GIFR

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

INTF1

INTF0

INTF2

-

-

-

IVSEL

IVCE

INTF1{INTF缩写:

interruptflag}:

外部中断标志INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。

如果SREG的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。

进入中断服务程序之后该标志自动清零。

此外,标志位也可以通过写入”1”来清零。

INTF0:

{INTF缩写:

interruptflag}外部中断标志INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。

如果SREG的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。

进入中断服务程序之后该标志自动清零。

此外,标志位也可以通过写入”1”来清零。

INTF2:

{INTF缩写:

interruptflag}外部中断标志INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。

如果SREG的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。

进入中断服务程序之后该标志自动清零。

此外,标志位也可以通过写入”1”来清零。

8

5.T/C中断屏蔽寄存器TIMSK

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

OCIE2

TOIE2

TICIE1

OCIE1A

OCIE1B

TOIE1

OCIE0

TOIE0

TOIE0{timeroverflowinterruptenable}:

T/C0溢出中断使能

当TOIE0和状态寄存器的全局中断使能位I都为”1”时,T/C0的溢出中断使能。

当T/C0发生溢出,即TIFR中的TOV0位置位时,中断服务程序得以执行。

OCIE0{outputcompareinterruptenable}:

T/C0输出比较匹配中断使能

当OCIE0和状态寄存器的全局中断使能位I都为”1”时,T/C0的输出比较匹配中断使能。

当T/C0的比较匹配发生,即TIFR中的OCF0置位时,中断服务程序得以执行。

TOIE1:

{timeroverflowinterruptenable}T/C1溢出中断使能

当TOIE1和状态寄存器的全局中断使能位I都为”1”时,T/C1的溢出中断使能。

当T/C1发生溢出,即TIFR中的TOV1位置位时,中断服务程序得以执行

OCIE1B:

{outputcompareinterruptenable}T/C1输出比较B匹配中断使能

当该位被设为"1”,且状态寄存器中的I位被设为"1”时,使能T/C1的输出比较B匹配中断使能。

一旦TIFR上的OCF1B置位,CPU即开始执行T/C1输出比较B匹配中断服务程序。

OCIE1A:

{outputcompareinterruptenable}输出比较A匹配中断使能

当该位被设为"1”,且状态寄存器中的I位被设为"1”时,T/C1的输出比较A匹配中断使能。

一旦TIFR上的OCF1A置位,CPU即开始执行T/C1输出比较A匹配中断服务程序。

TICIE1:

{timerinputcatchinterruptenable}T/C1输入捕捉中断使能

当该位被设为"1”,且状态寄存器中的I位被设为"1”时,T/C1的输入捕捉中断使能。

一旦TIFR的ICF1置位,CPU即开始执行T/C1输入捕捉中断服务程序。

TOIE2:

{timeroverflowinterruptenable}T/C2溢出中断使能

当TOIE2和状态寄存器的全局中断使能位I都为”1”时,T/C2的溢出中断使能。

当T/C2发生溢出,即TIFR中的TOV2位置位时,中断服务程序得以执行。

OCIE2:

{outputcompareinterruptenable}T/C2输出比较匹配中断使能

当OCIE2和状态寄存器的全局中断使能位I都为”1”时,T/C2的输出比较匹配中断使能。

当T/C2的比较匹配发生,即TIFR中的OCF2置位时,中断服务程序得以执行。

6.T/C中断标志寄存器TIFR

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

OCF2

TOV2

ICF1

OCF1A

OCF1B

TOV1

OCF0

TOV0

OCF0:

{ocf缩写:

outputcompareflag}输出比较标志0

当T/C0与OCR0(输出比较寄存器0)的值匹配时,OCF0置位。

此位在中断服务程序里硬件清零,也可以对其写1来清零。

当SREG中的位I、OCIE0(T/C0比较匹配中断使能)和OCF0都置位时,中断服务程序得到执行。

TOV0:

{tov缩写:

timeroverflow}T/C0溢出标志

当T/C0溢出时,TOV0置位。

执行相应的中断服务程序时此位硬件清零。

此外,TOV0也可以通过写1来清零。

当SREG中的位I、TOIE0(T/C0溢出中断使能)和TOV0都置位时,中断服务程序得到执行。

在相位修正PWM模式中,当T/C0在0x00改变记数方向时,TOV0置位。

TOV1:

{tov缩写:

timeroverflow}T/C1溢出标志

该位的设置与T/C1的工作方式有关。

工作于普通模式和CTC模式时,T/C1溢出时TOV1置位。

对工作在其它模式下的TOV1标志位置位

OCF1B:

{ocf缩写:

outputcompareflag}T/C1输出比较B匹配标志位

当TCNT1与OCR1B匹配成功时,该位被设为"1”。

强制输出比较(FOC1B)不会置位OCF1B。

执行强制输出比较匹配B中断服务程序时OCF1B自动清零。

也可以对其写入逻辑"1”来清除该标志位。

OCF1A:

{ocf缩写:

outputcompareflag}T/C1输出比较A匹配标志位

当TCNT1与OCR1A匹配成功时,该位被设为"1”。

强制输出比较(FOC1A)不会置位OCF1A。

执行强制输出比较匹配A中断服务程序时OCF1A自动清零。

也可以对其写入逻辑"1”来清除该标志位。

ICF1:

{icf缩写:

inputcatchflag}T/C1输入捕捉标志位

外部引脚ICP1出现捕捉事件时ICF1置位。

此外,当ICR1作为计数器的TOP值时,一旦计数器值达到TOP,ICF1也置位。

执行输入捕捉中断服务程序时ICF1自动清零。

也可以对其写入逻辑"1”来清除该标志位。

OCF2:

{ocf缩写:

outputcompareflag}输出比较标志2

当T/C0与OCR0(输出比较寄存器0)的值匹配时,OCF0置位。

此位在中断服务程序里硬件清零,也可以对其写1来清零。

当SREG中的位I、OCIE0(T/C0比较匹配中断使能)和OCF0都置位时,中断服务程序得到执行。

TOV2:

{tov缩写:

timeroverflow}T/C2溢出标志

当T/C2溢出时,TOV2置位。

执行相应的中断服务程序时此位硬件清零。

此外,TOV2

也可以通过写1来清零。

当SREG中的位I、TOIE2(T/C2溢出中断使能)和TOV2都置位时,中断服务程序得到执行。

在相位修正PWM模式中,当T/C2在0x00改变记数方

向时,TOV2置位。

四.定时器寄存器

Atmega16有2个8位定时器和一个16位定时器。

1.定时器0

(1)T/C控制寄存器TCCR0

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

FOC0

WGM00

COM01

COM00

WGM01

CS02

CS01

CS00

FOC0:

{fco缩写:

forceoutputcompare}

强制输出比较位

FOC0仅在WGM00指明非PWM模式时才有效。

但是,为了保证与未来器件的兼容性,在使用PWM时,写TCCR0要对其清零。

对其写1后,波形发生器将立即进行比较操作。

比较匹配输出引脚OC0将按照COM01:

0的设置输出相应的电平。

要注意FOC0类似一个锁存信号,真正对强制输出比较起作用的是COM01:

0的设置。

FOC0不会引发任何中断,也不会在利用OCR0作为TOP的CTC模式下对定时器进行清零的操作。

读FOC0的返回值永远为0。

WGM01:

{wgm缩写:

wavegeneratemode}波形产生方式

这几位控制计数器的计数序列,计数器的最大值TOP,以及产生何种波形。

T/C支持的模式有:

普通模式,比较匹配发生时清除计数器模式(CTC),以及两种PWM模

式。

波形产生模式的位定义

模式

WGM01

WGM00

T/C的工作模式

TOP

OCR0的更新时间

TOV0的置位时刻

0

0

0

普通

0xFF

立即更新

MAX

1

0

1

相位修正PWM

0xFF

TOP

BOTTOM

2

1

0

CTC

OCR0

立即更新

MAX

3

1

1

快速PWM

0xFF

TOP

MAX

COM01{com缩写:

compareoutputmode}:

0:

比较匹配输出模式

这些位决定了比较匹配发生时输出引脚OC0的电平。

如果COM01:

0中的一位或全部都置位,OC0以比较匹配输出的方式进行工作。

同时其方向控制位要设置为1

当OC0连接到物理引脚上时,COM01:

0的功能依赖于WGM01:

0的设置。

下表给出了当WGM01:

0设置为普通模式或CTC模式时COM01:

0的功能。

比较输出模式,非PWM模式

COM01

COM00

说明

0

0

正常的端口操作,不与OC0相连接

0

1

比较匹配发生时OC0取反

1

0

比较匹配发生时OC0清零

1

1

比较匹配发生时OC0置位

比较输出模式,快速PWM模式

COM01

COM00

说明

0

0

正常的端口操作,不与OC0相连接

0

1

保留

1

0

比较匹配发生时OC0A清零,计数到TOP时OC0置位

1

1

比较匹配发生时OC0A置位,计数到TOP时OC0清零

注意:

一个特殊情况是OCR0等于TOP,且COM01置位。

此时比较匹配将被忽略,而计数到TOP

时OC0的动作继续有效。

比较输出模式,相位修正PWM模式

COM01

COM00

说明

0

0

正常的端口操作,不与OC0相连接

0

1

保留

1

0

在升序计数时发生比较匹配将清零OC0,降序计数时发生比较匹配将置位OC0

1

1

在升序计数时发生比较匹配将置位OC0,降序计数时发生比较匹配将清零OC0

注意:

一个特殊情况是OCR0等于TOP,且COM01置位。

此时比较匹配将被忽略,而计数到TOP时OC0的动作继续有效。

CS02:

0:

时钟选择{cs缩写:

clockcheck}

用于选择T/C的时钟源。

CS02

CS01

CS00

说明

0

0

0

无时钟,T/C不工作

12

0

0

1

clkI/O/1(没有预分频)

0

1

0

clkI/O/8(来自预分频器)

0

1

1

clkI/O/64(来自预分频器)

1

0

0

clkI/O/256(来自预分频器)

1

0

1

clkI/O/1024(来自预分频器)

1

1

0

时钟由T0引脚输入,下降沿触发

1

1

1

时钟由T0引脚输入,上升沿触发

如果T/C0使用外部时钟,即使T0被配置为输出,其上的电平变化仍然会驱动记数器。

利用这一特性可通过软件控制记数。

(2)T/C寄存器TCNT0{tcnt缩写:

timercounter}

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

TCNT0[7:

0]

通过T/C寄存器可以直接对计数器的8位数据进行读写访问。

对TCNT0寄存器的写访问将在下一个时钟阻止比较匹配。

在计数器运行的过程中修改TCNT0的数值有可能丢失一次TCNT0和OCR0的比较匹配。

(3)输出比较寄存器OCR0{ocr缩写:

outputcompareregister}

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

OCR0[7:

0]

输出比较寄存器包含一个8位的数据,不间断地与计数器数值TCNT0进行比较。

匹配事件可以用来产生输出比较中断,或者用来在OC0引脚上产生波形。

2.定时器1

(1)T/C1控制寄存器A(TCCR1A){tccr缩写:

timercountercontrolregister}

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

COM1A1

COM1A0

COM1B1

COM1B0

FOC1A

FOC1B

WG

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1