Advertisement
Guest User

AVR SRC

a guest
Feb 15th, 2013
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. char disp[4]; // Буфер дисплея
  2. char disp_c; // Индекс символа, отображаемого в данный момент
  3. char disp_p[4] = {0x01, 0x02, 0x40, 0x80}; // Битовые маски разрядов
  4.  
  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.             sk = 0;
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement