/* RX & 3LED BY M.K 2011/4/26 AT90S2313 4MHz Last Mod 2011/5/13 Used ROM (bytes): 336 (16%) Free ROM (bytes): 1712 (84%) */ sbit LED_0 at PORTD4_bit; sbit LED_1 at PORTD5_bit; sbit LED_2 at PORTD6_bit; sbit dp at PORTB7_bit; unsigned char I_Cunt; unsigned char LED_0Data,LED_1Data; void To_7SegLED (char S_Data) { switch(S_Data & 0x0f){ case 0: PORTB=0x3f; break; case 1: PORTB=0x06; break; case 2: PORTB=0x5b; break; case 3: PORTB=0x4f; break; case 4: PORTB=0x66; break; case 5: PORTB=0x6d; break; case 6: PORTB=0x7d; break; case 7: PORTB=0x07; break; case 8: PORTB=0x7f; break; case 9: PORTB=0x6f; break; default: PORTB=0x08; } } void Timer0_Interrupt() iv IVT_ADDR_TIMER0_OVF0 { I_Cunt++; // 4mSec if(I_Cunt==1){ // **1 LED_2=1; //OFF To_7SegLED(LED_0Data); dp=1; // dp ON LED_0=0; //ON } if(I_Cunt==2){ // *1* LED_0=1; //OFF To_7SegLED(LED_0Data >>4); LED_1=0; //ON } if(I_Cunt==3){ // 1** I_Cunt=0; LED_1=1; //OFF To_7SegLED(LED_1Data); LED_2=0; //ON } } void main() { DDRB = 0xFF; // 1=out PORTB= 0; DDRD = 0b11111100; // 1=out 0=input PORTD= 0b11111100; // I_Cunt= 0; //I_Cunter Reset TCCR0 = 0x03; //1/64=16uec TCNT0 = 0; // 16*256=4mSec TOIE0_bit=1; // Interrupt on TIMSK = 2; SREG_I_bit = 1; // asm sei; // LED_1Data=0x01; //Test LED_0Data=0x23; // while(1); //Loop }