wuzhengmin
发表于 前天 12:10
外部中断x:x=2-4触发只有下降沿,触发后它就会标记为这个INTxIF的一个标志位,如果说我们打开了EX2和EX3,优先级位最低,不能改中断优先级外部中断x:x=2-4INTxIFEXn
EA
wuzhengmin
发表于 前天 12:38
下面看外部中断1的例子:外部中断1:IT1IE1EX1EAIE1:外部中断1请求源(INTI/P3.3)标志。IE1=1,外部中断向CPU请求中断,当CPU响应该中断时由硬件清“0”IE1。
ITI:外部中断源1触发控制位。ITI-0,上升沿或下降沿均可触发外部中断1.ITI-1,外部中断1程控为下降沿触发方式。EXI:外部中断 1 中断允许位。0:禁止 INTI 中断1:允许 IN1 中断
打开手册看P771:
15.5.3INT1 中断(上升沿和下降沿),可同时支持上升沿和下降沿
设置还是3步:
IT1=1; //使能INT1 下降沿中断EX1=1;//使能INT1 中断
EA=1;//打开总中断
对应中断函数中断号是2
void INT1_Isr() interrupt 2{
}
wuzhengmin
发表于 前天 12:46
各个中断服务函数对应的中断号,见下图:
试验箱上默认端口是高电平,按下就是低电平!
wuzhengmin
发表于 前天 13:24
任务1:编写外部中断1的程序
void INT1_Init(void) //INT1中断(上升沿和下降沿)P33按下,0可同时支持上升沿和下降沿
{
IT1 = 1; //下降沿中断,0是上升沿和下降沿都可以
EX1 = 1; //打开中断允许
EA = 1; //打开总中断
}
void INT_ISR(void) interrupt 2//INT1中断(上升沿和下降沿)P33按下,可同时支持上升沿和下降沿
{
P04 = !P04;
P05 = !P05;
P06 = !P06;
P07 = !P07;
//P33按下,P01就取反
}当然,首先要在main.c里初始化:
INT1_Init();//外部中断1(P33按下)中断初始化 //外部中断1初始化
页:
7
8
9
10
11
12
13
14
15
16
[17]