#include <8052.h> #ifndef FLASH_PIN #define FLASH_PIN _P2_0 #endif #ifndef IRQFREQ #define IRQFREQ 1000L #endif #ifndef T0_BITS #define T0_BITS 13 #endif #define FOSC (SYSCLK*1000L) #define T0_1MS ((65536)-FOSC/12L/IRQFREQ) #define TCT IRQFREQ/2-1 unsigned char ctr_l = TCT&0xFF; unsigned char ctr_h = (TCT>>8)&0xff; unsigned char ctr_w = (TCT>>16)&0xff; unsigned char counter = 0; void handler() __interrupt 1 { EA=0; TL0 = (T0_1MS) & 0xFF; // Initial timer value TH0 = T0_1MS>>8; // Initial timer value __asm mov a, #0xff dec _ctr_l cjne a,_ctr_l, 00001$ dec _ctr_h cjne a,_ctr_h, 00001$ dec _ctr_w cjne a,_ctr_w, 00001$ ; cpl FLASH_PIN __endasm; counter ++; P2 = counter ^0xff; ctr_l = TCT&0xFF; ctr_h = (TCT>>8)&0xff; ctr_w = (TCT>>16)&0xff; __asm 00001$: __endasm; EA=1; } void main() { P1=TMOD; EA=0; TMOD =1; P1=TMOD; TL0 = (T0_1MS) & 0xFF; // Initial timer value TH0 = T0_1MS>>8; // Initial timer value TR0 = 1; // Timer0 start run ET0 = 1; // Enable timer0 interrupt EA=1; while(1); }