|
我对中断的理解一直不是很清楚!
我写了个中断的程序单独执行好像是没有问题,但在主程序中我希望中断后,继续执行其他的程序,但感觉上好像一直在执行中断程序,没有跳出来!
下面是我的大该程序:MCU: MEGA8 8MHZ
#include<avr/io.h>
#include<stdio.h>
#include<avr/interrupt.h>
#include<avr/wdt.h>
#include"avr/signal.h"
unsigned char ON_OFF; 屏幕开关参数
void int1_int(void) //外部中断1
{
cbi(DDRD,PD3); //int1输入脚
sbi(PORTD,PD3);
GICR=0x80; //int1中断使能
MCUCR=MCUCR|0x08; //下降沿中断触发
sei(); //全局终端使能
}
INTERRUPT(SIG_INTERRUPT1) //开关键中断程序
{
//ON_OFF是全局变量
if(ON_OFF==1)
{
ON_OFF=0;
PORTB&=0X04; //PB2连的LED灯亮
PORTC&=0X02;
}
else
{
ON_OFF=1; //PB1连的灯亮
PORTB&=0X02;
onoffflog=1;
}
}
void main (void)
{
unsigned char key;
int a;
DDRB|=0XC3;
PORTB|=0XC3;
DDRC|=0X04;
//PORTC|=0X04;
DDRD&=0X07;
PORTD|=0XF8;
realtempset=15;
initial();
int1_int();
timer0_int();
while(1)
{
if(ON_OFF==1) //通过中断改变全局变量ON_OFF的值
{
display(chardisplay);
wdt_reset();
key=key_press(); //按健操作子程序
PORTB&=0X00; //关闭PB2连接的LED
}
}
}
}
为了节省马老师的时间,我只贴了相关部分,按健子程序单独调试没有问题,
我把程序下载到MEGA8中,观察有中断后,PB2连的灯一直亮着,按动键盘后,案件子程序没有被执行!
我的理解是不是程序一直在执行中断程序没有跳出来?
该怎么跳出来?
谢谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|