View difference between Paste ID: mqUk5rWr and 9jyn6hJp
SHOW: | | - or go back to the newest paste.
1
char disp[4]; // Буфер дисплея
2
char disp_c; // Индекс символа, отображаемого в данный момент
3
char disp_p[4] = {0x01, 0x02, 0x40, 0x80}; // Битовые маски разрядов
4
5-
// ================================ main() ================================
5+
void main(void) {
6
	// Инициализация периферии
7
	// skipped
8
	DDRA = 0xFF; // PORTA -> OUT
9
	DDRC = 0xFF; // PORTC -> OUT
10
	for(;;) {
11
		wdt_reset();
12
		usbPoll();
13
		sk++;
14
		if (sk >= 50) { // Порты контроллера очень быстрые, и задержка тут необходиа
15
			disp_c = (disp_c + 1) % 4;
16
			PORTA = ~disp[disp_c]; // Переместить "~" на строку ниже для дисплея с общ. катодом
17
			PORTC = disp_p[disp_c];
18-
// ================================ процедура приема =======================
18+
19
		}
20
	}
21
}
22
23
uchar   usbFunctionWrite(uchar *data, uchar len) // onHostWrite
24
{
25
	disp[0] = data[1]; disp[1] = data[2];
26
	disp[2] = data[3]; disp[3] = data[4];
27
	if (data[0] & 0x01) DESELECT(); else SELECT();
28
	return 1; /* обязательно */
29
}