Drogi kolego
@pohybel21 to powinno być na początku opisu problemu bo oszczędziło by dyskusji o problemach sprzętowych.
pohybel21 napisał: Drogi panie kolego zegar został sprawdzony z chipem oryginalnym wsadem i działa,
Zbyt duże zaufanie do AI - na proste pytania często odpowiada poprawnie ale nietypowe problemy to jeszcze trochę zajmą AI.
>>21128289 pohybel21 napisał: jeżeli chodzi o to czemu nie może poprawnie wykonać testu wyświetlaczy to problem polega na tym, że większość oprogramowań jest albo na arduino z innym mikrokontrolerem, albo dla wyświetlaczy led i zazwyczaj w innej konfiguracji,
No i tu należy obejrzeć kod i zrozumieć jego działanie a potem pomyśleć o różnica i wprowadzić zmiany lub poszukać kodu bliższego twojej konfiguracji hardware. Jeżeli masz zegar na LED 7 segmentowych i odpowiedni dekoder scalony to też mu podajesz 4 bity BCD jak do kd155id i program nie wie czy steruje NIXIE czy LED.
pohybel21 napisał: a niestety chiński STC ma kilka haczyków na przykład nie można używać słowa data, bo jest zarezerwowane
To raczej nie STC ale narzędzia do kompilacji oraz ich dostosowanie do specyficznej architektury pochodzącej z 8051.
Warto też zrozumieć działanie układu - to kd155id jest podłączony do rejestru przesuwnego 74hc595 a nie odwrotnie i to z oszczędności wyjść procesora wynika stosowanie rejestru przesuwnego - na dwie cyfry potrzebujesz 8 wyjść a tak tylko 3 do sterowania rejestrem.
pohybel21 napisał: Bitowa operacja XOR z 0xF jest używana do odwrócenia bitów, ponieważ K155ID1 działa ze wspólną katodą, co oznacza, że poziomy logiczne są odwrócone.
To jest jakaś bzdura. Co ma odwróconą logikę? Sygnały sterujące lampą? Jaki masz na nie wpływ? Ten układ aktywuje jeden sygnał do lampy na podstawie kodub4 bitowego na wejściu i ten kod ni jest zanegowany a ja zanegujesz kod liczby 7 to dostaniesz 8, jak 3 to dostaniesz 0xC czyli dziesiętnie 12 więcz układ nie aktywuje wyjścia na lampę.
Jeżeli chodzi o cytowanie programu to proszę używa odpowiednich funkcji edytora bo inaczej giną wszystkie wcięcia i spada czytelność kodu.
Funkcję sterujące rejestrem przesuwnym są błędne albo żle użyte. Funkcje transmitują cały bajt (8 bitów) a Ty podajesz poszczególne cyfry czyli 4 bity. Albo poskładaj w bajcie obie cyfry razem i zawołaj tylko raz funkcję dla każdej pary cyfr, albo zmień funkcję i przesuwaj tylko 4 młodsze bity.