سلام.
وقتی که int0 فعال میشه میکرو می پره تو زیر برنامه وققه یه متغیر not می کنه.
مشکل اینجاس زمانی که از زیر برنامه بر میگرده میره تو برنامه اصلی از اونجا که پریده ادامه میده.در حالی که می خوام از اول برنامه شروع بکار کنه.اینم برنامه(البته چون زیاد بود یه برنامه سمبلیک نوشتم) :
وقتی که int0 فعال میشه میکرو می پره تو زیر برنامه وققه یه متغیر not می کنه.
مشکل اینجاس زمانی که از زیر برنامه بر میگرده میره تو برنامه اصلی از اونجا که پریده ادامه میده.در حالی که می خوام از اول برنامه شروع بکار کنه.اینم برنامه(البته چون زیاد بود یه برنامه سمبلیک نوشتم) :
#include <mega32.h>
#include<delay.h>
char buffer1[10];
char buffer2[10];
bit a;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
a=~a;
}
void main(void)
{
GICR|=0x40;
MCUCR=0x02;
MCUCSR=0x00;
GIFR=0x40;
#asm("sei"
while (1)
{
if (a==0){
buffer1[1]=buffer2[9];
buffer1[2]=buffer2[8];
buffer1[3]=buffer2[7];
buffer1[4]=buffer2[6];
buffer1[5]=buffer2[5];
buffer1[6]=buffer2[4];
buffer1[7]=buffer2[3];
buffer1[8]=buffer2[2];
buffer1[9]=buffer2[1];
}
if (a==1){
buffer1[1]=buffer2[1];
buffer1[2]=buffer2[2];
buffer1[3]=buffer2[3];
buffer1[4]=buffer2[4];
buffer1[5]=buffer2[5];
buffer1[6]=buffer2[6];
buffer1[7]=buffer2[7];
buffer1[8]=buffer2[8];
buffer1[9]=buffer2[9];
}
};
}
#include<delay.h>
char buffer1[10];
char buffer2[10];
bit a;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
a=~a;
}
void main(void)
{
GICR|=0x40;
MCUCR=0x02;
MCUCSR=0x00;
GIFR=0x40;
#asm("sei"

while (1)
{
if (a==0){
buffer1[1]=buffer2[9];
buffer1[2]=buffer2[8];
buffer1[3]=buffer2[7];
buffer1[4]=buffer2[6];
buffer1[5]=buffer2[5];
buffer1[6]=buffer2[4];
buffer1[7]=buffer2[3];
buffer1[8]=buffer2[2];
buffer1[9]=buffer2[1];
}
if (a==1){
buffer1[1]=buffer2[1];
buffer1[2]=buffer2[2];
buffer1[3]=buffer2[3];
buffer1[4]=buffer2[4];
buffer1[5]=buffer2[5];
buffer1[6]=buffer2[6];
buffer1[7]=buffer2[7];
buffer1[8]=buffer2[8];
buffer1[9]=buffer2[9];
}
};
}
دیدگاه