c++/led-displej/led-displej.cpp
author František Kučera <franta-hg@frantovo.cz>
Tue, 09 Sep 2014 16:01:58 +0200
changeset 24 e5ba2908aff1
parent 16 131d2652b241
child 37 0a06481eec13
permissions -rw-r--r--
RAIIDemo: výpis potlačených výjimek + vypišChybu(e);
     1 #include <stdlib.h>
     2 #include <iostream>
     3 
     4 /**
     5  * Slouží k ovládání LED displeje pomocí řadiče M5482 připojeného na LPT port.
     6  * Používají se jen dva piny: DATA a CLOCK signál.
     7  */
     8 
     9 /**
    10  * = 1 → normální běh
    11  * > 1 → zpomalené pro ladění
    12  */
    13 const int BRZDA = 100000;
    14 
    15 void zapisSeriove(bool hodnoty[]);
    16 void zapisData(bool hodnota);
    17 void zapisClock(bool hodnota);
    18 void cekej(int mikroSekund);
    19 
    20 int main() {
    21 	std::cout << "spouštím program LED Displej" << std::endl;
    22 	
    23 	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};
    24 	
    25 	std::cout << "velikost pole: " << sizeof(hodnoty) << std::endl; // vypíše 36
    26 	
    27 	zapisSeriove(hodnoty);
    28 }
    29 
    30 void zapisSeriove(bool hodnoty[]) {
    31 	std::cout << "velikost pole ve funkci: " << sizeof(hodnoty) << std::endl; // vypíše 8
    32 	for (int i = 0; i < sizeof(hodnoty); i++) {
    33 		zapisData(hodnoty[i]);
    34 		cekej(1);
    35 		zapisClock(true);
    36 		cekej(1);
    37 		zapisClock(false);
    38 		cekej(1);
    39 		std::cout << "---" << std::endl;
    40 	}
    41 }
    42 
    43 void zapisData(bool hodnota) {
    44 	std::cout << "DATA  = " << hodnota << std::endl;
    45 	if (hodnota) {
    46 		// TODO: zapsat na LPT
    47 	} else {
    48 		// TODO: zapsat na LPT
    49 	}
    50 }
    51 
    52 void zapisClock(bool hodnota) {
    53 	std::cout << "CLOCK = " << hodnota << std::endl;
    54 	if (hodnota) {
    55 		// TODO: zapsat na LPT
    56 	} else {
    57 		// TODO: zapsat na LPT
    58 	}
    59 }
    60 
    61 void cekej(int mikroSekund) {
    62 	usleep(mikroSekund*BRZDA);
    63 }
    64