Witam,
Napisałem sobie program do obsługi 2 wyświetlaczy 7segmentowcyh (połączonych przez 4543)
Taki kod mam:
Wszystko działa jak należy.
Na jednym wyświetlaczu pokazuje 6,
a na drugim 3
Problem jednak pojawia się w pętli do Loop
Jeśli usunę wait 1, to program dalej działa.
Jeśli zamienię wait 1 na np. wait 5 to program dalej działa (pokazuje 36)
Ale jeśli zamiast rozkazu wait, dam rozkaz waitms i obojętnie jaką liczbę,(np. waitms 999) to na wyświetlaczu pojawia się "00"
Dlaczego tak się dzieje?
Dam może screena aby każdy zrozumiał o co mi chodzi:
Dodam, że kod pochodzi z książki pana Marcina Wiazania (tylko jest zmodyfikowany dla 2 wyświetlaczy)
Napisałem sobie program do obsługi 2 wyświetlaczy 7segmentowcyh (połączonych przez 4543)
Taki kod mam:
$regfile = "m8def.dat"
$crystal = 8000000
Config Pinc.0 = Output
Config Pinc.1 = Output
Config Pinc.2 = Output
Config Pinc.3 = Output
Config Pinb.0 = Output
Config Pind.7 = Output
Config Timer0 = Timer , Prescale = 256
Declare Sub Zapis_cyfry(cyfra As Byte)
On Timer0 Mult_wysw
Dim A As Byte , B As Byte , I As Byte
Dim Nr_wysw As Byte
W2 Alias Portb.0
W1 Alias Portd.7
Enable Interrupts
Enable Timer0
Timer0 = 6
Do
A = 3
B = 6
Wait 1
Loop
End
Sub Zapis_cyfry(cyfra As Byte)
Portc = Cyfra
End Sub
Mult_wysw:
Timer0 = 6
Set W1
Set W2
Select Case Nr_wysw
Case 0:
Call Zapis_cyfry(a)
Reset W1
Case 1:
Call Zapis_cyfry(b)
Reset W2
End Select
Incr Nr_wysw
If Nr_wysw = 2 Then Nr_wysw = 0
Return
Wszystko działa jak należy.
Na jednym wyświetlaczu pokazuje 6,
a na drugim 3
Problem jednak pojawia się w pętli do Loop
Do
A = 3
B = 6
Wait 1
Loop
EndJeśli usunę wait 1, to program dalej działa.
Jeśli zamienię wait 1 na np. wait 5 to program dalej działa (pokazuje 36)
Ale jeśli zamiast rozkazu wait, dam rozkaz waitms i obojętnie jaką liczbę,(np. waitms 999) to na wyświetlaczu pojawia się "00"
Dlaczego tak się dzieje?
Dam może screena aby każdy zrozumiał o co mi chodzi:
Dodam, że kod pochodzi z książki pana Marcina Wiazania (tylko jest zmodyfikowany dla 2 wyświetlaczy)