카운트 다운을 FND에 출력

 

9 ~ 0 까지 무한히 반복하는 카운트다운 입니다.

 

 

 

 

전체 소스 Codevision 용

 

 

/*********************************************

9 ~0 까지 무한히 반복

FND 에 출력

 

Tools : Codevision

http://watsim.tistory.com

*********************************************/

 

#include <mega128.h>

 

// time delay for us

void Delay_us(char time_us)        

{

    register char i;

    for(i = 0; i < time_us; i++)            // 4 cycle +

    {

    #asm

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle +

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle +

         PUSH R0 ;         // 2 cycle +

         POP R0 ;         // 2 cycle = 16 cycle = 1 us for 16MHz

    #endasm

    }

}

 

// time delay for ms

void Delay_ms(unsigned int time_ms)    

{

    register unsigned int i;

    for(i = 0; i < time_ms; i++)

    {

        Delay_us(250);

        Delay_us(250);

        Delay_us(250);

        Delay_us(250);

    }

}

 

// Display to FND

void FndDisplay1(char byteData);

void FndDisplay1(char byteData){

    switch( byteData){

    case 0: PORTA = 0b10001000; break;

    case 1: PORTA = 0b11101011; break;

    case 2: PORTA = 0b01001100; break;

    case 3: PORTA = 0b01001001; break;

    case 4: PORTA = 0b00101011; break;

    case 5: PORTA = 0b00011001; break;

    case 6: PORTA = 0b00011000; break;

    case 7: PORTA = 0b11001011; break;

    case 8: PORTA = 0x00| 0x08; break;

    case 9: PORTA = 0x01|0x08; break;

    default : PORTA = 0b11111000; break;

    }

}

 

void main(void)

{

    signed char byteA=9;

 

    PORTA=0x00;

    DDRA=0xFF; // output

 

    while (1)

    {

        FndDisplay1(byteA);

        Delay_ms(100);

      

        if(--byteA <0) byteA = 9;

    }

}

 

 

 

 

주요 부품

Posted by WhiteAT
,