This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Problem with Timer0 Interrupt

Hi all, I am using Timer0 as interrupt for display time on LCD. But when the interrupt occurs, it won't come back to the last executed command of interrupted. It is repeating the ISR. I am using embedded C. I don't know what is happening. I did my best. Please help me.

here is my ISR

void timer0() interrupt 1
{ TH0 = 0xFC; TL0 = 0x17; time_display(); }

Parents
  • /*------------------------------------void EWEN ()-----------------------------------------*/
    void EWEN ()

    { uchar i; uint Data; CS = 0; SCK = 0; CS = 1; //Data = 0x98; Data = 0x260; Data <<= 6; for (i = 0; i <10; i ++){ SDI = Data &0x8000; SCK = 1; SCK = 0; Data <<= 1; } CS = 0;
    } /*------------------------------------void EWDS ()-----------------------------------------*/
    void EWDS ()
    { uchar i; uint Data; CS = 0; SCK = 0; CS = 1; //Data = 0x80; Data = 0x200; Data <<= 6; for (i = 0; i <10; i ++){ SDI = Data &0x8000; SCK = 1; SCK = 0; Data <<= 1; } CS = 0;
    } /*------------------------------------uint Read (uchar Address)-----------------------------------------*/
    uint Read (uchar Address)
    { uchar i,pack; uint TmpData,m_data;

    for(pack=0;pack<2;pack++){ EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = (Address & 0x7F) | 0x0300; TmpData <<= 6; for (i = 0; i < 10; i ++) { SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } SDO = 1; for (i = 0; i <8; i ++) { CS = 1; SCK = 1; m_data <<= 1; m_data |= SDO;

    SCK = 0; } CS = 0; EWDS (); Address++; } return m_data;
    } /*------------------------------------void Write (uchar Address, uint Data)-----------------------------------------*/
    void Write (uchar Address, uint Data)

    { uchar i,pack,lsb_dat,msb_dat; uint TmpData; TmpData = Data; lsb_dat = TmpData; TmpData >>= 8; msb_dat = TmpData; for(pack=0;pack<2;pack++) { EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = (Address & 0x7F) | 0x0280; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } if(pack==0)TmpData = msb_dat; else TmpData = lsb_dat; for (i = 0; i <8; i ++){ SDI = TmpData &0x80; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS (); Address++; }
    } /*------------------------------------void ERASE (uchar Address)-----------------------------------------*/
    void ERASE (uchar Address)
    { uchar i; uint TmpData; EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = (Address & 0x3F) | 0x0380; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS ();
    } /*------------------------------------void ERAL ()-----------------------------------------*/
    void ERAL ()
    { uchar i; uint TmpData; EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = 0x240; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS ();
    } /*------------------------------------void WRAL (uint Data)-----------------------------------------*/
    void WRAL (uint Data)

    { uchar i; uint TmpData; EWEN (); ; CS = 0; SCK = 0; CS = 1; TmpData = 0x220; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0 ; TmpData <<= 1; } TmpData = Data; for (i = 0; i <16; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS ();
    } /*------------------------------------END-----------------------------------------*/

Reply
  • /*------------------------------------void EWEN ()-----------------------------------------*/
    void EWEN ()

    { uchar i; uint Data; CS = 0; SCK = 0; CS = 1; //Data = 0x98; Data = 0x260; Data <<= 6; for (i = 0; i <10; i ++){ SDI = Data &0x8000; SCK = 1; SCK = 0; Data <<= 1; } CS = 0;
    } /*------------------------------------void EWDS ()-----------------------------------------*/
    void EWDS ()
    { uchar i; uint Data; CS = 0; SCK = 0; CS = 1; //Data = 0x80; Data = 0x200; Data <<= 6; for (i = 0; i <10; i ++){ SDI = Data &0x8000; SCK = 1; SCK = 0; Data <<= 1; } CS = 0;
    } /*------------------------------------uint Read (uchar Address)-----------------------------------------*/
    uint Read (uchar Address)
    { uchar i,pack; uint TmpData,m_data;

    for(pack=0;pack<2;pack++){ EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = (Address & 0x7F) | 0x0300; TmpData <<= 6; for (i = 0; i < 10; i ++) { SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } SDO = 1; for (i = 0; i <8; i ++) { CS = 1; SCK = 1; m_data <<= 1; m_data |= SDO;

    SCK = 0; } CS = 0; EWDS (); Address++; } return m_data;
    } /*------------------------------------void Write (uchar Address, uint Data)-----------------------------------------*/
    void Write (uchar Address, uint Data)

    { uchar i,pack,lsb_dat,msb_dat; uint TmpData; TmpData = Data; lsb_dat = TmpData; TmpData >>= 8; msb_dat = TmpData; for(pack=0;pack<2;pack++) { EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = (Address & 0x7F) | 0x0280; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } if(pack==0)TmpData = msb_dat; else TmpData = lsb_dat; for (i = 0; i <8; i ++){ SDI = TmpData &0x80; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS (); Address++; }
    } /*------------------------------------void ERASE (uchar Address)-----------------------------------------*/
    void ERASE (uchar Address)
    { uchar i; uint TmpData; EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = (Address & 0x3F) | 0x0380; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS ();
    } /*------------------------------------void ERAL ()-----------------------------------------*/
    void ERAL ()
    { uchar i; uint TmpData; EWEN (); CS = 0; SCK = 0; CS = 1; TmpData = 0x240; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS ();
    } /*------------------------------------void WRAL (uint Data)-----------------------------------------*/
    void WRAL (uint Data)

    { uchar i; uint TmpData; EWEN (); ; CS = 0; SCK = 0; CS = 1; TmpData = 0x220; TmpData <<= 6; for (i = 0; i <10; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0 ; TmpData <<= 1; } TmpData = Data; for (i = 0; i <16; i ++){ SDI = TmpData &0x8000; SCK = 1; SCK = 0; TmpData <<= 1; } CS = 0; SDO = 1; CS = 1; SCK = 1; while (SDO == 0) { SCK = 0; SCK = 1; } SCK = 0; CS = 0; EWDS ();
    } /*------------------------------------END-----------------------------------------*/

Children
No data