avr寄存器详细资料补充.docx
- 文档编号:8975441
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:56
- 大小:52.38KB
avr寄存器详细资料补充.docx
《avr寄存器详细资料补充.docx》由会员分享,可在线阅读,更多相关《avr寄存器详细资料补充.docx(56页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- avr 寄存器 详细资料 补充