资源描述
MCU控制寄存器—MCUCR
Bit 1 – IVSEL:中断向量选取
IVSEL为"0“时,中断向量位于Flash存储器起始地址;IVSEL为"1“时,中断向量转移到
Boot 区起始地址。实际 Boot 区起始地址由熔丝位 BOOTSZ 拟定。 为了防止无意识地变化中断向量表,修改 IVSEL 时需要遵循如下过程:
1. 置位中断向量修改使能位 IVCE
2. 在紧接 4 个时钟周期里将需要数据写入 IVSEL,同步对 IVCE 写 ”0”执行上述序列时中断自动被禁止。其实,在置位 IVCE 时中断就被禁止了,并始终保持到写 IVSEL 操作之后下一条语句。如果没有 IVSEL 写操作,则中断在置位 IVCE 之后4个时钟周期保持禁止。需要注意是,虽然中断被自动禁止,但状态寄存器位I并不会因而而受到影响。
Note:若中断向量位于Boot Loader区, 且Boot锁定位BLB02被编程, 则执行应用区程序时中断被禁止;若中断向量位于应用区,且 Boot锁定位 BLB12 被编程, 则执行 Boot Loader区程序时中断被禁止。关于Boot锁定位细节请参见P241”Boot Loader 支持 RWW自编程, ATmega88 与 ATmega168” 。
该位在 ATmega48 中无效。
• 位 0 – IVCE:中断向量修改使能
变化 IVSEL 时 IVCE 必要置位。在 IVCE 写入 4 个时钟周期或 IVSEL 写操作之后,IVC被硬件清零。如前面所述,置位 IVCE 将禁止中断。代码如下:
void Move_interrupts(void)
{
/* 使能中断向量修改 */
MCUCR = (1<<IVCE); /* 将中断向量转移到 boot区 */
MCUCR = (1<<IVSEL);
}
• 位 7 – I:全局中断使能
Sei();全局中断使能,cli();对I清零。
• 位 6 – T:位拷贝存储
位拷贝指令 BLD 和 BST 运用 T 作为目或源地址。BST 把寄存器某一位拷贝到 T,而BLD 把 T 拷贝到寄存器某一位。
• 位 5 – H:半进位标志
半进位标志 H 表达算术操作发生了半进位。此标志对于 BCD 运算非常有用。详见 “ 指令集 ” 阐明。
• 位 4 – S:符号位, S = N ⊕ V
S 为负数标志 N 与 2 补码溢出标志 V 异或。详见指令集阐明。
• 位 3 – V:2 补码溢出标志
支持 2 补码运算。详见指令集阐明。
• 位 2 – N:负数标志
表白算术或逻辑操作成果为负。详见指令集阐明。
• 位 1 – Z:零标志
表白算术或逻辑操作成果为零。详见指令集阐明。
• 位 0 – C:进位标志
表白算术或逻辑操作发生了进位。详见 指令集阐明。
_SEI();/* 置位全局中断使能标志 */
_SLEEP();/* 进入休眠模式,等待中断发生 */
/* 注意 :在执行任何被挂起中断之前MCU将一方面进入休眠模式 */
振荡器标定寄存器—OSCCAL
休眠模式控制寄存器—SMCR
• 位 0 – SE:休眠使能
Smcr|=(1《se);
• 位 3 – WDRF:看门狗复位标志
看门狗复位发生时置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• 位 2 – BORF:掉电检测复位标志
掉电检测复位发生时置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• 位 1 – EXTRF:外部复位标志
外部复位发生时置位。上电复位将使其清零,也可以通过写 ”0” 来清除。
• 位 0 – PORF:上电复位标志
上电复位发生时置位。只能通过写 ”0” 来清除。
为了使用这些复位标志来辨认复位条件,顾客应当尽早读取 MCUSR 数据,然后将其复
位。如果在其她复位发生之前将此寄存器复位,则后续复位源可以通过检查复位标志来识
别。
看门狗定期器控制寄存器—
WDTCSR• 位 7 – WDIF:看门狗超时中断标志
当看门狗定期器超时且定期器作为中断使用时,该位置位。执行相应中断解决程序时
WDIF 由硬件清零。也可通过对标志位写 "1” 对 WDIF 清零。当 SREG 寄存器中 I 位与
WDIE 也置位时, MCU 执行看门狗超时中断。
• 位 6 – WDIE:看门狗超时中断使能
WDIE置"1”时WDE被清零,状态寄存器中I位置位,看门狗超时中断使能。当看门狗定
时器浮现超时时执行相应中断程序。
如果 WDE置位,当超时浮现时, WDIE 由硬件自动清零。 这对使用中断时保证看门狗复
位安全性非常有效。在 WDIE 位被清零后,下一种超时将引起系统复位。为避免看门狗
复位,在每次中断后必要对 WDIE置位。•Bit 4 – WDCE:看门狗修改使能
清零 WDE时必要置位 WDCE,否则不能禁止看门狗。一旦置位,硬件将在紧接 4 个时
钟周期之后将其清零。请参照关于 WDE 阐明来禁止看门狗。修改预分频器也必要置位
WDCE,如 P47“变化看门狗定期器配备时间序列 ” 所示。
• 位 3 – WDE:使能看门狗
WDE为"1“时,看门狗使能,否则看门狗将被禁止。只有在WDCE为"1“时WDE才干清零。
如下为关闭看门狗环节:
1. 在同一种指令内对 WDCE和 WDE 写 "1“,虽然 WDE 已经为 "1“。
2. 在紧接4 个时钟周期之内对 WDE写 "0”。这会禁用看门狗。
工作于安全级别 2 时,虽然使用了上述算法,也无法禁止看门狗定期器。参见 P47“ 改
变看门狗定期器配备时间序列 ” 所示。
工作于安全级别 1 时, WDE 被 MCUSR WDRF 功能所替代 ,请参见 P41”MCU 状态
寄存器 – MCUSR” 中关于 WDRF 阐明。这意味着当 WDRF 置位时 WDE 同步置位。
为清零 WDE,在使用上述过程禁用看门狗之前必要清零 WDRF。这一特性保证在浮现故
障时有多重复位,且在故障解决后可以安全地启动。
Note:如果在应用中不需要使用看门狗定期器,则在器件初始化时应运营看门狗禁用程序。如果
看门狗被意外使能,如程序跑飞或浮现 BOD,器件将会复位,且在结束复位时 WDRF 标
志位置位。这将自动激活看门狗,引起新看门狗复位。为避免浮现这种状况,在初始化
过程中应用程序应将 WDRF 标志位与 WDE控制位清零 。
void WDT_off(void)
{
/*MCUSR 中 WDRF清零*/
MCUSR = 0x00
/* 置位WDCE 与 WDE */
WDTCSR = (1<<WDCE) | (1<<WDE);
/* 关闭WDT */
WDTCSR = 0x00;
}
unsigned char i;
...
/* 定义上拉电阻和设立高电平输出*/
/* 为端口引脚定义方向 */
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
/* 为了同步插入 nop指令 */
_NOP();
/* 读取端口引脚 */
i = PINB;
...• 位 4 – PUD:禁用上拉电阻
PUD 置位时,虽然寄存器 DDxn 和 PORTxn 配备为使能上拉电阻 ({DDxn,PORTxn} =
0b01), I/O 端口上拉电阻也被禁止。请参见 P60”配备引脚 ” 。
端口B第二功引脚配备如下:
•XTAL2/TOSC2/PCINT7 – 端口 B,位 7
XTAL2:芯片时钟振荡器引脚 2。作为晶振或低频晶振时钟引脚。作为时钟引脚时不能
作为 I/O 引脚。
TOSC2:定期器振荡器引脚 2。只有选取了内部标定 RC 振荡器作为系统时钟源,并且
设立了寄存器 ASSR AS2 位以容许使用异步时钟定期器时才可使用。当ASSR 寄存器
AS2 位置位且 EXCLK 位清零,从而使能了定期器 / 计数器 2 异步时钟功能时,PB7
与端口引脚脱离,作为振荡放大器反向输出端。在该模式下,时钟晶体连接到该引脚,
且不能作为 I/O 引脚。
PCINT7:引脚电平变化中断源 7。 PB7 可以作为外部中断源。
如果 PB7 作为时钟引脚使用, DDB7、PORTB7 与 PINB7读返回值为 0。•XTAL1/TOSC1/PCINT6 – 端口 B,位 6
XTAL1 :芯片时钟振荡器引脚 1。可用于除内部标定 RC 振荡器外所有时钟源。作为时
钟引脚时不能作为 I/O 引脚。
TOSC1:定期器振荡器引脚 1。只有选取了内部标定 RC 振荡器作为系统时钟源,并且
设立了寄存器 ASSR AS2 位以容许使用异步时钟定期器时才可使用。当ASSR 寄存器
AS2 位置位,从而使能了定期器 / 计数器 2 异步时钟功能时,PB6 与端口引脚脱离,
作为振荡放大器反向输入端。在该模式下,时钟晶体连接到该引脚,且不能作为 I/O 引
脚。
PCINT6 :引脚电平变化中断源 6。 PB6 可以作为外部中断源。
如果 PB6 作为时钟引脚使用, DDB6、PORTB6 与 PINB6 均读为 "0”。•SCK/PCINT5 – 端口 B,位 5
SCK :用于使用 SPI 串行总线接口。当 SPI 使能且为从机时,无论 DDB5 为什么种设立,该
引脚被强置为输入。当使能 SPI 且为主机时,该引脚数据方向由 DDB5 来控制。虽然
该位被 SPI 强制为输入,但内部上拉电阻依然由 PORTB5 来控制。
PCINT5 :引脚电平变化中断源 5。 PB5 可以作为外部中断源。
•MISO/PCINT4 – 端口 B,位 4
MISO :SPI 总线接口主机数据输入 / 从机数据输出端。在 SPI 使能,且工作于 SPI 主机
模式时,无论 DDB4 为什么值, PB4 被设立为输入;为 SPI 从机模式时,该引脚数据方
向由DDB4控制。当该引脚被SPI强制为输入时,内部上拉电阻依然由PORTB4来控制。
PCINT4 :引脚电平变化中断源 4。 PB4 可以作为外部中断源。•MOSI/OC2/PCINT3 – 端口 B,位 3
MOSI :SPI 总线接口主机数据输出 / 从机数据输入端。在 SPI 使能,且工作于从机模式
时,无论 DDB3为什么值, PB3 被设立为输入;为 SPI 主机模式时,该引脚数据方向由
DDB3 控制。当该引脚被 SPI 强制为输入时,内部上拉电阻依然由 PORTB3 来控制。
OC2,输出比较匹配输出。PB3 引脚可作为定期器 / 计数器 2 比较匹配外部输出口。此
时,PB3 引脚必要设立为输出 (DDB3=1) 。在 PWM 应用中,OC2 引脚还作为 PWM 定
时器模块输出引脚。
PCINT3 :引脚电平变化中断源 3。 PB3 可以作为外部中断源。
•SS/OC1B/PCINT2 – 端口 B,位 2
SS :从机选取输入。在 SPI 使能,且工作于从机模式时,无论 DDB2 为什么值,PB2 脚被设
置为输入。当 PB2 被外部拉低时,则 SPI 功能被激活。当使能 SPI,且为主机模式时该
引脚数据方向由 DDB2 控制。当该引脚被 SPI 强制为输入时,内部上拉电阻依然由
PORTB2 来控制。
OC1B,输出比较匹配输出。PB2引脚可作为定期器/计数器1比较匹配B外部输出口。
此时,PB2 引脚必要设立为输出 (DDB2=1) 。在 PWM 应用中,OC1B 引脚还作为 PWM
定期器模块输出引脚。PCINT2:引脚电平变化中断源 2。 PB2 可以作为外部中断源。
•OC1A/PCINT1 –端口 B,位 1
OC1A,输出比较匹配输出。PB1引脚可作为定期器/计数器1比较匹配A外部外部输出
口。此时, PB1 引脚必要设立为输出 (DDB1=1) 。在 PWM 应用中, OC1A 引脚还作为
PWM 定期器模块输出引脚。PCINT1:引脚电平变化中断源 1。 PB1 可以作为外部中断源。
•ICP1/CLKO/PCINT0 – 端口 B,位 0
ICP1,输入捕获引脚:PB0 引脚可以作为定期器 / 计数器 1 输入捕获功能引脚。
CLKO,分频之后系统时钟:分频之后系统时钟可以通过PB0引脚输出。如果CKOUT
熔丝位编程,无论 PORTB0 与 DDB0 为什么值,分频之后系统时钟都将从此引脚输出。
复位时时钟信号照样从此引脚输出。
PCINT0,引脚电平变化中断源 0 :PB0 可以作为外部中断源。
Table35 和Table36将端口 B第二功能与P63Figure 27 重载信号关联在了一起。 SPI
MSTR INPUT 和SPI SLAVE OUTPUT 构成了MISO信号,而MOSI可以分解为SPI MSTR
OUTPUT 和 SPI SLAVE INPUT。
端口C第二功•RESET/PCINT14 –端口 C,位 6
RESET,复位引脚:熔丝位RSTDISBL被编程时,该引脚作为普通I/O引脚使用,此时,
芯片内部上电复位与BOD复位电路将作为系统复位源。当RSTDISBL熔丝位被清零
时,内部复位电路将连接到该引脚,此时引脚不作为 I/O 使用。
如果 PC6 工作为复位引脚, DDC6、PORTC6与 PINC6 读返回值为 0。
PCINT14 :引脚电平变化中断源 14。 PC6 可作为外部中断源。
•SCL/ADC5/PCINT13 – 端口 C,位 5
SCL,两线串行总线时钟线:当 TWCR 寄存器中 TWEN 位被设为 "1”,使能 TWI 接口
时, PC5 引脚将与 I/O 端口脱离,成为 TWI 总线接口串行时钟线。在该模式下,有一
个尖峰滤波器连接到该引脚,可以抑制输入信号中不大于 50 ns 毛刺,同步引脚由具备上
升率限制开漏驱动器驱动。
PC5 也可作为 ADC 输入通道 5。注意, ADC 输入通道 5 由数字电源供电。
PCINT13:引脚电平变化中断源 13。 PC5 可作为外部中断源。
•SDA/ADC4/PCINT12 – 端口 C,位 4
SDA,两线串行总线数据线:当 TWCR寄存器中 TWEN位被设为1,使能TWI接口时,
PC5引脚将与I/O端口脱离,成为TWI总线接口串行数据线。在该模式下,有一种尖峰滤
波器连接到该引脚,可以抑制输入信号中不大于 50 ns 毛刺,同步引脚将由具备上升率限
制开漏驱动器驱动。
PC4 也可作为 ADC 输入通道 4。注意, ADC 输入通道 4 由数字电源供电。
PCINT12:引脚电平变化中断源 12。 PC4 可作为外部中断源。
•ADC3/PCINT11 – 端口 C,位 3
PC3 也可作为 ADC 输入通道 3。注意, ADC 输入通道 3 由模仿电源供电。
PCINT11:引脚电平变化中断源 11。 PC3 可作为外部中断源。
•ADC2/PCINT10 – 端口 C,位 2
PC2 也可作为 ADC 输入通道 2。注意, ADC 输入通道 2 由模仿电源供电。
PCINT10:引脚电平变化中断源 10。 PC2 可作为外部中断源。
•ADC1/PCINT9 – 端口 C,位 1
PC1 也可作为 ADC 输入通道 1。注意, ADC 输入通道 1 由模仿电源供电。
PCINT9:引脚电平变化中断源 9。 PC1 可作为外部中断源。
•ADC0/PCINT8 – 端口 C,位 0
PC0 也可作为 ADC 输入通道 0。注意, ADC 输入通道 0 由模仿电源供电。
PCINT8:引脚电平变化中断源 8。 PC0 可作为外部中断源。
端口D第二功端口引脚第二功能
PD7
AIN1 ( 模仿比较器负输入)
PCINT23 (引脚电平变化中断23)
PD6
AIN0 ( 模仿比较器负输入)
OC0A ( 定期器/计数器 0 输出比较匹配A输出 )
PCINT22 (引脚电平变化中断22)
PD5
T1 (定期器 /计数器 1 外部计数器输入)
OC0B ( 定期器/计数器 0 输出比较匹配B输出 )
PCINT21 (引脚电平变化中断21)
PD4
XCK (USART外部时钟输入/输出 )
T0 (定期器 /计数器 0外部计数器输入 )
PCINT20 (引脚电平变化中断20)
PD3
INT1 (外部中断 1 输入)
OC2B ( 定期器/计数器 2 输出比较匹配B输出 )
PCINT19 (引脚电平变化中断19)
•AIN1/OC2B/PCINT23 – 端口 D,位 7
AIN1,模仿比较器负输入:将 PD7 设立为输入,且关闭内部上拉电阻,以避免数字端口功
能影响模仿比较器性能。
PCINT23:引脚电平变化中断源 23。 PD7 可作为外部中断源。
•AIN0/OC0A/PCINT22 – 端口 D,位 6
AIN0,模仿比较器正输入:将 PD6 设立为输入,且关闭内部上拉电阻,以避免数字端口功
能影响模仿比较器性能。
OC0A,输出比较匹配输出:PD6引脚可作为定期器/计数器0比较匹配A外部输出口。此
时, PD6 引脚必要设立为输出 (DDD6=1) 。在 PWM 应用中, OC0A 引脚还作为 PWM
定期器模块输出引脚。
PCINT22:引脚电平变化中断源 22。 PD6 可作为外部中断源。
•T1/OC0B/PCINT21 – 端口 D,位 5
T1,定期器 / 计数器 1 计数器源。
OC0B,输出比较匹配输出:PD5引脚可作为定期器/计数器0比较匹配B外部输出口。此
时, PD5 引脚必要设立为输出 (DDD5=1) 。在 PWM 应用中, OC0B 引脚还作为 PWM
定期器模块输出引脚。
PCINT21:引脚电平变化中断源 21。 PD5 可作为外部中断源。
•XCK/T0/PCINT20 – 端口 D,位 4
XCK, USART 外部时钟。
T0,定期器 / 计数器 0 计数器源。
PCINT20:引脚电平变化中断源 20。 PD4 可作为外部中断源。
•INT1/OC2B/PCINT19 – 端口 D,位 3
INT1,外部中断源 1:PD3 引脚可作为外部中断源。
OC2B,输出比较匹配输出:PD3引脚可作为定期器/计数器0比较匹配B外部输出口。此
时, PD3 引脚必要设立为输出 (DDD3=1) 。在 PWM 应用中, OC2B 引脚还作为 PWM
定期器模块输出引脚。
PCINT19:引脚电平变化中断源 19。 PD3 可作为外部中断源。
•INT0/PCINT18 – 端口 D,位 2
INT0,外部中断源 0:PD2 引脚可作为外部中断源。
PCINT18:引脚电平变化中断源 18。 PD2 可作为外部中断源。
•TXD/PCINT17 – 端口 D,位 1
TXD,传播数据 (USART数据输出引脚 ):当 USART 传播器使能,无论 DDD1 为什么值,
该引脚被配备为输出口。
PCINT17:引脚电平变化中断源 17。 PD1 可作为外部中断源。
•RXD/PCINT16 – 端口 D,位 0
RXD,接受数据( USART数据输入引脚):当USART 接受器使能,无论DDD0为什么值,
该引脚被配备为输入口,此时引脚内部上拉功能依然由 PORTD0 位控制。
PCINT16:引脚电平变化中断源 16。 PD0 可作为外部中断源。
Table41 和 Table42 将端口 D 第二功能与 P63Figure 27 重载信号关联在了一起。
外部中断控制寄存器A—EICRA• 位 3,2 – ISC11,ISC10:中断触发方式控制 1 位 1 与位 0
外部中断 1 由引脚 INT1 激发,如果 SREG 寄存器 I 标志位和相应中断屏蔽位置位
话。触发方式如 Table43 所示。在检测边沿前 MCU 一方面采样 INT1 引脚上电平。如果
选取了边沿触发方式或电平变化触发方式,那么持续时间不不大于一种时钟周期脉冲将触
发中断,过短脉冲则不能保证触发中断。如果选取低电平触发方式,那么低电平必要保
持到当前指令执行完毕。外部中断屏蔽寄存器—EIMSK• 位 1 – INT1:外部中断祈求 1 使能
当 INT1 为 ”1”,并且状态寄存器 SREG I 标志置位,相应外部引脚中断就使能了。外
部中断控制寄存器– EICRA中断触发方式控制位(ISC11与ISC10)决定中断是由INT1
上升沿、下降沿,还是电平触发。使能之后,虽然引脚 INT1 被配备为输出,只要引脚
电平发生了相应变化,中断就会产生。相应中断向量为 INT1 中断向量。
• 位 0 – INT0:外部中断祈求 0 使能
当 INT0 为 ”1”,并且状态寄存器 SREG I 标志置位,相应外部引脚中断就使能了。外
部中断控制寄存器– EICRA中断触发方式控制位(ISC11与ISC10)决定中断是由INT0
上升沿、下降沿,还是电平触发。使能之后,虽然引脚 INT0 被配备为输出,只要引脚
电平发生了相应变化,中断就会产生。相应中断向量为 INT0 中断向量。
外部中断标志寄存器—EIFR• 位 1 – INTF1:外部中断标志 1
INT1引脚电平发生跳变时触发中断祈求,并置位相应中断标志INTF1。如果SREG位
I以及EIMSK寄存器相应中断使能位INT1为”1”,MCU即跳转到相应中断向量。进入
中断服务程序之后该标志自动清零。此外,标志位也可以通过写入 ”1” 来清零。若 INT1
配备为电平触发,则 INTF1始终为零。
• 位 0 – INTF0:外部中断标志 0
INT0引脚电平发生跳变时触发中断祈求,并置位相应中断标志INTF0。如果SREG位
I以及EIMSK寄存器相应中断使能位INT0为”1”,MCU即跳转到相应中断向量。进入
中断服务程序之后该标志自动清零。此外,标志位也可以通过写入 ”1” 来清零。若 INT0
配备为电平触发,则 INTF0始终为零。
引脚电平变化中断控制寄存器—
PCICR• 位 2 - PCIE2:引脚电平变化中断使能 2
当 PCIE2 位与 SREG 位 I 置 "1”。 使能 PCINT23..16 引脚上任何电平变化都会引
起中断。相应引脚电平变化中断祈求由 PCI2中断向量执行。 PCINT23..16 引脚可以通
过 PCMSK2 寄存器单独使能。
• 位 1 - PCIE1:引脚电平变化中断使能 1
当 PCIE1 位与 SREG 位 I 置 "1”。 使能 PCINT14..8 引脚上任何电平变化都会引起
中断。相应引脚电平变化中断祈求由 PCI1 中断向量执行。 PCINT14..8 引脚可以通过
PCMSK1 寄存器单独使能。
• 位 0 - PCIE0:引脚电平变化中断使能 0
当 PCIE0 位与 SREG 位 I 置 "1”。 使能 PCINT7..0 引脚上任何电平变化都会引起
中断。相应引脚电平变化中断祈求由 PCI0 中断向量执行。 PCINT7..0 引脚可以通过
PCMSK0 寄存器单独使能。
引脚电平变化中断标志寄存器—
PCIFR• 位 2 - PCIF2:引脚电平变化中断标志 2
当引脚 PCINT23..16 上电平变化触发中断祈求时, PCIF2 置 "1”。如果 SREG 寄存器中
I 位 I 与 PCICR 寄存器中位 PCIE2 置 "1”,MCU 将会跳转到相应中断向量。当中
断程序执行时,该标志被清除。该位也可通过写逻辑 "1” 来 清除。
• 位 1 - PCIF1:引脚电平变化中断标志 1
当引脚 PCINT14..8 上电平变化触发中断祈求时,PCIF1 置 "1”。如果 SREG 寄存器中
I位I与PCICR寄存器中位PCIE1置"1”,MCU将会跳转到相应中断向量。当中断程序
执行时,该标志被清除。该位也可通过写逻辑 "1” 来 清除。
• 位 0 - PCIF0:引脚电平变化中断标志 0
当引脚 PCINT7..0 上电平变化触发中断祈求时,PCIF0置 "1”。如果 SREG 寄存器中 I
位 I 与 PCICR 寄存器中位 PCIE0 置 "1”,MCU 将会跳转到相应中断向量。当中断程
序执行时,该标志被清除。该位也可通过写逻辑 "1” 来 清除。
引脚电平变化屏蔽寄存器2—
PCMSK2• 位 7..0 – PCINT23..16:引脚电平变化使能屏蔽 23..16
引脚电平变化屏蔽寄存器1—PCMSK1
• 位 6..0 – PCINT14..8:引脚电平变化使能屏蔽14..8
PCINT14..8中每一位决定相应I/O引脚电平变化中断与否使能。如果PCINT14..8与
PCICR上 PCIE1 位置位,则相应引脚电平变化中断使能。如果 PCINT14..8清零,相
应引脚电平变化中断禁用。
引脚变化屏蔽寄存器0—
PCMSK0• 位 7..0 – PCINT7..0:引脚电平变化使能屏蔽 7..0
信号阐明 ( 内部信号 ):
count 使 TCNT0 加 1 或减 1
direction 选取加操作或减操作
clear 清除 TCNT0 ( 将所有位清零 )
clkTn T/C 时钟, clkT0
top 表达 TCNT0 已经达到了最大值
bottom 表达 TCNT0 已经达到了最小值 (0)
• 位 1:0 – WGM01:0:波形产生模式
T/C控制寄存器B—TCCR0B• 位 7 – FOC0A:强制输出比较 A
FOC0A 仅在 WGM 指明非 PWM 模式时才有效。读 FOC0A返回值永远为 0。
• 位 6 – FOC0B:强制输出比较 B
FOC0B 仅在 WGM 指明非 PWM 模式时才有效。读 FOC0B返回值永远为 0。
• 位 3 – WGM02:波形产生模式
请参见 P89”T/C 控制寄存器 A – TCCR0A” 。
• 位 2:0 – CS02:0:时钟选取T/C寄存器—TCNT0通过 T/C 寄存器可以直接对计数器 8 位数据进行读写访问。对 TCNT0 寄存器写访问
将在下一种时钟制止比较匹配。在计数器运营过程中修改 TCNT0 数值有也许丢失一
次 TCNT0 和 OCR0x 比较匹配。
输出比较寄存器A—OCR0A输出比较寄存器B—OCR0BT/C中断屏蔽寄存器—TIMSK0• 位 2 – OCIE0B:T/C 输出比较匹配 B 中断使能
当 OCIE0B 和状态寄存器全局中断使能位 I 都为 ”1” 时,T/C 输出比较匹配 B中断使
能。当 T/C 比较匹配发生,即 TIFR0中 OCF0B 置位时,中断服务程序得以执行。
• 位 1 – OCIE0A:T/C0 输出比较匹配A 中断使能
当 OCIE0A 和状态寄存器全局中断使能位 I 都为 ”1” 时, T/C0 输出比较匹配 A 中断
使能。当T/C0比较匹配发生,即TIFR0中OCF0A置位时,中断服务程序得以执行。
• 位 0 – TOIE0:T/C0 溢出中断使能
当 TOIE0 和状态寄存器全局中断使能位 I 都为 ”1” 时,T/C0 溢出中断使能。当 T/C0
发生溢出,即 TIFR0 中 TOV0 位置位时,中断服务程序得以执行。
T/C 0中断标志寄存器—TIFR0• 位 2 – OCF0B:T/C0输出比较 B 匹配标志
当 T/C 与 OCR0B( 输出比较寄存器 0B) 值匹配时, OCF0B 置位。此位在中断服务程
序里硬件清零,也可以对其写 1 来清零。当 SREG 中位 I、OCIE0B(T/C比较 B匹配中
断使能)和 OCF0B 都置位时,中断服务程序得到执行。
• 位 1 – OCF0A:T/C0输出比较 A 匹配标志
当 T/C0与 OCR0A( 输出比较寄存器 0A) 值匹配时,OCF0A 置位。此位在中断服务程
序里硬件清零,也可以对其写 1 来清零。当 SREG 中位 I、OCIE0A(T/C0 比较匹配中
断使能)和 OCF0A 都置位时,中断服务程序得到执行。
• 位 0 – TOV0:T/C0 溢出标志
T/C0 溢出时 TOV0 置位。执行相应中断服务程序时此位硬件清零。此外,TOV0也可以
通过写 1 来清零。当 SREG 中位 I、TOIE0(T/C0 溢出中断使能)和 TOV0 都置位时,
中断服务程序得到执行。
该标志位设立取决于 WGM02:0 位设定。请参见 Table52, P90” 波形产生模式位
定义 ” 。
通用T/C控制寄存器—GTCCR• 位 7 – TSM:T/C 同步模式
TSM置位激活T/C同步模式。只要TSM置位,PSR2 与PSR10数值将保持不变,使得相
关定期器/计数器预分频器处在持续复位状态。这样有关 T/C 将停止工作。顾客可以
为它们赋予相似数值而不会出当前配备一种定期器/计数器时另一种 T/C 在运营现
象。一旦TSM清零,PSR2 与PSR10位被硬件清零,有关定期器/计数器同步开始计数。• 位 0 – PSRSYNC:预分频器复位
PSRSYNC置位时T/C1与T/C0预分频器复位。操作完毕后这一位普通由硬件及时清零,
除非TSM置位。要注意是T/C1与T/C0共用一种预分频器,复位对两个计时器均有影响。
unsigned int i;
...
/* 设立TCNT1 为0x01FF */
TCNT1 = 0x1FF;
/* 将 TCNT1读入i */
i = TCNT1;
...下面例程给出了 TCNT1 寄存器基本读操作。对 OCR1A/B 或 ICR1 读操作可以使
用相似办法。
unsigned int TIM16_ReadTCNT1( void )
{
unsigned char sreg;
unsigned int i;
/* 保存全局中断标志 */
sreg = SREG;
/* 禁用中断 */
_CLI();
/* 将 TCNT1读入i */
i = TCNT1;
/* 恢复全局中断标志 */
SREG = sreg;
return i;
信号描述(内部信号):
Count TCNT1 加 1 或减 1
Direction 拟定是加操作还是减操作
Clear TCNT1 清零
clkT1 定期器/计数器时钟信号
TOP 表达 TCNT1 计数器到达最大值
BOTTOM 表达 TCNT1 计数器到达最小值(0)
16位定期器/计数器寄存
器阐明
T/C1控制寄存器B—TCCR1B• 位 7 – ICNC1:输入捕获噪声抑制器
• 置位ICNC1将使能输入捕获噪声抑制功能。此时外部引脚ICP1输入被滤波。其作用
是从 ICP1 引脚持续进行 4 次采样。如果 4 个采样值都相等,那么信号送入边沿检测
器。因而使能该功能使得输入捕获被延迟了 4 个时钟周期。
• 位 6 – ICES1:输入捕获触发沿选取
该位选取使用 ICP1 上哪个边沿触发捕获事件。 ICES 为 "0” 选取是下降沿触发输入
捕获; ICES1 为 "1” 选取是逻辑电平上升沿触发输入捕获。
按照 ICES1 设立捕获到一种事件后,计数器数值被复制到 ICR1 寄存器。捕获事件还
会置为 ICF1。如果此时中断使能,输入捕获事件即被触发。
当ICR1用作TOP值(见TCCR1A与TCCR1B寄存器中WGM13:0位描述)时,ICP1
与输入捕获功能脱开,从而输入捕获功能被禁用。T/C1控制寄存器C—TCCR1CT/C1—TCNT1H与TCNT1L输出比较寄存器1A—OCR1AH
与OCR1AL输出比较寄存器1B—OCR1BH
与OCR1BL输入捕获寄存器1—ICR1H 与
ICR1LT/C1中断屏蔽寄存器—TIMSK1• 位 5 – ICIE1:T/C1输入捕获中断使能
当该位被设为 "1”,且状态寄存器中 I 位被设为 "1” 时, T/C1 输入捕获中断使能。 T
一旦IFR1ICF1置位,CPU即开始执行T/C1输入捕获中断服务程序(见P48 “中断” )。• 位 2 – OCIE1B:T/C1 输出比较 B 匹配中断使能
当该位被设为 "1”,且状态寄存器中 I 位被设为 "1” 时,使能 T/C1 输出比较 B匹配中
断使能。一旦 TIFR1 上 OCF1B 置位, CPU 即开始执行 T/C1 输出比较 B 匹配中断服
务程序(见 P48 “ 中断 ” )。
• 位 1 – OCIE1A:T/C1输出比较 A 匹配中断使能
当该位被设为 "1”,且状态寄存器中 I 位被设为"1” 时,T/C1 输出比较 A 匹配中断使
能。一旦 TIFR1 上 OCF1A 置位, CPU 即开始执行 T/C1 输出比较 A 匹配中断服务程
序(见 P48 “ 中断 ” )。
• 位 0 – TOIE1:T/C1 溢出中断使能
当 TOIE1 与状态寄存器 I 位同步被设为 ”1” 时,T/C1溢出中断使能。一旦 TIFR1
TOV1置位, CPU即开始执行 T/C1 溢出中断服务程序(见P44“ 看门狗定期器 ” )。
T/C1中断标志寄存器—TIFR1
• 位 5 – ICF1:T/C1 输入捕获标志位
外部引脚 ICP1 浮现捕获事件时 ICF1置位。此外,当 ICR1 作为计数器 TOP值时,一
旦计数器值达到 TOP, ICF1 也置位。
执行输入捕获中断服务程序时ICF1自动清零。也可以对其写入逻辑"1”来清除该标志位。
• 位 2 – OCF1B:T/C1 输出比较 B 匹配标志位
当 TCNT1 与 OCR1B 匹配成功时,该位被设为 "1”。
强制输出比较 (FOC1B) 不会置位 OCF1B。
执行强制输出比较匹配 B 中断服务程序时 OCF1B 自动清零。也可以对其写入逻辑 "1” 来
清除该标志位。
• 位 1 – OCF1A:T/C1输出比较 A 匹配标志位
当 TCNT1 与 OCR1A 匹配成功时,该位被设为 "1”。
强制输出比较 (FOC1A) 不会置位 OCF1A。
执行强制输出比较匹配 A 中断服务程序时 OCF1A 自动清零。也可以对其写入逻辑 "1” 来
清除该标志位。
• 位 0 – TOV1:T/C1 溢出标志
该位设立与T/C1工作方式关于。工作于普通模式和CTC模式时,T/C1溢出时TOV1
置位。对工作在其他模式下 TOV1 标志位置位,见 P118Table58 。
执行溢出中断服务程序时 OCF1A 自动清零。也可以对其写入逻辑 "1” 来清除该标志位。
通用T/C控制寄存器—GTCCR
• 位 1 – PSR2:T/C2 预分频器复位
此位写 "1“ 时复位 T/C2预分频器。操作完毕后普通及时由硬件清零。如果 T/C2 工作于
异步模式,则这一位
展开阅读全文