??? 03/25/09 09:32 Read: times |
#163830 - EA in "Interrupt service routine" |
Hi,
We are using 8052 microcontroller in my project and having compiled code around 100K. I am using Keil microvision 3 compiler and using code banking with 2 code banks. Crysta used = 11.0592 Mhz. I am using Timer 0 Interrupt service routine in Mode 1 running with 20 milliseconds ticks. The routine is: void onTimerISR(void) interrupt 1 using 1 { unsigned char i; EA = 0; //DISABLING ALL INTERRUPTS TR0 = 0; //TIMER 0 RUN BIT = 0 TH0 = 0xB8; //MANUAL RELOAD VALUES IN TL0 = 0x00; //TL0,TH0 OF TIMER 0 FOR COUNTING 20 MILLISECONDS AGAIN TR0 = 1; //START TIMER 0 RUN BIT -- // -- // REMAINING CODE IN TISR ROUTINE... -- // ET0 = 1; //TIMER 0 INTERRUPT ENABLING EA = 1; //ENABLE ALL INTERRUPTS } Q: Should we disable and enable Interrupts with EA = 0/1 after control enters the routine? --- I am also using Timer 1 as a baud rate generator for transmitting data bytes at 2400 baud to computer. The serial Interrupt service routine is as follows: unsigned char volatile serialVal; void onSerialPortISR(void) interrupt 4 using 3 { EA = 0; //DISABLING ALL INTERRUPTS if(TI)//CHECKING WHETHER INTERRUPT OCCUTED DUE TO TI { TI = 0; //CLEARING THIS BIT MANUALLY SBUF = serialVal; //SENDING DATA ASSIGNED INTO THIS VARIABLE //TO SBUF } EA = 1; //ENABLE ALL INTERRUPTS } Q: Should we disable and enable Interrupts with EA = 0/1 after control enters the routine? thanks in advance. |
Topic | Author | Date |
EA in "Interrupt service routine" | 01/01/70 00:00 | |
yes,no | 01/01/70 00:00 | |
both are wrong | 01/01/70 00:00 | |
... including this one? | 01/01/70 00:00 | |
well, I'll be | 01/01/70 00:00 | |
thanks >> it's working >> further | 01/01/70 00:00 | |
but WHY are you doing that? | 01/01/70 00:00 | |
Now i am not doing EA=0 in ISR. | 01/01/70 00:00 | |
ah, then it's OK![]() | 01/01/70 00:00 |