Ahoj vsem,
a ted trosku jiny problem. Mam nejake cislo, nebo znak v char a potrebuju to hodit na port, rekneme A. Na hornich 4 linkach portu A ( 7/4 ) mam pripojeny display, ktery komunikuje tak, ze nejdriv musim poslat horni 4 bity prikazu (nebo znaku) a v dalsi vlne musim poslat dolni 4 bity. Chtel jsem udelat neco takoveho, ale nefunguje mi to.
RS = 1; // vybiram datovy registr (toto je irelevantni pro muj problem)
char znak = ‘A’; // toto chci poslat
E = 1; // vysilani hornich 4 bitu
PORTA = znak; // vlozim cely znak (cislo do portu A, jelikoz jsou vodice pripojeny
// na piny 7/4 tak se uplatni pouze hornich 4 bitu.)
E = 0; // kontroler na displaji prijme data na linkach
E = 1; // vysilani dolnich 4 bitu
PORTA = (znak<<4); // posun 4 nejnizsich bitu na nejvyssi
E = 0;
Misto toho musim udelat neco takoveho:
RS = 1; // vybiram datovy registr
char znak = ‘A’; // toto chci poslat
E = 1; // vysilani hornich 4 bitu promenne znak
PORTA.F7 = znak.F7; // 7. bit promene “znak” priradim 7 bitu portu A
PORTA.F6 = znak.F6; // podobne
PORTA.F5 = znak.F5; // atd.
PORTA.F4 = znak.F4; // jeste jednou
E = 0; // kontroler na displaji prijme data na linkach
E = 1; // vysilani dolnich 4 bitu promenne znak
PORTA.F7 = znak.F3; // 3. bit promene “znak” priradim 7 bitu portu A
PORTA.F6 = znak.F2; // podobne
PORTA.F5 = znak.F1; // atd.
PORTA.F4 = znak.F0; // 0. bit promene “znak” priradim 4 bitu portu A
E = 0;
Poslednim uvedenym zpusobem to funguje, tim predchozim ne. Otazka je proc?