Witam mam problem z bascomem 1.11.9.5 i nie wiem czy to wina kompa czy programu no i niestety niedziała tak jak powinien jest to woltomierz jeśli by ktoś nie wiedział
po podłączeniu +5 V do wejścia adc0 ma wskazywać 29,9 a jeśli zamiast +5 będzie masa to na wyświetlaczu powinno wyskoczyć 0,0 jeśli ma ktoś dobre chęci i płytkę testowa był bym wdzięczny za sprawdzenie czy u niego hula
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd = Output ' segment a,b,c,d,e,f,g,h
Config Pinb.1 = Output 'Tranzystor 1 pierwszy wyswietlacz
Config Pinb.2 = Output ' Tr2 Drugiego Wyswietlacza
Config Pinb.3 = Output 'Tr3 trzeciego wyswietlacza
Config Timer0 = Timer , Prescale = 256
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Declare Sub Pobr_znak(cyfra As Word)
On Timer0 Multi
Dim A As Word 'zmienna setek
Dim B As Word 'zmienna dziesiatek
Dim C As Word 'zmienna jednosci
Dim Z As Word
Dim D As Byte
Dim V As Single
Dim Wart_ac As Word
Dim Nr_wys As Byte
Dim Kr1 As Bit
Dim Kr2 As Bit
Dim Kr3 As Bit
W1 Alias Portb.1
W2 Alias Portb.2
W3 Alias Portb.3
Gosub Demo 'demo wyswietlacza
Enable Interrupts
Enable Timer0
Load Timer0 , 210
Start Adc
Set Kr1
Set Kr3
Do
Wart_ac = Getadc(0) 'pomiar napiecia
V = Wart_ac * 0.2929
Waitms 100
Z = V
A = Z \ 100
B = Z Mod 100
B = B \ 10
C = Z Mod 10
Loop
End
Sub Pobr_znak(cyfra As Word)
If A = 0 Then A = 10
If Cyfra < 10 Then
Portd = Lookup(cyfra , Kod7)
Else
Portd = &B11111111 'wygaszenie wyswietlacza gdy a =0
End If
End Sub
Multi:
Load Timer0 , 210
Set W1
Set W2
Set W3
Select Case Nr_wys
Case 0:
Call Pobr_znak(a)
Portd.7 = Kr1
Reset W1
Case 1:
Call Pobr_znak(b)
Portd.7 = Kr2
Reset W2
Case 2:
Call Pobr_znak(c)
Portd.7 = Kr3
Reset W3
End Select
Incr Nr_wys
If Nr_wys = 3 Then
Nr_wys = 0
End If
Return
Demo:
Reset W1
Reset W2
Reset W3
Portd = &B11111110
For D = 1 To 8
Waitms 100
Rotate Portd , Left
Next D
Return
Kod7:
Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001,
Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000