Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

program w bascomie

MrÓWeQ
-
-
Posty:3
Rejestracja:27 lut 2006, o 14:45
Lokalizacja:Katowice
program w bascomie

Postautor: MrÓWeQ » 27 lut 2006, o 14:54

siema :562: , mam problem z kodem bascoma, dali nam w budzie zadanie do stworzenia programu do obslugi automatu do batonow, gdzie automacik bedzie wydawal reszte z wzuconej kasy, ma byc 5 rodzajow batonikow w roznych cenach, automat ma lykac monety tak jak zwylky automat do batonow :] :roll: :roll:
tuttaj wkleje czesc kodu jaki napisalem ale jakos mi to nie specjalnie dziala :p nie wiem dlaczego a muszeto zaliczyc bo mnie :573: ukiapa na semestr :( moge liczyc na wasza pomoc??

Kod: Zaznacz cały

$large On Int0 Wrzucono_monete On Int1 Wcisnieto_przycisk Enable Interrupts Enable Int0 Enable Int1 Declare Sub Wydaj_reszte 'P3.0 - P3.5 - (wejscia) 'P1.0 - P1.5 - (wyjscia) Dim Kasa As Byte Dim Temp1 As Word Dim Temp2 As Byte Dim Temp3 As Byte P3 = 0 Temp3 = 0 Config Lcd = 16 * 2 Cls P1 = 0 Lcd "Wybierz baton" Do If Temp3 > 0 Then If Temp3 = 1 Then Temp1 = Kasa / 10 Temp2 = Kasa Mod 10 Cls Lcd "Kwota: " ; Temp1 ; "," ; Temp2 ; "0 zl" End If Decr Temp3 End If Delay Loop Wrzucono_monete: P1 = 0 ' 10 gr If P3.0 = 1 Then Kasa = Kasa + 1 End If ' 20 gr If P3.1 = 1 Then Kasa = Kasa + 2 End If ' 50 gr If P3.2 = 1 Then Kasa = Kasa + 5 End If ' 1 zl If P3.3 = 1 Then Kasa = Kasa + 10 End If ' 2 zl If P3.4 = 1 Then Kasa = Kasa + 20 End If ' 5 zl If P3.5 = 1 Then Kasa = Kasa + 50 End If Temp1 = Kasa / 10 Temp2 = Kasa Mod 10 Cls Lcd "Kwota: " ; Temp1 ; "," ; Temp2 ; "0 zl" Return Wcisnieto_przycisk: ' wyzerowanie If P3.5 = 1 Then Call Wydaj_reszte End If ' Snikers - 1,00 zl If P3.0 = 1 Then If Kasa >= 10 Then P1 = 0 Cls Lcd "Snikers" Waitms 300 Cls Lcd "eat that" P1 = 0 Set P1.7 Set P1.0 Waitms 100 P1 = 0 Delay ' wydawanie kasy Kasa = Kasa - 10 Call Wydaj_reszte Else Temp1 = 10 - Kasa Temp2 = Temp1 Mod 10 Temp1 = Temp1 / 10 Cls Lcd "Brakuje: " ; Temp1 ; "," ; Temp2 ; "0 zl!" Temp3 = 10 End If End If ' Mars - 1,00 zl If P3.1 = 1 Then If Kasa >= 10 Then P1 = 0 Cls Lcd "Mars" Waitms 300 Cls Lcd "eat that" ' wyrzucanie batonow P1 = 0 Set P1.7 Set P1.1 Waitms 100 P1 = 0 Delay 'wydawanie kasy Kasa = Kasa - 10 Call Wydaj_reszte Else Temp1 = 10 - Kasa Temp2 = Temp1 Mod 10 Temp1 = Temp1 / 10 Cls Lcd "Brakuje: " ; Temp1 ; "," ; Temp2 ; " 0 zl!" Temp3 = 10 End If End If ' Milkiway 1,50 zl If P3.2 = 1 Then If Kasa >= 15 Then P1 = 0 Cls Lcd "Milkiway" Waitms 300 Cls Lcd "eat that" ' wyrzucanie batonow P1 = 0 Set P1.7 Set P1.2 Waitms 100 P1 = 0 Delay ' wydawanie kasy Kasa = Kasa - 15 Call Wydaj_reszte Else Temp1 = 15 - Kasa Temp2 = Temp1 Mod 10 Temp1 = Temp1 / 10 Cls Lcd "Brakuje: " ; Temp1 ; "," ; Temp2 ; "0 zl!" Temp3 = 10 End If End If ' Kitkat - 1,50 zl If P3.3 = 1 Then If Kasa >= 15 Then P1 = 0 Cls Lcd "kitkat" Waitms 300 Cls Lcd "udlaw sie" ' wyrzucanie batonow P1 = 0 Set P1.7 Set P1.3 Waitms 100 P1 = 0 Delay ' wydawanie kasy Kasa = Kasa - 15 Call Wydaj_reszte Else Temp1 = 15 - Kasa Temp2 = Temp1 Mod 10 Temp1 = Temp1 / 10 Cls Lcd "Brakuje: " ; Temp1 ; "," ; Temp2 ; "0 zl!" Temp3 = 10 End If End If ' 3bit - 1,20 zl If P3.4 = 1 Then If Kasa >= 12 Then P1 = 0 Cls Lcd "3bit" Waitms 300 Cls Lcd "eat that" ' wyrzucanie batonow P1 = 0 Set P1.7 Set P1.4 Waitms 100 P1 = 0 Delay ' wydawanie kasy Kasa = Kasa - 12 Call Wydaj_reszte Else Temp1 = 12 - Kasa Temp2 = Temp1 Mod 10 Temp1 = Temp1 / 10 Cls Lcd "Brakuje: " ; Temp1 ; "," ; Temp2 ; "0 zl!" Temp3 = 10 End If End If Return Sub Wydaj_reszte P1 = 0 Temp1 = Kasa / 10 Temp2 = Kasa Mod 10 Cls Lcd "Reszta: " ; Temp1 ; "," ; Temp2 ; "0 zl" Waitms 100 P1 = 0 While Kasa > 0 Set P1.6 Temp1 = Kasa / 50 If Temp1 > 0 Then Set P1.5 Kasa = Kasa - 50 End If Temp1 = Kasa / 20 If Temp1 > 0 Then Set P1.4 Kasa = Kasa - 20 End If Temp1 = Kasa / 10 If Temp1 > 0 Then Set P1.3 Kasa = Kasa - 10 End If Temp1 = Kasa / 5 If Temp1 > 0 Then Set P1.2 Kasa = Kasa - 5 End If Temp1 = Kasa / 2 If Temp1 > 0 Then Set P1.1 Kasa = Kasa - 2 End If Temp1 = Kasa / 1 If Temp1 > 0 Then Set P1.0 Kasa = Kasa - 1 End If Waitms 200 Cls P1 = 0 Delay Wend Temp1 = Kasa / 10 Temp2 = Kasa Mod 10 Cls Lcd "Kwota: " ; Temp1 ; "," ; Temp2 ; "0 zl" End Sub

Czajnik
-
-
Posty:264
Rejestracja:17 cze 2004, o 15:40
Lokalizacja:Kraków
Kontaktowanie:

Postautor: Czajnik » 5 mar 2006, o 13:33

Bez słowa opisu nie bede nawet sei zagłaebiał w logik twojego programu.... ale jesli chodzi o mój sposób na rozwiązanie problemu to olicz wrzuconą kase... odejmij cene batoniak od wrzuconej kasy a potem sprwdzaj czy mozesz wydac reszte..
wogle to tu trezba kupe zmiennych do liczneia zawarosći kasy do wydania reszty... itp. zeby to dizałao naprawde a nie było tylko szkolnym przykłądem. i napwewno nie zamkniesz sie w tych kilkudziesięciu liniach które tu napisałeś bo przecież jeszcze musisz sprawdzać zdolnosc wydania reszty... obliczyc z jakich monet je wydasz.. sprawdzić czy wrzucona kwota jeste wystarczajaca do zakupu... i tak dalej

MrÓWeQ
-
-
Posty:3
Rejestracja:27 lut 2006, o 14:45
Lokalizacja:Katowice

Postautor: MrÓWeQ » 5 mar 2006, o 14:42

a na przerwaniach by to mozna zrobic ? albo cos ?
nie mam pomyslu na to ...

Czajnik
-
-
Posty:264
Rejestracja:17 cze 2004, o 15:40
Lokalizacja:Kraków
Kontaktowanie:

Postautor: Czajnik » 5 mar 2006, o 14:52

przerwaniau to ju zmanualny problem wykonywania programu.... weź sobie najpierw kartke i naryzuj blokowy schemat co to ma robiś krok po kroku.. a potem bediesz pisał karzdy bolk programowo. Sposób bardzo prosty wręcz śmieszny.... ale jak nie mam pomysłu to zawsze tak robie.. i zawsze pomaga:)

MrÓWeQ
-
-
Posty:3
Rejestracja:27 lut 2006, o 14:45
Lokalizacja:Katowice

Postautor: MrÓWeQ » 5 mar 2006, o 16:48

zebym jeszcze potrafil tak dobrze ten jezyk, ja sie tylko tego ucze bo chce to zdac szczerze powiedziawszy ...

[ Dodano: 05-03-2006, 21:53 ]

Kod: Zaznacz cały

$large Dim Cena As Single Dim Reszta As Single Dim A As Single Dim X As Byte Dim C As String * 4 Dim R As String * 4 Dim E As String * 4 Print "Prince Polo - P1.0" Print "Snikers - P1.1" Print "Princessa - P1.2" Print "Mars - P1.4" Print "MilkyWay - P1.5" Print Print Print "0,10 zl - P3.0" Print "0,20 zl - P3.1" Print "0,50 zl - P3.2" Print "1,00 zl - P3.3" Print "2,00 zl - P3.4" Print "5,00 zl - P3.5" Print Print "Cancel - P3.7" Print "Info - P3.6" Config Lcd = 16 * 2 Batony: Cls Lcd "Wybierz batona" P1 = 0 P3 = 0 Do Waitms 10 If P3.6 = 1 Then Goto Info If P1.0 = 1 Then X = 1 Cls Lcd "Prince Polo" Cena = 1 Waitms 50 If Cena > 0 Then Goto Monety End If If P1.1 = 1 Then X = 2 Cls Lcd "Snikers" Cena = 1 Waitms 50 If Cena > 0 Then Goto Monety End If If P1.2 = 1 Then X = 3 Cls Lcd "Princessa" Cena = 1.50 C = Fusing(cena , #.##) Waitms 50 If Cena > 0 Then Goto Monety End If If P1.4 = 1 Then X = 4 Cls Lcd "Mars" Cena = 1.50 Waitms 50 If Cena > 0 Then Goto Monety End If If P1.5 = 1 Then X = 5 Cls Lcd "MilkyWay" Cena = 1.50 Waitms 50 Cls If Cena > 0 Then Goto Monety End If Loop Monety: C = Fusing(cena , #.#0) Waitms 50 Cls Lcd "Cena: " ; C ; "zl" Waitms 100 A = 0 Do If P3.7 = 1 Then If A > 0 Then Cls Lcd "Odbierz monety" Waitms 100 End If Goto Batony End If If P3.6 = 1 Then Goto Info If P3.0 = 1 Then A = A + 0.1001 If A => Cena Then Goto Wydawanie P3.0 = 0 Waitms 10 If P3.1 = 1 Then A = A + 0.2001 If A => Cena Then Goto Wydawanie P3.1 = 0 Waitms 10 If P3.2 = 1 Then A = A + 0.50 If A => Cena Then Goto Wydawanie P3.2 = 0 Waitms 10 If P3.3 = 1 Then A = A + 1.00 If A => Cena Then Goto Wydawanie P3.3 = 0 Waitms 10 If P3.4 = 1 Then A = A + 2.00 If A => Cena Then Goto Wydawanie P3.4 = 0 Waitms 10 If P3.5 = 1 Then A = A + 5.00 If A => Cena Then Goto Wydawanie P3.5 = 0 Cls C = Fusing(a , #.#0) Lcd "Wrzuciles:" ; C ; "zl" Loop End Wydawanie: P3 = 0 P3.7 = 1 Reszta = A - Cena C = Fusing(a , #.#0) R = Fusing(reszta , #.#0) Cls If Reszta < 0.09 Then Goto Bezreszty Lcd "Wrzuciles:" ; C ; "zl" Waitms 50 Cls Lcd "Reszta:" ; R ; "zl" Waitms 200 Goto Petla Petla: P3 = 0 While Reszta => 2 Reszta = Reszta - 2 P3.4 = 1 R = Fusing(reszta , #.#0) Cls Lcd "Odbierz: 2 zl" Waitms 100 P3 = 0 Waitms 50 Wend While Reszta => 1 Reszta = Reszta - 1 P3.3 = 1 R = Fusing(reszta , #.#0) Cls Lcd "Odbierz: 1 zl" Waitms 100 P3 = 0 Waitms 50 Wend While Reszta => 0.5 Reszta = Reszta - 0.5 P3.2 = 1 R = Fusing(reszta , #.#0) Cls Lcd "Odbierz: 0,50 zl" Waitms 100 P3 = 0 Waitms 50 Wend While Reszta => 0.2 Reszta = Reszta - 0.2 P3.1 = 1 R = Fusing(reszta , #.#0) Cls Lcd "Odbierz: 0,20 zl" Waitms 100 P3 = 0 Waitms 50 Wend While Reszta => 0.1 Reszta = Reszta - 0.1 P3.0 = 1 R = Fusing(reszta , #.#0) Cls Lcd "Odbierz: 0,10 zl" Waitms 100 P3 = 0 Waitms 50 Wend If Reszta <= 0.10 Then Goto Wyrzucaniebatona Goto Petla Wyrzucaniebatona: P1 = 0 Cls Lcd "Odbierz batona." P1 = 0 If X = 1 Then P1.0 = 1 End If If X = 2 Then P1.1 = 1 End If If X = 3 Then P1.2 = 1 End If If X = 4 Then P1.4 = 1 End If If X = 5 Then P1.5 = 1 End If Waitms 100 Goto Koniec Bezreszty: Cls Lcd "Brak reszty" Waitms 50 Cls Lcd "Smacznego..." End Koniec: Cls Lcd "Smacznego..." End Info: Cls Lcd "Zadanie domowe" Waitms 50 Cls Lcd "BASCOM" Waitms 50 Cls Lcd "MrOWeQ and Vasquez IVe1" Waitms 50 Goto Batony
a teraz jak z tym kodem ?

[ Dodano: 06-03-2006, 12:28 ]
to nikt mi nie pomoze ???

[ Dodano: 06-03-2006, 12:28 ]
to nikt mi nie pomoze ???

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 52 gości