카운트 다운을 FND에 출력
카운트 다운을 FND에 출력
9 ~ 0 까지 무한히 반복하는 카운트다운 입니다.
전체 소스 Codevision 용
/********************************************* 9 ~0 까지 무한히 반복 FND 에 출력
Tools : Codevision *********************************************/
#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; } }
|
주요 부품
ATMEGA128 |