MEGA8的INT1中断程序除了问题,帮助看看[已解决]

2019-03-24 20:53发布

仿真的时候开始就直接进入中断程序中,这是怎么回事啊???怎么改正啊。一次中断程序后也能再次进行中断触发的操作。
#include<iom8v.h>#define uchar unsigned char#define uint unsigned int//============延时=================void delay_ms(uint k) {   uint i,j;   for(i=0;i<k;i++)   {      for(j=0;j<570;j++)  ;    } }    uint m;   uchar Distab[]=   {0x03,0x06,0x0C,0x09   };  void main(void) {    DDRC=0xff;         //PC作为输出端口   DDRD=0xdf;         //PD3作为输入   PORTD=0xff;        //PD初始化输出11111111   MCUCR=0x08;        //INT1下降沿触发   GICR=0x80;         //使能INT1中断   SREG=0x80;         //使能总中断   while(1)           //无线循环{PORTC=0xff;} }#pragma interrupt_handler int1_isr:3   //INT1中断子函数void int1_isr(void)  {     for(m=0;m<=3;m++)                { PORTC=Distab[m];  delay_ms(500);    }}
[ 本帖最后由 wawling 于 2012-5-22 18:58 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
鑫海宝贝
1楼-- · 2019-03-25 19:51
你可以先用流水灯试试,不加数组,写一个两种流水灯程序,中断一种,主程序一种,我看了一下你的程序结构没什么问题,我怀疑数组那里的问题
tiankai001
2楼-- · 2019-03-25 21:43
2楼说得对。
另外中断程序一般是要尽量短,延时最好不要放在中断里
wawling
3楼-- · 2019-03-25 21:56
我把数组删了,主程序加了个流水灯,中断没变,但是开始也是先执行中断,结束了才回到主程序中
wawling
4楼-- · 2019-03-26 00:34
 精彩回答 2  元偷偷看……
xiaojiong886
5楼-- · 2019-03-26 01:18
开始的时候,你指的是上电的时候吗,除了开始时候,之后还会自动进入中断吗?

一周热门 更多>