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