-
Notifications
You must be signed in to change notification settings - Fork 0
/
indicate.c1
120 lines (104 loc) · 3.34 KB
/
indicate.c1
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#define RUN
#ifdef RUN
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#else
#include <stdio.h>
#include <dos.h>
char PORTB, DDRB,DDRC,DDRD;
#endif
// ������������ ���-�� �������� ���������
#define NMAX 64
int N_pixels=0; // ���������� ��������� ��������
typedef struct
{
int x, y, color;
char on;
} pixel;
pixel P[NMAX];
// ���������� ������
// �������� ������� �� ������������ ���������� �������
// � ����������� �� ���-�� �������� ���������
void Refresh(
int time_ms // ����� ������� �� ���� ����������
)
{
int time=time_ms/N_pixels; //������� ����� ���� ������
int i;
for(i=0;i<NMAX;i++)
{
if(P[i].on==1)
{
PORTA=1<<P[i].x;
PORTC=0xff ^ (1<<P[i].y);
#ifdef RUN
_delay_ms(time);
#else
sleep(time);
#endif
}
}
}
// �������� ������ �� �����
void AddPixel(int x, int y)
{
int i;
// ���� ������ ����������� ������
for(i=0;i<NMAX;i++)
{
if(P[i].on==0)
{
break;
}
}
P[i].x=x;
P[i].y=y;
//P[i].color=color;
N_pixels++;
}
// ��������� ������ � ������� ������������
void RemovePixel( int x, int y)
{
int i;
// ���� ������ � ������� ������������
for(i=0;i<NMAX;i++)
{
if(P[i].x==x && P[i].y==y && P[i].on==1)
{
break;
}
}
P[i].on=0;
N_pixels--;
}
// ������ �������
void InitSmile(void)
{
// �����
AddPixel(3,2);
AddPixel(6,2);
// ���
AddPixel(2,5);
AddPixel(3,6);
AddPixel(4,7);
AddPixel(5,7);
AddPixel(6,6);
AddPixel(7,5);
}
int main(void) // ������ ������� ���������
{
#ifdef RUN
DDRB = 0xff; /* ��� ������ ����� D ���������������� ��� ������ */
DDRA = 0xff; /* 1 ����� ����� B ���������������� ��� ������, ��������� ��� ����� */
DDRC = 0xff; /* ��� ������ ����� C ���������������� ��� ������ */
PORTA = 0x00;
PORTC = 0xff;
PORTB = 0xff;
#endif
InitSmile();
while(1)
{
Refresh(30);
}
} // ����������� ������ �������� ���������