Mam z tym taki mały problemik
Otóż wcześniej stosowałem przeliczanie z dodanym T = makebcd(t) po T = T /10 i temperatura była zawyżana ale wyświetlana dobrze na wyświetlaczach. Gdy osunąłem ten wpis temperatura jest rzeczywista, ale powyżej 20st tylko liczba po przecinku jest wyświetlana ok, natomiast dziesiątki zostają 1 a jedności wariują. Coś pominąłem ?
Otóż wcześniej stosowałem przeliczanie z dodanym T = makebcd(t) po T = T /10 i temperatura była zawyżana ale wyświetlana dobrze na wyświetlaczach. Gdy osunąłem ten wpis temperatura jest rzeczywista, ale powyżej 20st tylko liczba po przecinku jest wyświetlana ok, natomiast dziesiątki zostają 1 a jedności wariują. Coś pominąłem ?
$regfile = "attiny2313.DAT"
$crystal = 8000000
Config Portd = Output
'Config Porta = Output
Config Portb = Output
Config Timer0 = Timer , Prescale = 256
On Timer0 Mult_wysw
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
Dim Nr_wysw As Byte
W1 Alias Portd.5
W2 Alias Portd.4
W3 Alias Portd.3
W4 Alias Portd.2
W5 Alias Portd.1
W6 Alias Portd.0
Declare Sub Odcz
Config 1wire = Portd.6
Dim Odczyt(2) As Byte
Dim Adres5(8) As Byte
Dim Adres6(8) As Byte
Dim M As Byte
Dim T As Integer , Przecinek As Integer
Dim T2 As Integer
1wreset
Adres5(1) = 1wsearchfirst()
Adres6(1) = 1wsearchnext()
Enable Interrupts
Enable Timer0
Load Timer0 , 94
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Do
Disable Interrupts
1wreset
1wwrite &H55
1wwrite Adres5(1) , 8
1wwrite &HBE
Odczyt(1) = 1wread(2)
Enable Interrupts
Gosub Odcz
Disable Interrupts
1wreset
1wwrite &H55
1wwrite Adres5(1) , 8
1wwrite &H44
Enable Interrupts
Waitms 750
A = T
B = T2
C = Przecinek
Disable Interrupts
1wreset
1wwrite &H55
1wwrite Adres6(1) , 8
1wwrite &HBE
Odczyt(1) = 1wread(2)
Enable Interrupts
Gosub Odcz
Disable Interrupts
1wreset
1wwrite &H55
1wwrite Adres6(1) , 8
1wwrite &H44
Enable Interrupts
Waitms 750
D = T
E = T2
F = Przecinek
Loop
End
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Sub Odcz:
T = Makeint(odczyt(1) , Odczyt(2))
T = T * 10
T = T / 16
Przecinek = T Mod 10
T = T / 10
T2 = T And &B00001111
Shift T , Right , 4
Return
End Sub
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Rem * * * * * * * * * * * * * * * * * * *
Mult_wysw:
Load Timer0 , 50
Set W1
Set W2
Set W3
Set W4
Set W5
Set W6
'Set Porta.1
Select Case Nr_wysw
Case 0:
Portb = Lookup(a , Kody7seg )
Reset W1
Case 1:
Portb = Lookup(b , Kody7seg )
Reset W2
'Reset Porta.1
Case 2:
Portb = Lookup(c , Kody7seg )
Reset W3
Case 3:
Portb = Lookup(d , Kody7seg )
Reset W4
Case 4:
Portb = Lookup(e , Kody7seg )
Reset W5
'Reset Porta.1
Case 5:
Portb = Lookup(f , Kody7seg )
Reset W6
End Select
Incr Nr_wysw
If Nr_wysw = 6 Then
Nr_wysw = 0
End If
Return
Kody7seg:
Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 255 , 239 , 64