Timer interrupt

 #include <reg51.h>

sbit LED = P1^0;  // LED connected to P1.0

void Timer0_Init() {
    TMOD |= 0x01;       // Timer0 in Mode 1 (16-bit)
    TH0 = 0x4C;         // Load high byte for 50 ms
    TL0 = 0x00;         // Load low byte
    ET0 = 1;            // Enable Timer0 interrupt
    EA = 1;             // Enable global interrupts
    TR0 = 1;            // Start Timer0
}

// Timer0 Interrupt Service Routine
void Timer0_ISR(void) interrupt 1 {
    TH0 = 0x4C;         // Reload Timer
    TL0 = 0x00;

    LED = ~LED;         // Toggle LED
}

void main() {
    LED = 0;            // Initialize LED state
    Timer0_Init();      // Initialize Timer

    while (1) {
        // Main loop does nothing, LED toggled in ISR
    }
}

Post a Comment

Post a Comment (0)

Previous Post Next Post

ads

ads

Update cookies preferences