精atmega16寄存器笔记整理汇编.docx

上传人:b****7 文档编号:11159128 上传时间:2023-02-25 格式:DOCX 页数:57 大小:125.30KB
下载 相关 举报
精atmega16寄存器笔记整理汇编.docx_第1页
第1页 / 共57页
精atmega16寄存器笔记整理汇编.docx_第2页
第2页 / 共57页
精atmega16寄存器笔记整理汇编.docx_第3页
第3页 / 共57页
精atmega16寄存器笔记整理汇编.docx_第4页
第4页 / 共57页
精atmega16寄存器笔记整理汇编.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

精atmega16寄存器笔记整理汇编.docx

《精atmega16寄存器笔记整理汇编.docx》由会员分享,可在线阅读,更多相关《精atmega16寄存器笔记整理汇编.docx(57页珍藏版)》请在冰豆网上搜索。

精atmega16寄存器笔记整理汇编.docx

精atmega16寄存器笔记整理汇编

1、中断寄存器

中断

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

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:

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

ISC11

ISC10

INT1中断

0

0

低电平中断

0

1

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

1

0

下降沿中断

1

1

上升沿中断

ISC01~ISC00:

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

ISC01

ISC00

INT0中断

0

0

低电平中断

0

1

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

1

0

下降沿中断

1

1

上升沿中断

3.通用中断屏蔽寄存器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:

外部中断标志

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

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

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

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

INTF0:

外部中断标志

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

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

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

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

INTF2:

外部中断标志

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

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

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

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

 

<三>定时器/计数器

AVR的三个定时/计数器。

他们分别是T/C0、T/C1、T/C2,其中

T/C0和T/C2是8位定时/计数器,

T/C1是16位定时/计数器。

如T/C0工作模式:

1、普通模式

2、CTC模式

3、快速PWM模式和

4、相位修正PWM模式

这4种工作模式,每种模式分别对应相应的功能。

普通模式:

这是较为简单的模式,在此模式中,计数器不停的累加,直到计数器溢出(0xff)。

溢出之后的下一个指令周期里,计数器会回到最小值(0x00)开始累加,计数器标志位(TOV0)置位。

此时的TOV0不会自动清零,只有在总中断和T/C0中断开启,进入中断服务子函数时,TOV0才会自动清零。

CTC模式:

所谓CTC模式也就是输出比较模式。

在普通模式,计数器会一直累加到最大值256,而在输出比较模式(CTC),另一寄存器(OCR0)可以决定最大值的大小。

在达到OCR0设定值后,还能产生中断,触发改变相应管脚(PB3:

OC0)的逻辑电平。

利用这一特点,多用来产生需要的波形。

后面会编写一个方波产生的例子来说明。

由于CTC模式没有双缓冲功能,在计数器以无预分频器或很低的预分频器工作的时候将TOP 更改为接近BOTTOM的数值时要小心。

如果写入的OCR0数值小于当前TCNT0的数值,计数器将丢失一次比较匹配。

多小才要注意,要看代码的效率决定。

 

快速PWM模式:

PWM翻译过来就是"脉宽调制模式"。

此模式同样用于生成波形。

与输出比较模式区别的是:

在输出比较模式中,当TCNT0到达OCR0时,TCNT0清零,相应管脚逻辑电平改变,从而产生波形变化;在PWM模式中,TCNT0的值是从0X00到0XFF,管脚逻辑电平变化的地方是TCNT0的值与OCR0相等时,但此时并不对TCNT0进行清0操作。

相位修正PWM模式:

和"快速PWM模式"作用相似。

不同是,计数器从0X00到0XFF,然后从0XFF到0X00计数,产生对称的双向斜波。

 

1.定时器0以及定时器共同相关寄存器

(1)T/C控制寄存器TCCR0(主要作用:

确定工作模式)

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

FOC0

WGM00

COM01

COM00

WGM01

CS02

CS01

CS00

FOC0:

强制输出比较位

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

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

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

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

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

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

0的设置。

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

读FOC0的返回值永远为0。

WGM01WGM01波形产生模式

这几位控制计数器的计数序列,计数器的最大值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

COM01COM00比较匹配输出模式(位5和位4—COM:

比较匹配输出模式。

这决定了比较匹配发生时,输出管脚OC0的电平。

当然,管脚首先要配置为输出。

触发电平除了和下表的配置有关外,还和WGM确定的工作模式相关。

这些位决定了比较匹配发生时输出引脚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的动作继续有效。

CS00CS01CS02时钟选择(用于选择定时\计数器0工作的时钟源。

这也是AVR和51的不同之处,51的定时计数器只能用机器周期的12分频来工作,而AVR可以任意设置分频。

用于选择T/C的时钟源

CS02

CS01

CS00

说明

0

0

0

无时钟,T/C不工作

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

(T/C0计数寄存器—TCNT0.T/C0工作时,就是此8位寄存器的值在不断的加1变化。

可对其进行读写操作。

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

TCNT0[7:

0]

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

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

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

(3)输出比较寄存器OCR0

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

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

8位寄存器,不断与TCNT0进行比较操作,在产生输出比较中断,改变OC0上的逻辑电平时,都要用到此寄存器)

 

(4)T/C中断屏蔽寄存器TIMSK,

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

OCIE2

TOIE2

TICIE1

OCIE1A

OCIE1B

TOIE1

OCIE0

TOIE0

(5)T/C中断标志寄存器TIFR

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

OCF2

TOV2

ICF1

OCF1A

OCF1B

TOV1

OCF0

TOV0

TOIE0:

——T/C0溢出中断使能

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

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

OCIE0:

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

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

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

TOIE1:

——T/C1溢出中断使能

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

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

OCIE1B:

——T/C1输出比较B匹配中断使能

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

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

OCIE1A:

——输出比较A匹配中断使能

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

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

TICIE1:

——T/C1输入捕捉中断使能

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

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

 

TOIE2:

——T/C2溢出中断使能

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

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

OCIE2:

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

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

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

OCF0:

——输出比较标志0

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

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

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

 

TOV0:

——T/C0溢出标志

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

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

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

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

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

TOV1:

——T/C1溢出标志

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

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

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

OCF1B:

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

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

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

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

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

OCF1A:

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

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

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

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

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

ICF1:

——T/C1输入捕捉标志位

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

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

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

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

OCF2:

——输出比较标志2

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

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

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

TOV2:

——T/C2溢出标志

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

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

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

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

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

 

(6)特殊功能IO寄存器SFIOR

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

ADTS2

ADTS1

ADTS0

ACME

PUD

PSR2

PSR10

PSR10置位时T/C1,T/C0的预分频器复位,操作完后,这一位由硬件自动清零,该位写0无效,T/C1,T/C0共用同一预分频器,预分频器复位对两个定时器都有影响,该位总是读为0

PSR2当该位置1,T/C2预分频器复位。

操作完成后,该位被硬件清零。

该位写0无效。

若内部CPU时钟作为T/C2时钟,该位读为0。

当T/C2工作在异步模式时,直到预分频器复位该位保持为1。

 

2、定时器1

(1)T/C1控制寄存器A(TCCR1A)

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

COM1A1

COM1A0

COM1B1

COM1B0

FOC1A

FOC1B

WGM11

WGM10

COM1A1,COM1A0通道A的比较输出模式

COM1B1,COM1B0通道B的比较输出模式

COM1A1,COM1A0与COM1B1,COM1B0分别控制OC1A与OC1B状态。

如果COM1A1:

0(COM1B1:

0)的一位或两位被写入"1”,OC1A(OC1B)输出功能将取代I/O端口功能。

此时OC1A(OC1B)相应的输出引脚数据方向控制必须置位以使能输出驱动器。

OC1A(OC1B)与物理引脚相连时,COM1x1:

0的功能由WGM13:

0的设置决定

比较输出模式,非PWM

COM1A1/COM1B1

COM1A0/COM1B0

说明

0

0

普通端口操作,非OC1A/OC1B功能

0

1

比较匹配时OC1A/OC1B电平取反

1

0

比较匹配时清零OC1A/OC1B(输出低电平)

1

1

比较匹配时置位OC1A/OC1B(输出高电平)

比较输出模式,快速PWM

COM1A1/COM1B1

COM1A0/COM1B0

说明

0

0

普通端口操作,非OC1A/OC1B功能

0

1

WGM13:

0=15:

比较匹配时OC1A取反,OC1B不占用物理引脚。

WGM13:

0为其它值时为普通端口操作,非OC1A/OC1B功能

1

0

比较匹配时清零OC1A/OC1B,OC1A/OC1B在TOP时置位

1

1

比较匹配时置位OC1A/OC1B,OC1A/OC1B在TOP时清零

注意:

当OCR1A/OCR1B等于TOP且COM1A1/COM1B1置位时,比较匹配被忽略,OC1A/OC1B的置位/清零操作有效。

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

COM1A1/COM1B1

COM1A0/COM1B0

说明

0

0

普通端口操作,非OC1A/OC1B功能

0

1

WGM13:

0=9或14:

比较匹配时OC1A取反

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

当前位置:首页 > 经管营销 > 经济市场

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

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