Witam mam problem z komendą waitms w bascomie . Napisałem krótki programik dla testu który liczy od 0 do 9-ciu i z komendą wait wszystko jest ok a gdzy zmienie na waitms wyświetlacze pokazują mi tylko zera ? Przeryłem trochę forum i nikt nic konkretnie nie napisał na ten temat. z helpa wynika ze przy użyciu timer czasy mogą się wydłużyć a u mnie tak wygląda jakby procek zwis.
oto programik:
oto programik:
'$sim
$regfile = "m8def.dat"
$crystal = 8000000
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
'Config Pinc.5 = Output
Config Pinb.0 = Output 'w1
Config Pinb.1 = Output 'w2
Config Pinb.2 = Output 'w3
Config Pinb.3 = Output 'w4
Config Pinb.4 = Output
Config Portd = Output '7seg+kropka
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim Nr_wysw As Byte
Dim Kr1 As Bit
Dim Kr2 As Bit
Dim Kr3 As Bit
Dim Kr4 As Bit
Dim Kr5 As Bit
Dim X As Byte
W1 Alias Portb.0
W2 Alias Portb.1
W3 Alias Portb.2
W4 Alias Portb.3
W5 Alias Portb.4
Declare Sub Pobr_znaku(cyfra As Byte)
Config Timer0 = Timer , Prescale = 256
On Timer0 Mult_wysw
Enable Interrupts
Enable Timer0
Load Timer0 , 125
Set Kr1
Set Kr2
Set Kr3
Set Kr4
Set Kr5
Do
For X = 0 To 9
A = X
B = X
C = X
D = X
E = 2
Wait 1
Next X
Loop
End
Sub Pobr_znaku(cyfra As Byte)
If Cyfra < 15 Then
Portd = Lookup(cyfra , Kody7seg)
Else
Portd = 0
End If
End Sub
Mult_wysw:
Load Timer0 , 125
Set W1
Set W2
Set W3
Set W4
Set W5
Select Case Nr_wysw
Case 0:
Call Pobr_znaku(a)
Portd.7 = Kr1
Reset W1
Case 1:
Call Pobr_znaku(b)
Portd.7 = Kr2
Reset W2
Case 2:
Call Pobr_znaku(c)
Portd.7 = Kr3
Reset W3
Case 3:
Call Pobr_znaku(d)
Portd.7 = Kr4
Reset W4
Case 4:
Call Pobr_znaku(e)
Portd.7 = Kr5
Reset W5
End Select
Incr Nr_wysw
If Nr_wysw = 5 Then
Nr_wysw = 0
End If
Return
Kody7seg:
Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001,
Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000,
Data &B10000110 , &B11111111 , &B01000110 , &B01111001

