#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define LED PE7
#if 0
volatile unsigned long timer0;
ISR(TIMER0_OVF_vect)
{
timer0++;
if ((timer0 % 100) == 0) //???
PORTE^= 1<<LED; //???
TCNT0 = //???
}
#endif
unsigned char Arr[10] = {
0x77, 0x41, 0x3B, 0x5B, 0x4D,
0x5E, 0x7C, 0x43, 0x7F, 0x4F
};
int main(void)
{
int i;
DDRB = 0xFF;
DDRC = 0xFF;
while (1) {
for (i=0; i<60; i++) {
PORTB = Arr[i / 10];
PORTC = Arr[i % 10];
_delay_ms(1000);
}
}
#if 0
DDRE |= 1 << LED;
TCCR0 |= 1<<CS02 | 1<<CS01; //???
TIMSK |= 1<TOIE0; //???
timer0 = 0; //???
sei(); //???
while (1) {
;
}
#endif
return 0;
}
이게 교수님이 주신 소슨데 십자리 일자리 초시계 그니까 57초 58초 이렇게 되는건데
구동하는데 이상하게 되거든요 뭐가문제죠 ㅡㅡ
포트 B가 초시계의 십자리 포트C가 초시계의 일자리 입니다.
포트 E는 무슨용도로 쓰는지 확실히 모르겟어요
제발좀 부탁딀빈다
#if 0 는 풀고 돌렸냐?
지금코드는 polling 구조야. 1초씩 딜레이먹여가면서 포트에 쓰는거지.
근데 주석처리한 부분을 가동하면 인터럽트 구조로 바껴. ISR 이 Interrupt Service Routine 이지.
Artmega128 타이머 소스 검색해보면 참고 할것 많을테니 알아서 참고해봐.
PORTE 는 왠지 LED 깜박이게 해 놓은거 같은데 스펙문서 찾아보기 귀찮다.
http://autogram.tk/이
중고차 어플리케이션 어떤가요?