Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char disp[4]; // Буфер дисплея
- char disp_c; // Индекс символа, отображаемого в данный момент
- char disp_p[4] = {0x01, 0x02, 0x40, 0x80}; // Битовые маски разрядов
- void main(void) {
- // Инициализация периферии
- // skipped
- DDRA = 0xFF; // PORTA -> OUT
- DDRC = 0xFF; // PORTC -> OUT
- for(;;) {
- wdt_reset();
- usbPoll();
- sk++;
- if (sk >= 50) { // Порты контроллера очень быстрые, и задержка тут необходиа
- disp_c = (disp_c + 1) % 4;
- PORTA = ~disp[disp_c]; // Переместить "~" на строку ниже для дисплея с общ. катодом
- PORTC = disp_p[disp_c];
- sk = 0;
- }
- }
- }
- uchar usbFunctionWrite(uchar *data, uchar len) // onHostWrite
- {
- disp[0] = data[1]; disp[1] = data[2];
- disp[2] = data[3]; disp[3] = data[4];
- if (data[0] & 0x01) DESELECT(); else SELECT();
- return 1; /* обязательно */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement