Hallo,
Ich programmiere gerade mit Bascom kleinere Programme was auch bisher
gut funktioniert. Bei "größeren" wird es dann für mich schon etwas
schwieriger.
Das untenstehende Programm stellt ein Spannungsmesser dar, der von den
Ports PC0 nach einer Zeit zu PC1 geht und jeweils an den Ports die
Spannnungen misst, diese dann auch am LCD ausgibt (2 Digits)
Das funktioniert soweit auch.
Nun wollte ich zum Test, das wenn die Spannung z.B. bei Volt_2 "0.0"
oder "0.00" ist, das Portb.0 eine LED einschaltet. Das funktioniert
nicht.
Ich hab schon ein paar mal damit rumgespielt, nichts führte zum Erfolg.
Eigentlich wollte ich, das wenn Volt_2 über z.B. "5.0" ist, dass dann
die LED leuchet für eine unbegrentzte Zeit.
Für den ein oder anderen mag der Code unübersichtlich sein:
1 | $regfile = "m8adef.dat"
|
2 | $crystal = 8000000
|
3 | $hwstack = 100
|
4 | $swstack = 100
|
5 | $framesize = 100
|
6 |
|
7 |
|
8 | Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
|
9 | Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
|
10 | Config Lcd = 16 * 2
|
11 | Config Single = Scientific , Digits = 2
|
12 |
|
13 | Led1 Alias Portb.0
|
14 | Config Led1 = Output
|
15 |
|
16 | Cursor Off
|
17 |
|
18 | Const Adc_multi = 0.0048828125
|
19 | Config Adc = Single , Prescaler = Auto , Reference = Avcc
|
20 | Start Adc
|
21 | Dim Messergebnis_1 As Word
|
22 | Dim Volt_1 As Single
|
23 | Dim Messergebnis_2 As Word
|
24 | Dim Volt_2 As Single
|
25 |
|
26 |
|
27 | Declare Sub Init
|
28 | Declare Sub Text
|
29 |
|
30 | Call Init
|
31 | Wait 1
|
32 |
|
33 | '
|
34 | '************** HAUPTPROGRAMM *********************************************
|
35 | '
|
36 |
|
37 | Do
|
38 |
|
39 | Debounce Pind.0 , 1 , Taster1 , Sub
|
40 |
|
41 | Messergebnis_1 = Getadc(0)
|
42 | Volt_1 = Messergebnis_1 * Adc_multi
|
43 |
|
44 |
|
45 | Cls
|
46 |
|
47 | Locate 2 , 10
|
48 | Lcd Volt_1 ; " V"
|
49 | Locate 2 , 1
|
50 | Lcd "Batterie"
|
51 |
|
52 | Waitms 5
|
53 |
|
54 |
|
55 | Messergebnis_2 = Getadc(1)
|
56 | Volt_2 = Messergebnis_2 * Adc_multi
|
57 |
|
58 | Locate 1 , 10
|
59 | Lcd Volt_2 ; " V"
|
60 | Locate 1 , 1
|
61 | Lcd "Akku"
|
62 |
|
63 | Wait 1
|
64 |
|
65 | Loop
|
66 |
|
67 |
|
68 |
|
69 | Do
|
70 |
|
71 | If Volt_2 = 0.00 Then
|
72 | Portb.0 = 1
|
73 |
|
74 | Wait 20
|
75 | End If
|
76 |
|
77 | Loop
|
78 |
|
79 |
|
80 | '***************************************************************************
|
81 |
|
82 | Taster1:
|
83 | Call Text
|
84 | Return
|
85 |
|
86 | '***************************************************************************
|
87 |
|
88 | Sub Init
|
89 |
|
90 | Cursor Off
|
91 | Cls
|
92 | Locate 1 , 5 : Lcd "Spannung"
|
93 | Locate 2 , 5 : Lcd " Messen "
|
94 | Wait 5
|
95 | Cls
|
96 |
|
97 | End Sub
|
98 |
|
99 |
|
100 | Sub Text
|
101 |
|
102 | Cls
|
103 | Locate 1 , 1
|
104 | Lcd "Testprogramm"
|
105 | Locate 2 , 1
|
106 | Lcd "Voltmeter"
|
107 | Wait 5
|
108 |
|
109 | End Sub
|
110 |
|
111 |
|
112 | End
|