您的位置 首页 技术

avr单片机外部中止0,1,2初始化装备及阐明

#includeiom16v.h>#includemacros.h>/*1.状态寄存器SREGbit7bit6bit5bit4bit3bit2bit1bit0ITHSVNZCI:全…

#include

#include
/*1.状况寄存器SREG

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

I T H S V N Z C

I:大局中止使能位。

在I置位后,独自的中止使能由不同的中止寄存器操控。若I为0,则制止中止。

MCU 操控寄存器- MCUCR MCU 操控寄存器包括中止触发操控位与通用 MCU 功用
Bit 7 6 5 4 3 2 1 0
SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
外部中止 1 由引脚 INT1 激起,假如 SREG 寄存器的 I 标志位和相应的中止屏蔽方位位的话。在检测边缘前 MCU 首要采样 INT1 引脚上的电平。假如挑选了边缘触发方法或电平改动触发方法,那么持续时间大于一个时钟周期的脉冲将触发中止,过短的脉冲则不能确保触发中止。假如挑选低电平触发方法,那么低电平有必要坚持到当时指令履行完结。
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 阐明

0 0 INT1 为低电平时发生中止请求

0 1 INT1 引脚上恣意的逻辑电平改动都将引发中止

1 0 INT1 的下降沿发生异步中止请求

1 1 INT1 的上升沿发生异步中止请求
外部中止 0 由引脚 INT0 激起,假如 SREG 寄存器的 I 标志位和相应的中止屏蔽方位位的话。在检测边缘前 MCU 首要采样 INT0 引脚上的电平。假如 挑选了边缘触发方法或电平改动触发方法,那么持续时间大于一个时钟周期的脉冲将触发中止,过短的脉冲则不能确保触发中止。假如挑选低电平触发方法,那么低电平有必要坚持到当时指令履行完结

ISC01 ISC00 阐明

0 0 INT0 为低电平时发生中止请求

0 1 INT0 引脚上恣意的逻辑电平改动都将引发中止

1 0 INT0 的下降沿发生异步中止请求

1 1 INT0 的上升沿发生异步中止请求
*/

/*MCU 操控与状况寄存器-MCUCSR-
Bit 7 6 5 4 3 2 1 0
JTD ISC2 – JTRF WDRF BORF EXTRF PORF

* Bit 6 – ISC2: 中止 2 触发方法操控

异步外中止 2 由外部引脚 INT2 激活,假如 SREG 寄存器的 I 标志和 GICR 寄存器相应的
中止屏蔽方位位的话。若 ISC2 写 0 , INT2 的下降沿激活中止。若 ISC2 写 1 , INT2 的上
升沿激活中止。 INT2 的边缘触发方法是异步的。只需 INT2 引脚上发生宽度大于50ns
(1s=1000ms,1 ms=1000μs,1μs=1000ns )
所示数据的脉冲就会引发中止。若挑选了低电平中止,低电平有必要坚持到当时指令完结,
然后才会发生中止。并且只需将引脚拉低,就会引发中止请求。改动 ISC2 时有可能发生
中止。因而主张首要在寄存器 GICR 里铲除相应的中止使能位 INT2 ,然后再改动ISC2。
最终,不要忘记在从头使能中止之前经过对 GIFR 寄存器的相应中止标志位 INTF2 写 1’
使其清零。

*/

/*
通用中止操控寄存器- GICR

Bit 7 6 5 4 3 2 1 0

INT1 INT0 INT2 – – – IVSEL IVCE

* Bit 7 – INT1: 使能外部中止请求 1

当 INT1 为 1’ ,并且状况寄存器SREG 的 I 标志置位,相应的外部引脚中止就使能了。
MCU通用操控寄存器– MCUCR的中止灵敏电平操控1位 1/0 (ISC11与ISC10)决议中止是
由上升沿、下降沿,仍是 INT1 电平触发的。只需使能,即便 INT1 引脚被装备为输出,
只需引脚电平发生了相应的改动,中止可将发生。

* Bit 6 – INT0: 使能外部中止请求 0

当 INT0 为 1’ ,并且状况寄存器SREG 的 I 标志置位,相应的外部引脚中止就使能了。
MCU通用操控寄存器– MCUCR的中止灵敏电平操控0位 1/0 (ISC01与ISC00)决议中止是
由上升沿、下降沿,仍是 INT0 电平触发的。只需使能,即便 INT0 引脚被装备为输出,
只需引脚电平发生了相应的改动,中止可将发生。

* Bit 5 – INT2: 使能外部中止请求 2

当 INT2 为 1’ ,并且状况寄存器SREG 的 I 标志置位,相应的外部引脚中止就使能了。
MCU通用操控寄存器– MCUCR 的中止灵敏电平操控2位 1/0 (ISC2与ISC2)决议中止是由
上升沿、下降沿,仍是 INT2 电平触发的。只需使能,即便 INT2 引脚被装备为输出,只
要引脚电平发生了相应的改动,中止可将发生

*/
/*
通用中止标志寄存器- GIFR

Bit 7 6 5 4 3 2 1 0

INTF1 INTF0 INTF2 – – – – –

* Bit 7 – INTF1: 外部中止标志 1

INT1引脚电平发生跳变时触发中止请求,并置位相应的中止标志INTF1。假如SREG 的位
I以及GICR寄存器相应的中止使能位INT1为”1” ,MCU即跳转到相应的中止向量。进入中
断服务程序之后该标志主动清零。此外,标志位也能够经过写入 ”0” 来清零。

* Bit 6 – INTF0: 外部中止标志 0

INT0引脚电平发生跳变时触发中止请求,并置位相应的中止标志INTF0。假如SREG 的位
I以及GICR寄存器相应的中止使能位INT0为”1” ,MCU即跳转到相应的中止向量。进入中
断服务程序之后该标志主动清零。此外,标志位也能够经过写入 ”0” 来清零。

* Bit 5 – INTF2: 外部中止标志 2

INT2引脚电平发生跳变时触发中止请求,并置位相应的中止标志INTF2。假如SREG 的位
I以及GICR寄存器相应的中止使能位INT2为”1” ,MCU即跳转到相应的中止向量。进入中
断服务程序之后该标志主动清零。此外,标志位也能够经过写入 ”0” 来清零。留意,当
INT2中止禁用进入某些休眠形式时,该引脚的输入缓冲将禁用。这会导致INTF2标志设置
信号的逻辑改动

*/
//外部中止0向量端口
#pragma interrupt_handler INTER_0:iv_INT0
//外部中止1向量端口
#pragma interrupt_handler INTER_1:iv_INT1
//外部中止2向量端口
#pragma interrupt_handler INTER_2:iv_INT2

void INTER_init_0(unsigned char a)//a取值0-3
{
switch(a)
{
case 0:MCUCR&=~(1<case 1:MCUCR&=~(1<case 2:MCUCR|=1<case 3:MCUCR|=1<default : MCUCR|=1<}
GICR|=(1<GIFR&=~(1<SREG|=0x80;//使能大局中止
}
void INTER_init_1(unsigned char a)//a取值0-3
{
switch(a)
{
case 0:MCUCR&=~(1<case 1:MCUCR&=~(1<case 2:MCUCR|=1<case 3:MCUCR|=(1<default : MCUCR|=1<}
GICR|=(1<GIFR&=~(1<SREG|=0x80;//使能大局中止

}
void INTER_init_2(unsigned char a)
{
if(a)
MCUCSR|=(1<else
MCUCSR&=~(1<

GICR|=(1<GIFR&=~(1<SREG|=0x80;//使能大局中止
}
void INTER_0(void)
{

//add your code here!

}
void INTER_1(void)
{

//add your code here!

}
void INTER_2(void)
{

//add your code here!

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/266643.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部