Showing
1 changed file
with
52 additions
and
0 deletions
lab04.c
0 → 100644
1 | +#define F_CPU 16000000UL | ||
2 | +#include <avr/io.h> | ||
3 | +#include <util/delay.h> | ||
4 | + | ||
5 | +int main() | ||
6 | +{ | ||
7 | + unsigned char FND_DATA[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x27, 0x7f, 0x6f, | ||
8 | + 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, | ||
9 | + 0x80, 0x40, 0x08}; // 0~9, A~F, '.', '-', '_' | ||
10 | + unsigned int num = 0, num0, num1, num2, num3; // 각 자리 수를 나타내기 위한 변수 | ||
11 | + | ||
12 | + DDRC = 0xff; // C포트를 모두 사용 | ||
13 | + DDRG = 0x0f; | ||
14 | + | ||
15 | + | ||
16 | +// 분/초 시계 | ||
17 | + unsigned int i = 0; // 0.5초 마다 깜빡거리는 것을 설정하기 위한 변수 | ||
18 | + while(1) | ||
19 | + { | ||
20 | + num++; | ||
21 | + num0 = (num/60000)%6; // 각 자리 수 마다 연산 | ||
22 | + num1 = (num/6000)%10; | ||
23 | + num2 = (num/1000)%6; | ||
24 | + num3 = (num/100)%10; | ||
25 | + | ||
26 | + PORTC = FND_DATA[num0]; | ||
27 | + PORTG = 0x08; | ||
28 | + _delay_ms(2); | ||
29 | + | ||
30 | + PORTC = FND_DATA[num1] + 0x80; // 가운데 점 표시 | ||
31 | + PORTG = 0x04; | ||
32 | + _delay_ms(2); | ||
33 | + | ||
34 | + if(i < 40) | ||
35 | + PORTC = FND_DATA[num2]; | ||
36 | + else | ||
37 | + PORTC = 0; | ||
38 | + PORTG = 0x02; | ||
39 | + _delay_ms(3); | ||
40 | + | ||
41 | + if(i < 40) | ||
42 | + PORTC = FND_DATA[num3]; | ||
43 | + else | ||
44 | + PORTC = 0; | ||
45 | + | ||
46 | + PORTG = 0x01; | ||
47 | + _delay_ms(3); | ||
48 | + | ||
49 | + if(i++ >= 50) // 0.5초 마다 i를 0으로 초기화하여 깜빡거리도록 설정 | ||
50 | + i = 0; | ||
51 | + } | ||
52 | +} |
-
Please register or login to post a comment