We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
WHEN I COMPILE USING PROTEUS KIEL 5 THE PROGRAM SHOWS ERROR L121:IMPROPER FIXUP . WHEN I DELETE INTERRUPT 2 THE COMPILER COMPILES SUCESSFULLY. HELP PLESE ANYONE. can anyone tell me what is wrong with this sour #include<reg51.h> sbit op1=P2^7; sbit op2=P2^6; unsigned char data byt=0xFF; void keydly() { int a,b; for(a=0;a<50;a++) for(b=0;b<1000;b++); } void delay1ms(int d) { int k; TL0 = 0x17; TH0 = 0xFC; TR0 = 1; for(k=0;k<d;k++) { while(TF0==0); TF0 = 0; TL0 = 0x17; TH0 = 0xFC; } TR0 = 0; } void delay50ms(int c) { int p; TL1 = 0xAF; TH1 = 0x3C; TR1 = 1; for(p=0;p<c;p++) { while(TF1==0); TF1 = 0; TL1 = 0xAF; TH1 = 0x3C; } TR1 = 0; } void gripopen() { int x; for(x=0;x<4;x++) { op1=0; delay1ms(4); op1=1; delay1ms(20); } } void gripclose() { int y; for(y=0;y<4;y++) { op1=0; delay1ms(1); op1=1; delay1ms(20); } } void gripclk() { int w; for(w=0;w<4;w++) { op2=0; delay1ms(4); op2=1; delay1ms(20); } } void gripaclk() { int z; for(z=0;z<4;z++) { op2=0; delay1ms(1); op2=1; delay1ms(20); } } void gripup() { P2=0x01; delay50ms(20); P2=0x00; } void gripdwn() { P2=0x02; delay50ms(20); P2=0x00; } void rotetleft() { P2=0x04; delay50ms(40); P2=0x00; } void rotetright() { P2=0x08; delay50ms(40); P2=0x00; } void int1() interrupt 2 { byt=P1; EA=0; keydly(); } void main() { TMOD = 0x11; P2=0x00; P0=0x00; op1=1; op2=1; P1=0xFF; back: IE=0x84; byt=0xFF; while(byt==0xFF); switch(byt) { case 0xF1: gripopen(); break; case 0xF2: gripclose(); break; case 0xF3: gripclk(); break; case 0xF4: gripaclk(); break; case 0xF5: gripup(); break; case 0xF6: gripdwn(); break; case 0xF7: rotetleft(); break; case 0xF8: rotetright(); break; } goto back; }
at first glance
unsigned char data byt=0xFF;
SHOULD be declared as volatile since it is updated by Interrupt routines.
Hey, I found the error. When I compiled using keil IDE it compiled succesfully. But with Proteus keil c5 it shows an improper fix up error. What could be the reason?
Different memory model? Different include files? Different license? Different optimization rules? ...