franta-hg@16: #include franta-hg@16: #include franta-hg@16: franta-hg@16: /** franta-hg@16: * Slouží k ovládání LED displeje pomocí řadiče M5482 připojeného na LPT port. franta-hg@16: * Používají se jen dva piny: DATA a CLOCK signál. franta-hg@16: */ franta-hg@16: franta-hg@16: /** franta-hg@16: * = 1 → normální běh franta-hg@16: * > 1 → zpomalené pro ladění franta-hg@16: */ franta-hg@16: const int BRZDA = 100000; franta-hg@16: franta-hg@37: void zapisSeriove(bool hodnoty[], int n); franta-hg@16: void zapisData(bool hodnota); franta-hg@16: void zapisClock(bool hodnota); franta-hg@16: void cekej(int mikroSekund); franta-hg@16: franta-hg@16: int main() { franta-hg@16: std::cout << "spouštím program LED Displej" << std::endl; franta-hg@16: franta-hg@16: bool hodnoty[] = {1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}; franta-hg@37: zapisSeriove(hodnoty, sizeof(hodnoty)); franta-hg@16: } franta-hg@16: franta-hg@37: void zapisSeriove(bool hodnoty[], int n) { franta-hg@37: for (int i = 0; i < n; i++) { franta-hg@16: zapisData(hodnoty[i]); franta-hg@16: cekej(1); franta-hg@16: zapisClock(true); franta-hg@16: cekej(1); franta-hg@16: zapisClock(false); franta-hg@16: cekej(1); franta-hg@16: std::cout << "---" << std::endl; franta-hg@16: } franta-hg@37: std::cout << "vypsáno hodnot: " << n << std::endl; franta-hg@16: } franta-hg@16: franta-hg@37: /** franta-hg@37: * TODO: použít jiné než datové piny (tam lze zapsat jen celý bajt najednou) franta-hg@37: */ franta-hg@16: void zapisData(bool hodnota) { franta-hg@16: std::cout << "DATA = " << hodnota << std::endl; franta-hg@16: if (hodnota) { franta-hg@37: // TODO: zapsat na LPT (a nevymazat CLOCK) franta-hg@16: } else { franta-hg@37: // TODO: zapsat na LPT (a nevymazat CLOCK) franta-hg@16: } franta-hg@16: } franta-hg@16: franta-hg@37: /** franta-hg@37: * franta-hg@37: */ franta-hg@16: void zapisClock(bool hodnota) { franta-hg@16: std::cout << "CLOCK = " << hodnota << std::endl; franta-hg@16: if (hodnota) { franta-hg@37: // TODO: zapsat na LPT (a nevymazat DATA) franta-hg@16: } else { franta-hg@37: // TODO: zapsat na LPT (a nevymazat DATA) franta-hg@16: } franta-hg@16: } franta-hg@16: franta-hg@37: /** franta-hg@37: * Čeká zadaný čas v mikrosekundách. franta-hg@37: * Je možné zpomalit konstantou BRZDA. franta-hg@37: */ franta-hg@16: void cekej(int mikroSekund) { franta-hg@16: usleep(mikroSekund*BRZDA); franta-hg@16: } franta-hg@16: