00 ~ 99 까지 FND 2개에 출력하기
00 ~ 99 까지 무한히 반복하는 카운터 입니다.
PORTA 를 FND1(일의 자리)에 연결하였고
PORTB 를 FND2(십의 자리)에 연결합니다.
전체 소스 Codevision 용
/********************************************* 00 ~ 99 까지 무한히 반복 PORTA ==> FND1 에 출력 PORTB ==> FND2 에 출력
Tools : Codevision *********************************************/
#include <mega128.h>
// FND 에 출력할 실제 데이터 int g_iCountData;
// 1초 계산을 위한 변수 int g_iTimer0Counter = 0;
void FndDisplay1(char byteData); // 1 자리 출력 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 FndDisplay2(char byteData); // 10 자리 출력 void FndDisplay2(char byteData){
switch( byteData){ case 0: PORTB = 0b10001000; break; case 1: PORTB = 0b11101011; break; case 2: PORTB = 0b01001100; break; case 3: PORTB = 0b01001001; break; case 4: PORTB = 0b00101011; break; case 5: PORTB = 0b00011001; break; case 6: PORTB = 0b00011000; break; case 7: PORTB = 0b11001011; break; case 8: PORTB = 0x00| 0x08; break; case 9: PORTB = 0x01|0x08; break; default : PORTB = 0b11111000; break; } }
// Timer 0 output compare interrupt service routine interrupt [TIM0_COMP] void timer0_comp_isr(void) { g_iTimer0Counter ++; if(g_iTimer0Counter>5) { if(++g_iCountData> 99) g_iCountData=0; g_iTimer0Counter = 0; } }
void main(void) { char byteFND1; char byteFND2;
g_iTimer0Counter = 0; g_iCountData = 0;
DDRA=0xFF; DDRB=0xFF;
ASSR=0x00; TCCR0=0x01; TCNT0=0x00; OCR0=0x20;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x02; ETIMSK=0x00;
ACSR=0x80; SFIOR=0x00;
#asm("sei")
while (1) { byteFND2 = (unsigned char)g_iCountData/10 ; byteFND1 = (unsigned char)g_iCountData%10; FndDisplay2(byteFND2); FndDisplay1(byteFND1); } } |
주요 부품
ATMEGA128 |
'CodeVision 용 소스' 카테고리의 다른 글
스위치 누를 때마다 1 증가하는 카운터 (0) | 2011.01.28 |
---|---|
스위치 누르면 ‘2’, 떼면 ‘1’ 을 FND에 표시 (0) | 2011.01.27 |
0000 ~ 9999 까지 FND 4 자리 출력하기 (0) | 2011.01.26 |
000 ~ 999 까지 FND 3개 출력하기 (0) | 2011.01.26 |
카운트 다운을 FND에 출력 (0) | 2011.01.22 |