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 |
- [2015/01/08] Character LCD 예제 (3737)
- [2014/11/28] 간단한 유니폴라 스텝모터 구동 (3883)
- [2014/11/28] 컴퓨터-아두이노 간의 블루투스 통신 (채팅) (4806)
- [2013/04/11] WAT-AVR128_PLUS 모듈 ()
- [2012/12/03] WAT-AVR128 EXT (AVR128용 확장보드) ()
- [2011/10/27] WAT-USB AVR ISP (6565)
- [2011/10/27] WAT-AVR128 모듈 (5534)
- [2013/05/30] WAT-AVR128, OUTPUT 실험 ()
- [2013/05/16] Tool palette bar, OrCAD Capture for Windows (6197)
- [2013/04/25] AVR ATmega 128로 인터럽트를 이용한 LED를 점멸하는 방법 좀 알려주세요. (11409) *3