0000 ~ 9999 까지 4자리 숫자 표시
0000 ~ 9999 까지 무한히 반복하는 카운터 입니다.
전체 소스 Codevision 용
/********************************************* 000 ~ 999 까지 무한히 반복 PORTA ==> FND1 에 출력 PORTB ==> FND2 에 출력 PORTC ==> FND3 에 출력 PORTD ==> FND4 에 출력
Tools : Codevision http://watsim.tistory.com *********************************************/
#include <mega128.h>
// FND 에 출력할 실제 데이터 unsigned int g_iCountData = 0;
// 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; } }
void FndDisplay3(char byteData); // 100 자리 출력 void FndDisplay3(char byteData){
switch( byteData){ case 0: PORTC = 0b10001000; break; case 1: PORTC = 0b11101011; break; case 2: PORTC = 0b01001100; break; case 3: PORTC = 0b01001001; break; case 4: PORTC = 0b00101011; break; case 5: PORTC = 0b00011001; break; case 6: PORTC = 0b00011000; break; case 7: PORTC = 0b11001011; break; case 8: PORTC = 0x00| 0x08; break; case 9: PORTC = 0x01|0x08; break; default : PORTC = 0b11111000; break; } }
void FndDisplay4(char byteData); // 1000 자리 출력 void FndDisplay4(char byteData){
switch( byteData){ case 0: PORTD = 0b10001000; break; case 1: PORTD = 0b11101011; break; case 2: PORTD = 0b01001100; break; case 3: PORTD = 0b01001001; break; case 4: PORTD = 0b00101011; break; case 5: PORTD = 0b00011001; break; case 6: PORTD = 0b00011000; break; case 7: PORTD = 0b11001011; break; case 8: PORTD = 0x00| 0x08; break; case 9: PORTD = 0x01|0x08; break; default : PORTD = 0b11111000; break; } }
// Timer 0 output compare interrupt service routine interrupt [TIM0_COMP] void timer0_comp_isr(void) { g_iTimer0Counter ++; if(g_iTimer0Counter>2) { if(++g_iCountData>9999) g_iCountData = 0; g_iTimer0Counter = 0; } }
void main(void) { char byteFND1; char byteFND2; char byteFND3; char byteFND4;
g_iTimer0Counter = 0; g_iCountData = 9998;
DDRA=0xFF; DDRB=0xFF; DDRC=0xFF; DDRD=0xFF;
ASSR=0x00; TCCR0=0x01; TCNT0=0x00; OCR0=0x20;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x02; ETIMSK=0x00;
ACSR=0x80; SFIOR=0x00;
// Global enable interrupts #asm("sei")
while (1) {
byteFND4 = (g_iCountData/1000%10); byteFND3 = (g_iCountData/100%10); byteFND2 = (g_iCountData/10%10); byteFND1 = (g_iCountData%10);
FndDisplay4(byteFND4); FndDisplay3(byteFND3); FndDisplay2(byteFND2); FndDisplay1(byteFND1); } } |
주요 부품
ATMEGA128 |
- [2015/04/22] 시리얼통신 소스 코드입니다. 0.2 (11759) *2
- [2015/03/13] 시리얼통신 소스 코드입니다. 0.1 (9420)
- [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 ()
- [2011/10/27] WAT-AVR128 모듈 ()
- [2013/05/30] WAT-AVR128, OUTPUT 실험 ()