atmega16寄存器笔记整理.docx
- 文档编号:16080141
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:58
- 大小:87.21KB
atmega16寄存器笔记整理.docx
《atmega16寄存器笔记整理.docx》由会员分享,可在线阅读,更多相关《atmega16寄存器笔记整理.docx(58页珍藏版)》请在冰点文库上搜索。
atmega16寄存器笔记整理
、中断寄存器
中断
是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。
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事件捕捉n
7
0x0c
TIMER1COMPA
定时器/计数器1比较匹配A
8
0x0e
TIMER1COMPB
定时器/计数器1比较匹配B
9
0x10
TIMER1OVF
定时器/计数器1溢出1
10
0x12
TIMER0OVF
定时器/计数器0溢出
11
0x14
SPI,STC
SPI串行传输结束
12
0x16
USART,RXC
USARTRx结束
13
0x18
USART,UDRE
USART数据寄存器空
14
0x1a
USART,TXC
USARTTx结束
15
0x1c
ADC
ADC转换结束
16
0x1e
EERDY
EEPRO就绪
17
0x20
ANACOMP
模拟比较器
18
0x22
TWI
两线串行接口
19
0x24
INT2
外部中断请求2”
20
0x26
TIMER0COMP
定时器/计数器0比较匹配
21
0x28
SPMRDY
保存程序存储器内谷就绪
<一>全局中断控制位
1、状态寄存器SREG
bit7
bit6
bit5
bit4
bit3
bit2
bitl
bit0
I
T
H
S
V
N
Z
C
I:
全局中断使能位。
在I置位后,单独的中断使能由不同的中断寄存器控制。
若I为0,则禁止中断。
<二>外部中断?
2.MCU控制寄存器MCUCR
bit7
bit6
bit5
bit4
bit3
bit2
bitl
bit0
SM2
pse
SM1:
SM0
ISC11
「ISC10
rISC01
iscoo:
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〜ISCOO:
外部中断INTO的中断检测方式
ISCO1
ISCOO
INTO中断
O
O
低电平中断
O
1
INT1引脚上任意的逻辑电平变化都将引发中断
1
O
:
下降沿中断
1
1
上升沿中断
3.通用中断屏蔽寄存器GICR
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bitO
INT1
rINTO
INT2n
-
-
-
IVSEL
IVCE
INT1:
使能外部中断请求1
INTO:
使能外部中断请求0
INT2:
使能外部中断请求2
4.通用中断标志寄存器GIFR
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bitO
INTF1
INTFO
INTF2
-
-
-
IVSEL
IVCE
INTF1:
外部中断标志
INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR
寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自
动清零。
此外,标志位也可以通过写入”1”来清零。
INTFO:
外部中断标志
。
如果SREG的位I以及GICR
进入中断服务程序之后该标志自
INTO引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTFO
寄存器相应的中断使能位INTO为”1”,MCU即跳转到相应的中断向量。
动清零。
此外,标志位也可以通过写入”1”来清零。
INTF2:
外部中断标志
INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。
如果SREG的位I以及GICR寄存器相应
的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。
进入中断服务程序之后该标志自动清零。
此外,标志位也可以通过写入”1”来清零。
<三>定时器/计数器
AVR的三个定时/计数器。
他们分别是T/CO、T/C1、T/C2,其中
T/CO和T/C2是8位定时/计数器,
T/C1是16位定时/计数器。
如T/C0工作模式:
1、普通模式
2、CTC模式
3、快速PWM模式和
4、相位修正PWM模式
这4种工作模式,每种模式分别对应相应的功能。
普通模式:
这是较为简单的模式,在此模式中,计数器不停的累加,直到计数器溢岀(Oxff)。
溢岀之后的
下一个指令周期里,计数器会回到最小值(0x00)开始累加,计数器标志位(TOV0)置位。
此
时的TOV0不会自动清零,只有在总中断和T/C0中断开启,进入中断服务子函数时,TOV0才
会自动清零。
CTC模式:
所谓CTC模式也就是输岀比较模式。
在普通模式,计数器会一直累加到最大值256,而在输岀
比较模式(CTC),另一寄存器(OCR0)可以决定最大值的大小。
在达到OCR0设定值后,还
能产生中断,触发改变相应管脚(PB3:
OC0)的逻辑电平。
利用这一特点,多用来产生需要的波
形。
后面会编写一个方波产生的例子来说明。
由于CTC模式没有双缓冲功能,在计数器以无预分频
器或很低的预分频器工作的时候将TOP更改为接近BOTTOM勺数值时要小心。
如果写入的OCR0数值小于当前TCNT0的数值,计数器将丢失一次比较匹配。
多小才要注意,要看代码的效率决定。
快速PWM模式:
PWM翻译过来就是”脉宽调制模式”。
此模式同样用于生成波形。
与输出比较模式区别的是:
在输出比较模式中,当TCNTO到达OCRO时,TCNTO清零,相应管脚逻辑电平改变,从而产生波形变化;在PWM模式中,TCNT0的值是从0X00到0XFF,管脚逻辑电平变化的地方是TCNT0的值与OCR0相等时,但此时并不对TCNT0进行清0操作。
相位修正PWM模式:
和"快速PWM模式"作用相似。
不同是,计数器从0X00到0XFF,然后从0XFF
到0X00计数,产生对称的双向斜波
1.定时器0以及定时器共同相关寄存器
⑴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后,波形发生器将立即进行比较操作。
比较匹配输出引脚OCO
照COM01:
0的设置输出相应的电平。
要注意FOC0类似一个锁存信号,真正对强制输出比较起作用的
是COM01:
0的设置。
FOCO不会引发任何中断,也不会在利用OCRO作为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中的一位或全部都置位,OCO以比较匹
1以使能输出驱动器。
设
注意:
一个特殊情况是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时OCO的动作继续有效。
CS00CS01CS02时钟选择(用于选择定时计数器0工作的时钟源。
这也是AVR和51的不同之处,
51的定时计数器只能用机器周期的12分频来工作,而AVR可以任意设置分频。
)
用于选择T/C的时钟源
CS02
CS01
CS00
说明
0
0
0
无时钟,T/C不工作
0
0
11
clkl/O/1(没有预分频)
0
1
0
clkl/O/8(来自预分频器)
0
1
1
clkI/O/64(来自预分频器)H
1
0
0
clkI/O/256(来自预分频器)
1
0
1
clkI/O/1024(来自预分频器)
1
1
0
时钟由T0引脚输入,下降沿触发n
1
1
1
时钟由T0引脚输入,上升沿触发
如果T/C0使用外部时钟,即使T0被配置为输出,其上的电平变化仍然会驱动记数器。
利用这一特性可通过软件控
制记数。
⑵T/C寄存器TCNT0
(T/C0计数寄存器一TCNT0.T/C0工作时,就是此8位寄存器的值在不断的加1变化。
可对其进行读写操作。
)
bit7
bit6
bit5
bit4
bit3
bit2
bit1bit0
TCNT0[7:
0]
通过T/C寄存器可以直接对计数器的8位数据进行读写访问。
对TCNT0寄存器的写访问将在下一个时钟阻
止比较匹配。
在计数器运行的过程中修改
TCNT0的数值有可能丢失一次TCNT0和OCR0的比较匹配
⑶输出比较寄存器OCRO
(输出比较寄存器包含一个8位的数据,不间断地与计数器数值TCNT0进行比较。
匹配事件可以用来产生输出比较中断,或者用来在OC0引脚上产生波形。
8位寄存器,不断与TCNT0进行比较操作,在产生输出比较中断,改变OC0上的逻辑电平时,都要用到此寄存器)
⑷T/C中断屏蔽寄存器TIMSK
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
OCIE2
TOIE2
TICIE1
OCIE1A
OCIE1B
TOIE1
OCIE0
TOIE0
⑸T/C中断标志寄存器TIFR
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
OCF2
PTOV2
ICF1J
OCF1A
OCF1B
PTOV1
「OCF0:
TOV0
TOIEO:
——T/CO溢出中断使能
(当TOIE0和状态寄存器的全局中断使能位I都为”1”时,T/C0的溢出中断使能。
当T/C0发生溢出,
即TIFR中的TOV0位置位时,中断服务程序得以执行)。
OCIEO:
T/C0输出比较匹配中断使能
(当OCIEO和状态寄存器的全局中断使能位I都为”1”时,T/C0的输出比较匹配中断使能。
当T/C0的
比较匹配发生,即TIFR中的OCFO置位时,中断服务程序得以执行。
)
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与OCRO(输出比较寄存器0)的值匹配时,OCFO置位。
此位在中断服务程序里硬件清零,也可以对其写1来清零。
当SREG中的位I、OCIEO(T/CO比较匹配中断使能)和OCFO都置位时,中
断服务程序得到执行。
)
TOVO:
——T/C0溢出标志
TOVO也可以通过
(当T/C0溢出时,TOVO置位。
执行相应的中断服务程序时此位硬件清零。
此外,
写1来清零。
当SREG中的位I、TOIEO(T/CO溢出中断使能)和TOVO都置位时,中断服务程序得到执行。
在相位修正PWM模式中,当T/C0在0x00改变记数方向时,TOVO置位。
)
T0V1:
——T/C1溢出标志
(该位的设置与T/C1的工作方式有关。
工作于普通模式和CTC模式时,T/C1溢出时T0V1置位。
对
工作在其它模式下的T0V1标志位置位)
0CF1B:
――T/C1输出比较B匹配标志位
(当TCNT1与0CR1B匹配成功时,该位被设为"1”。
强制输出比较(F0C1B)不会置位0CF1B。
执行强制输出比较匹配B中断服务程序时0CF1B自动清零。
也可以对其写入逻辑"1”来清除该标志位。
)
0CF1A:
――T/C1输出比较A匹配标志位
(当TCNT1与0CR1A匹配成功时,该位被设为"1”。
强制输出比较(F0C1A)不会置位0CF1A。
执行强制输出比较匹配A中断服务程序时0CF1A自动清零。
也可以对其写入逻辑"1”来清除该标志位。
)
ICF1:
――T/C1输入捕捉标志位
(外部引脚ICP1出现捕捉事件时ICF1置位。
此外,当ICR1作为计数器的T0P值时,一旦计数器值达到T0P,ICF1也置位。
执行输入捕捉中断服务程序时ICF1自动清零。
也可以对其写入逻辑"1”来
清除该标志位。
)
0CF2:
――输出比较标志2
(当T/C0与0CRO(输出比较寄存器0)的值匹配时,0CFO置位。
此位在中断服务程序里硬件清零,也可以对其写1来清零。
当SREG中的位I、0CIE0(T/C0比较匹配中断使能)和0CF0都置位时,中
断服务程序得到执行。
)
T0V2:
――T/C2溢出标志
(当T/C2溢出时,T0V2置位。
执行相应的中断服务程序时此位硬件清零。
此外,T0V2也可以通过
写1来清零。
当SREG中的位I、T0IE2(T/C2溢出中断使能)和T0V2都置位时,中断服务程序得到
执行。
在相位修正PWM模式中,当T/C2在0x00改变记数方向时,T0V2置位。
)
(6)特殊功能I0寄存器SFI0R
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
C0M1A1,COM1AO通道A的比较输出模式
C0M1B1,COM1BO通道B的比较输出模式
C0M1A1,COM1A0与C0M1B1,COM1B0分别控制0C1A与0C1B状态。
如果
C0M1A1:
0(C0M1B1:
0)的一位或两位被写入"1”,0C1AQC1B)输出功能将取代I/O端口功能。
此时
0C1A(0C1B)相应的输出引脚数据方向控制必须置位以使能输出驱动器。
0C1AQC1B)与物理引脚相连时,COM1x1:
0的功能由WGM13:
0的设置决定
比较输出模式,非PWM
COM1A1/COM1B1
C0M1A0/C0M1B0
说明
0
0
普通端口操作,非OC1A/OC1B功能
0
1
比较匹配时OC1A/OC1B电平取反
1
0
比较匹配时清零OC1A/OC1B(输出低电平)
1
1
比较匹配时置位OC1A/OC1B(输出高电平)
比较输出模式,快速PWM
COM1A1/COM1B1
C0M1A0/C0M1B0
说明
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时清零
注意:
当0CR1A/0CR1等于TO且COM1A1/COM1置位时,比较匹配被忽略,OC1A/OC1B勺置位/清零操作有效。
比较输出模式,相位修正及相频修正PWM模式
COM1A1/COM1B1
C0M1A0/C0M1B0
说明
0
0
普通端口操作,非OC1A/OC1B功能
0
1
WGM13:
0=9或14:
比较匹配时OC1A取反,
OC1B不占用物理引脚。
WGM13:
0为其它值时
为普通端口操作,非OC1A/OC1B功能
1
0
升序记数时比较匹配将清零OC1A/OC1B,降
序记数时比较匹配将置位OC1A/OC1B
1
1
升序记数时比较匹配将置位OC1A/OC1B,降序
记数时比较匹配将清零OC1A/OC1B
注意:
OCR1A/OCR1B等于TOP且COM1A1/COM1B置位是一个特殊情况
FOC1A:
诵道A强制输出比较
F0C1B:
通道B强制输出比较
F0C1A/F0C1B只有当WGM13:
0指定为非PWM模式时被激活。
为与未来器件兼容,工作在PWM模式下对TCCR1A写入时,这两位必须清零。
当F0C1A/F0C1B位置1,立即强制波形产生单元进行比较匹配。
COM1x1:
0的设置改变0C1A/0C1B的输出。
注意F0C1A/F0C1B位作为选通信号。
C0M1x1:
0位的值
决定强制比较的效果。
在CTC模式下使用0CR1A作为T0P值,F0C1A/F0C1B选通即不会产生中断也
不好清除定时器,F0C1A/F0C1B位总是读为0
WGM11,WGM11波形发生模式
这两位与位于TCCR1B寄存器的WGM13:
2相结合,用于控制计数器的计数序列一一计数器计数的上限值和确
定波形发生器的工作模式。
T/C支持的工作模式有:
普通模式(计数器),比较匹配时清零定时器(CTC)模式,及
三种脉宽调制(PWM)模式。
波形产生的位描述
模式
WGM1
3
WGM1
2
WGM1
1
WGM
10
定时器/计数器工作模
式
计数
上限值
TOP
OCR1x更
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- atmega16 寄存器 笔记 整理