pierwszy program w bascomie

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
e-11
-
Posty: 12
Rejestracja: 20 wrz 2005, 20:52

pierwszy program w bascomie

Post autor: e-11 » 12 mar 2006, 15:32

Chciałem spróbować programowania mikrokontrolerów w Bascomie zacząłem od sterownika kolektora słonecznego, bo taką mam potrzebę . Chciałem przedstawić pod ogólną krytykę znawców tematu mikrokontrolerów swoje wypociny. Przedstawiam część kodu do obsługi czterech klawiszy. Są to „Enter”; „Esc”; ”Góra”; ”Dół”. Przyciskami góra-dół wybieram daną zmienną z menu i enterem ją akceptuje ,następnie przyciskami góra- dół zmieniam jej wartość i enterem akceptacja, gdyby mi się coś odwidziało wychodzę
Esc-tem bez zapisywania nowej wartości. Na symulatorze to chodzi tylko Panowie podpowiedzcie co z tym zrobić aby to może zminimalizować albo coś uprościć . Dopiero się uczę i na pewno popełniłem sporo błędów ale może coś poprawicie.
Kod:

Kod: Zaznacz cały

Config Lcd = 16 * 2 
Deflcdchar 0 , 231 , 231 , 231 , 224 , 224 , 224 , 224 , 224       'deklaracja znaku sytopni 
Pompa Alias P0.0                                              ' Sterowanie Pompą Glówną 
Cyrkulacja Alias P0.1                                         'sterwanie pompą cyrkulacyną 
Alarm Alias P0.2                                              'wyjście alarmu 
Enter Alias P0.3                                              'przcik enter 
Esc Alias P0.4                                                'Przycik kasuj 
Góra Alias P0.5                                               'przycik plus 
Dól Alias P0.6                                                'przycik minus 
Zawórzbiornika Alias P1.2 
Zawórogrzewacza Alias P1.3 
Dim Tk As Byte                                                'temperatura kolektra 
Dim Tz As Byte                                                'temperatura zbornika 
Dim Delta As Byte                                             'histereza zalączania pompy 
Dim P As Byte                                                 'zmienna pomocnicza do obslugi klawiszy 
Dim J As Byte                                                 'zminna pomocnicza do nastaw 
Dim Tmin As Byte                                              't minimalna po której może pracować pompa 
Dim Tmax As Byte                                              't max po której pompa musi byćwylączona 
Config 1wire = P0.7 
P0 = 255                                                      'ustawienie portu dla bezpieczeństwa na starcie 
Tmax = 80 
Tmin = 50 
Delta = 3 
Cls 
Do 
Debounce Enter , 0 , Obslugaklawiszy , Sub                    'skok po naiśnieciu przycisku 
Debounce Esc , 0 , Obslugaklawiszy , Sub 
Debounce Góra , 0 , Obslugaklawiszy , Sub 
Debounce Dól , 0 , Obslugaklawiszy , Sub 

Lcd "ZBIORNIK= " ; Tz ; Chr(0) ; "C"                          ' normalnie wyświetlana temperatura 
Lowerline 
Lcd "KOLEKTOR= " ; Tk ; Chr(0) ; "C   " 

 Loop 

Obslugaklawiszy: 
Cls 
Do 
Print P                                                       'jeśli nacisniety esc powrót do programu glownego 
If Esc = 0 Then                                               'zmienna p przyjmuje zero 
P = 0 
Set Esc 
Cls 
Return 
End If 
If Góra = 0 Then                                              ' zwiększamu lub zmniejszamy zmienną pomocniczą 
Set Góra 
Incr P 
If P = 5 Then                                                 'warunki aby P chodzila w petli od 1 do 4 
P = 1 
End If 
Elseif Dól = 0 Then 
Set Dól 
Decr P 
If P = 0 Or P = 255 Then 
P = 4 
End If 
End If 
Select Case P 
Case 1 : 
 Cls 
 Lcd "Sterowanie"                                             ' reczne sterowanie pompy 
 Lowerline 
 Lcd "Pompy" 
 If Enter = 0 Then 
 Set Enter 
 Gosub Pompa 
 End If 

Case 2: 
Cls 
 Lcd "Tmin zal pompy"                                         'pytaie o ustawienie punktu zalączenia pompy 
 Lowerline                                                    ' w zalezności od temperatury kolektora 
 Lcd "" ; Tmin ; Chr(0) ; "C Zmienic ?       "                'pompa powinna pracować dopiero pwyżej pewnej 
 If Enter = 0 Then                                            'temperatury 
 Set Enter 
 Gosub Zmianatemperaturykolektora 
 End If 

Case 3 : 
Cls                                                           'Pytanie o zmiane temperaura maxymalnej po której 
Lcd "Tmax ALARMU"                                             'pompa nie powinna pracować i wywolanie alarmu na wyjściu 
Lowerline 
Lcd "" ; Tmax ; Chr(0) ; "C Zmienic ?" 
If Enter = 0 Then 
Set Enter 
Gosub Zmianatemperaturyalarmu 
End If 

Case 4 : 
  Cls                                                         'różnica temperatur pomiędzy kolektorem 
Lcd "Roznica temperatur"                                      'a zasobnikiem aby uruchomić wymiane nagrzanego plynu 
Lowerline 
Lcd "" ; Delta ; Chr(0) ; "C zmienic ?" 
If Enter = 0 Then 
Set Enter 
Gosub Zmianaróżnicytemperatór 
End If 

End Select 
Loop 

Pompa: 
Cls 
Do 
If Pompa = 0 Then 
 Lcd "Pompa Pracuje" 
 Lowerline 
 Lcd "Wylaczyc ?     " 
  If Enter = 0 Then 
  Set Pompa 
  Set Enter 
  Cls 
  Lcd "Pompa Wylaczona" 
  Waitms 20 
  Return 
  Elseif Esc = 0 Then 
  Set Esc 
  Return 
  End If 

Else 
 Lcd "Pompa Stoi" 
 Lowerline 
 Lcd "Zalaczyc ?      " 
  If Enter = 0 Then 
  Set Enter 
  Reset Pompa 
Cls 
  Lcd "Pompa Zalaczona" 
  Waitms 20 
  Return 
  Elseif Esc = 0 Then 
  Set Esc 
  Return 
  End If 
End If 
Loop 

Zmianatemperaturykolektora:                                   'temperatura w kolktorze od której może 
 J = Tmin                                                     'pracować pompa 
 Cls 
 Do 
 Lcd "Tmin zal pompy" 
 Lowerline 
 Lcd "  " ; Tmin ; Chr(0) ; "C -zmiana" 
' Waitms 20 
 If Dól = 0 Then 
 Set Dól 
 Decr Tmin 
 Elseif Góra = 0 Then 
 Set Góra 
 Incr Tmin 
  Elseif Esc = 0 Then 
 Set Esc 
 Tmin = J 
 Return 
 Elseif Enter = 0 Then 
 Set Enter 
  Cls 
  Lcd "  ZAPISANE" 
 Return 
 End If 
   Loop 

Zmianatemperaturyalarmu:                                      'zmiana temperatury do jakiej może zagrzać się woda 
 J = Tmax                                                     'w zbiorniku 
 Cls 
 Do 
 Lcd "Tmax zbiornika" 
 Lowerline 
 Lcd "   " ; Tmax ; Chr(0) ; "C zmiana   " 
 'Waitms 20 
If Dól = 0 Then 
Set Dól 
Decr Tmax 
Elseif Góra = 0 Then 
Set Góra 
Incr Tmax 
Elseif Esc = 0 Then 
Set Esc 
Tmax = J 
Return 
Elseif Enter = 0 Then 
Set Enter 
Cls 
Lowerline 
Lcd " ZAPISANE" 
Return 
End If 
Loop 

Zmianaróżnicytemperatór: 
J = Delta 
  Cls 
Do 
Lcd "Roznica temper" 
Lowerline 
Lcd "   " ; Delta ; Chr(0) ; "C zmiana" 
'Waitms 20 
If Dól = 0 Then 
Set Dól 
Decr Delta 
Elseif Góra = 0 Then 
Set Góra 
Incr Delta 
Elseif Esc = 0 Then 
Set Esc 
Delta = J 
Return 
Elseif Enter = 0 Then 
Set Enter 
 $large 
Cls 
Lcd "  ZAPISANE" 
Return 
End If
Pzryznaje się że taki sam temat dałem na elektrodzie ale tam cisza, ani be ani me. Może tutaj ktoś coś podpowie.

Awatar użytkownika
Koppel
Użytkownik
Posty: 500
Rejestracja: 24 lip 2005, 18:05
Lokalizacja: Gliwice

Post autor: Koppel » 12 mar 2006, 17:07

W typowym LCD alfanumerycznym istnieje znak "stopni". Ma kod 0xDF (df - szesnastkowo). Może będzie ok?
Tak czy inaczej to drobiazg. :wink:

e-11
-
Posty: 12
Rejestracja: 20 wrz 2005, 20:52

Post autor: e-11 » 12 mar 2006, 21:35

Dzięki coś się ruszyło .Przez weekend siedziałem i poprawiałem ,doszkalałem się .Wynikiem tego jest zmniejszenie rozmiaru kodu do ok1725, teraz ma on już inną postać . Niestety robiłem to metodą prób i błędów ale coś tam już poznałem.

ODPOWIEDZ