Mictronic- programator jest właściwie kabelkiem łączącym port LPT z płytką.
Korzystam z takiej płytki -
https://elportal.pl/pdf/k10/84_13.pdf
Teraz jakoś udało mi się wgrać gotowy program z kursu, wić przyczyna problemu chyba znikła.
Kayron- tak masz rację jestem początkujący i dlatego właśnie tu piszę żeby znaleźć przyczynę. Wiem że błędy moje mogą być dla Was śmieszne ale trochę wyrozumiałości. Ciekawe czy Wam na początku też wszystko wychodziło.
Staram się iść według kursu MOŁ a tam w wielu programach, np stopera jest pusta nieskończona pętla, a całość programu pod obsługą przerwania.
Czy mógłbyś poprawić mi program albo dać jeszcze jakieś wskazówki bo program dalej odmawia posłuszeństwa.
przykład listingu jednego z ćwiczeń (pusta pętla)
Kod: Zaznacz cały
'C015a Bardzo prosty stoper 0,1-sekundowy z etykietami
Dim Dziesek As Byte , Sekjed As Byte , Sekdzies As Byte , Minjed As Byte
Dim 100ms As Byte , Ktorywysw As Byte , Licz As Bit
Config Portb = 255 : Portb = &B11111111 : Config Portd = &B1111100 : Portd = &B1111111
Config Timer0 = Timer , Prescale = 64 : Enable Interrupts : Enable Timer0
Dziesek = 0 : Sekjed = 0 : Sekdzies = 0 : Minjed = 0
On Timer0 Co4ms
Do : Loop : End 'to jest główny program - pusta nieskończona pętla
Co4ms: 'procedura obsługi przerwania od Timera0 wykonywana co 4ms
Timer0 = 6 'załaduj do Timera0,żeby zliczył 250(256-6)impulsów
If Pind.0 = 0 Then Licz = 1 'sprawdź stan S1 i ewentualnie rozpocznij zliczanie czasu
If Pind.1 = 0 Then Licz = 0 'sprawdź stan S2 i ewentualnie zakończ zliczanie czasu
If Licz = 1 Then Gosub Zwiekszlicznik 'tylko wtedy, gdy stoper ma liczyć czas
Gosub Obsluzwyswietlacz 'zawsze co 4ms
Return 'koniec procedury obsługi przerwania
Zwiekszlicznik:
Incr 100ms 'co 4ms zwiększ wartość licznika o nazwie 100ms
If 100ms = 25 Then 'skróc cykl licznika 100ms właśnie do 100ms
100ms = 0 'czyli 0,1 sekundy
Incr Dziesek 'zwiększ stan licznika dziesiatych części sekundy
If Dziesek = 10 Then 'ten licznik liczy do dziesieciu
Dziesek = 0 'czyli cykl trwa 1 sekundę
Incr Sekjed 'co 1 sekundę
If Sekjed = 10 Then
Sekjed = 0 'co 10 sekund
Incr Sekdzies 'zwiększ stan licznika dziesiatek sekund
If Sekdzies = 6 Then 'liczy do 6 bo minuta ma 60 sekund
Sekdzies = 0
Incr Minjed 'co 60 sekund zwiększ stan licznika minut
If Minjed = 10 Then Minjed = 0 '0...9 minut
End If : End If : End If : End If : Return
Obsluzwyswietlacz:
Incr Ktorywysw : If Ktorywysw = 4 Then Ktorywysw = 0 : Portd = &B1111111
Select Case Ktorywysw ' obsługa wyświetlacza
Case 0: 'wyświetl zawartość licznika jednostek
Portb = Lookup(dziesek , Tabela) : Portd.3 = 0
Case 1: 'wyświetl zawartość licznika dziesiątek
Portb = Lookup(sekjed , Tabela) : Portd.4 = 0 : Portb.7 = 0
Case 2: 'wyświetl zawartość licznika setek
Portb = Lookup(sekdzies , Tabela) : Portd.5 = 0
Case 3: 'wyświetl zawartość licznika tysięcy
Portb = Lookup(minjed , Tabela) : Portd.6 = 0 : Portb.7 = 0
End Select : Return
Tabela:
Data 192 , 249 , 164 , 176 , 153 , 146 ,