Cześć
Układ do którego jest napisany program ma za zadanie:
1. sterować prędkością obrotową silnika przy wykorzystaniu PWM i dwóch przycisków regulujących wypełnienie PWM.
2. zliczać impulsy z transoptora i docelowo wyświetlać wartości na LCD, ale narazie (w kodzie który podaje) miga diodą tyle razy ile bylo impulsów.
Proszę o sprawdzenie poprawności zapisu, jeśli to konieczne wprowadzenie poprawek i ich omówienie.
Z góry bardzo dziękuję za pomoc.
Układ do którego jest napisany program ma za zadanie:
1. sterować prędkością obrotową silnika przy wykorzystaniu PWM i dwóch przycisków regulujących wypełnienie PWM.
2. zliczać impulsy z transoptora i docelowo wyświetlać wartości na LCD, ale narazie (w kodzie który podaje) miga diodą tyle razy ile bylo impulsów.
Proszę o sprawdzenie poprawności zapisu, jeśli to konieczne wprowadzenie poprawek i ich omówienie.
$regfile = "m8def.dat"
$crystal = 1000000
Config Timer2 = Pwm2 , Pwm2 = 8 , Compare 2 Pwm2 = Clear Down , Compare 2 Pwm2 = Disconnect , Prescale = 64
'---transoptor---
Config Timer1 = Timer , Prescale = 64
Config Timer0 = Counter , Edge = Rising
'----------------
Config Pinb.2 = Input
Config Pinb.4 = Input
Config Pinb.3 = Output
'---transoptor---
Config Pinb.1 = Output
'----------------
Dim P As Byte
S1 Alias Pinb.4
S2 Alias Pinb.2
Set Portb.4
Set Portb.2
Timer2 = 0
'---transoptor---
On Timer1 Odmierz_3s
Dim Licz As Byte , I As Byte
Enable Interrupts
Enable Timer1
Start Timer1
Timer1 = 65535 - 15625
Do
'---pwm---
If S1 = 0 Then
Waitms 25
If S1 = 0 Then
Incr P
Cls
Lcd P
If P = 0 Then
P = 255
End If
Timer2 = P
Waitms 20
End If
End If
If S2 = 0 Then
Waitms 25
If S2 = 0 Then
Decr P
Cls
Lcd P
If P = 255 Then
P = 0
End If
Timer2 = P
End If
Waitms 20
End If
'---------
Loop
End
Odmierz_3s:
Timer1 = 65535 - 15625
Incr Licz
If Licz = 3 Then
Stop Timer1
Licz = 0
While I < Tcnt0
Toggle Portb.1
Waitms 100
Toggle Portb.1
Waitms 100
Incr I
Lcd P
Wend
I = 0
Timer1 = 65535 - 15625
Start Timer1
Tcnt0 = 0
End If
ReturnZ góry bardzo dziękuję za pomoc.