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ę

Kod C na Bascoma??? Czy to możliwe?

Dzinksu
-
-
Posty:14
Rejestracja:13 gru 2004, o 21:56
Lokalizacja:Koszalin
Kontaktowanie:
Kod C na Bascoma??? Czy to możliwe?

Postautor: Dzinksu » 16 sty 2007, o 15:14

Witam .
Czy da się przerobić kod w języku C na kod Bascoma. Są w ogóle takie kompilatory, a może to nierealne??

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 16 sty 2007, o 15:28

Jest to realne (przynajmniej dla wiekszosci przypadkow kodowych - takie zastrzezenie na wszelki wypadek).

Nie spotkalem sie z softem realizujacym cos takiego (bo i poco).

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 16 sty 2007, o 15:48

Najlepszym do tego celu "kompilatorem" jest mózg. Po prostu naucz się języka C i przełóż sobie dowolny program w C na Bascom. Korzyść będzie podwójna. Po pierwsze poznasz nowy bardzo ciekawy i użyteczny jezyk a po drugie osiągniesz swój zamierzony cel. Chociaż zamiana z C na Basic jest trochę jak przeróbka Mercedesa na Malucha - możliwa, ale czy warto?

Dzinksu
-
-
Posty:14
Rejestracja:13 gru 2004, o 21:56
Lokalizacja:Koszalin
Kontaktowanie:

Postautor: Dzinksu » 16 sty 2007, o 17:04

Dzięki za tak szybką odpowiedz.
Hmm to będzie trudne nauczyć się w parę dni C, a i bascoma ledwo co znam.
Generalnie zbudowałem układ, który ma obsługiwać LCD 2*16, 2 przekaźniki i jedno piezo. Płytka wytrawione, wszystko zamontowane, tylko że brak programu który by to obsłużył. A termin składania prac tuż tuż. Czy mogę liczyć na pomoc od Was przy pisaniu programu?
Mogę zamieścić zasadę działania i schemat ideowy. Tymczasem biore się za teoretyczne początki.

radzio
Moderator
Moderator
Posty:967
Rejestracja:13 maja 2003, o 10:33
Lokalizacja:Sosnowiec
Kontaktowanie:

Postautor: radzio » 16 sty 2007, o 17:09

A co ten układ ma robić? I dlaczego chcesz przerabiać program w C (masz gotowy w C a program masz oddać w Bascomie czy dowolnie)?

Dzinksu
-
-
Posty:14
Rejestracja:13 gru 2004, o 21:56
Lokalizacja:Koszalin
Kontaktowanie:

Postautor: Dzinksu » 16 sty 2007, o 18:30

Miałem kod w C, i był on trochę nie odpowiedni do mojego zastosowani,to znaczy zamiast LCD były ledy no i generalnie przyciski miały inną funkcję. Mało tego, wszystko było napisane pod układ Tiny2313.
Ja muszę koniecznie napisać wszystko w Baskomie (taki kaprys promotora). Troszkę mi to nie na rękę, ponieważ chciałem się nauczyć programowania w C.
Wydaje mi się że kod do mojego układu nie będzie zbyt skomplikowany.

[ Dodano: 16-01-2007, 17:33 ]
Może wypunktuję:
1. Przy włączeniu zasilania ma być słyszalny podwójny krótki sygnał, no i oczywiście jakiś powitalny napisik np: " DUZE AKWARIUM ".
2. Po 3sek. pokazuje się " NASTAW CZAS"( 1wiersz lcd), " XX MIN " (2 wiersz LCD). XX to ostatnia wybierana wartość czasu.
3. Urządzenie ma 3 przyciski
S1 (UP)- zwiększa stan licznika
S2 (Down)- zmniejsza stan licznika
S3 (Start/Stop)- przyciśnięcie na 0,2 sek - START ; przyciśnięcie na 2 sek - STOP
Poza tym przyciśnięcie równiocześnie Up i Down na 2 sek spowoduje załączenie wyjście PD7
4. Ustawiamy czas. Wciskamy S3 i licznik zlicza w dół (zakres od 1-99min ze skokiem co minutę). W tym czasie na wyświetlaczu widnieje napis " Pozostało" "(czas do końca) MIN. " jw
5. Po upływie czasu widać " Zakoncono" " Odliczanie" jw
6. Program powinien mniej więcej działać tak jak jest narysowane na algorytmie.

Mam nadzieję ze jest jasne to co napisałem do tej poty. Moge jeszcze dopisać parę szczegułów, ale wydaje mi się że z algorytmu można się domyśleć o co chodzi. Poniżej schemat i algorytm działania programu lub tu (www.bascom.jpg.pl)
Załączniki
algorytm działania programu.jpg
schemat ideowy.jpg

trryt
-
-
Posty:119
Rejestracja:3 maja 2004, o 15:08

Postautor: trryt » 16 sty 2007, o 20:12

Programu który by dokonywał takiej konwersji raczej nie znajdziesz - to jest zadanie bardziej dla człowieka. Ale o wiele łatwiej poszukać czegoś podobnego w Bascomie albo to napisać, jak masz mało czasu to może i lepiej że w Bascomie, on jest prościutki - łatwo załapać. C możesz się nauczyć później sam dla siebie. A Bascom ze swoimi gotowymi procedurami do LCD, 1-wire, SPI, I2C jest całkiem miły jak chce się zrobić coś na szybko żeby działało. Jak chce się zrobić coś porządnie C rzeczywiście zwykle jest lepsze. A co to za praca, bo słowo "promotor" kojarzy mi się z magisterką, no ale zmuszanie do Bascoma i termin już nie.

Dzinksu
-
-
Posty:14
Rejestracja:13 gru 2004, o 21:56
Lokalizacja:Koszalin
Kontaktowanie:

Postautor: Dzinksu » 16 sty 2007, o 21:11

Jest to typowa praca inżynierska, a właściwie jej mała część. Reszta jest pisana w VHDL'u.

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 17 sty 2007, o 23:12

W Bascomie to robota na godzine :598:

Dzinksu
-
-
Posty:14
Rejestracja:13 gru 2004, o 21:56
Lokalizacja:Koszalin
Kontaktowanie:

Postautor: Dzinksu » 17 sty 2007, o 23:16

Pocieszyłeś mnie Fredy, ale ja dopiero szlifuje podstawy. Chociaż prosty zegarek już zrobiłem. A co zabawne to na dodatek przenieśli mi termin obrony na ten poniedziałek. Także bicz na demną wisi!

badi
-
-
Posty:6
Rejestracja:12 gru 2006, o 23:51
Lokalizacja:Koszalin

Postautor: badi » 18 sty 2007, o 02:18

mam chyba coś takiego, bo pisałem całkiem podobny program

McKEE
-
-
Posty:186
Rejestracja:7 cze 2004, o 10:02
Lokalizacja:Gniewkowo_Toruń

Postautor: McKEE » 18 sty 2007, o 17:20

Witam , zapoznaj się z projektem nr.4 Futrzaczka w dziale DIY, po odchudzeniu bedziesz miał swój timer . http://the-end.ep.com.pl/projekt3/futrzaczek.htm :601:

Dzinksu
-
-
Posty:14
Rejestracja:13 gru 2004, o 21:56
Lokalizacja:Koszalin
Kontaktowanie:

Postautor: Dzinksu » 18 sty 2007, o 22:45

Dzięki McKEE. Postaram się do tego przyłożyć. Dam znać pojutrze co z tego wyjdzie.

[ Dodano: 20-01-2007, 21:47 ]
Ciężko przez 2 dni nauczyć się Bascoma. Jak narazie improwizuje

$regfile = "m8def.dat"
$crystal = 8000000


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2
Config Lcdpin = Pin , Db6 = Portc.1 , Db7 = Portc.0 ,
Config Lcdpin = Pin , E = Portc.4 , Rs = Portc.5

Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.5 = Output
Config Pind.6 = Output
Config Pind.7 = Output

S1 Alias Pind.0
S2 Alias Pind.1
S3 Alias Pind.2
Piezo Alias Portd.5
Swietlowka Alias Portd.6
Pompa Alias Portd.7

Config Pind.1 = Input
Config Timer1 = Timer , Prescale = 64

Declare Sub Wysw_czas

On Timer1 Odmierz_1s

Enable Interrupts

Enable Timer1
Counter1 = 34286

Dim Sekundy As Byte
Dim Minuty As Byte
Dim Nowa_w As Byte
Dim Wart_bcd As Byte

Set Nowa_w
Set Portd.0
Set Portd.1
Set Portd.3


'---------------------------------------
Cls

Cursor Off Noblink
Locate 1 , 3
Lcd "DUZE"
Locate 2 , 8
Lcd "AKWARIUM"

Waitms 200
Cls


Do

Call Wysw_czas

If S1 = 0 Then
Waitms 10

If S1 = 0 Then

Incr Minuty '
Sekundy = 0
If Minuty = 60 Then
Minuty = 0
End If
Set Nowa_w

Call Wysw_czas

Waitms 20
End If
End If
If S2 = 0 Then
Waitms 25
If S2 = 0 Then

Decr Minuty
Sekundy = 0
If Minuty = 0 Then
Minuty = 60

End If
Set Nowa_w

Call Wysw_czas

Waitms 20

End If
End If
Loop
End

Sub Wysw_czas
If Nowa_w = 1 Then
Cls
Locate 1 , 4
Lcd "POZOSTALO"


Locate 2 , 5
Wart_bcd = Makebcd(minuty)
Lcd Bcd(wart_bcd) ; " MIN"
'Locate 2 , 8
'Wart_bcd = Makebcd(sekundy)
'Lcd Bcd(wart_bcd) ; " MIN"


Reset Nowa_w
End If
End Sub Wysw_czas

Odmierz_1s:
Counter1 = Counter1 + 34286
Incr Sekundy
Set Nowa_w

If Sekundy = 60 Then
Sekundy = 0
Decr Minuty
If Minuty = 60 Then
Minuty = 0




End If
End If
Return


Nie dziła to jeszcze nawet w połowie tak jakbym chciał, no ale jak się nie ma co się lubi, to się lubi co się ma.

[ Dodano: 21-01-2007, 02:35 ]
Ostatnia wersja
Cls



Do
If S3 = 0 Then
Gosub Pr1
End If
Call Wysw_czas
If S1 = 0 Then
Waitms 10
If S1 = 0 Then
Incr Minuty '
End If
Set Nowa_w
Call Wysw_czas
Waitms 20
End If

If S2 = 0 Then
Waitms 25
If S2 = 0 Then
Decr Minuty
End If
Set Nowa_w
Call Wysw_czas
Waitms 20
End If
Loop

Sub Wysw_czas
If Nowa_w = 1 Then
Cls
Locate 1 , 4
Lcd "POZOSTALO"
Locate 2 , 5
Wart_bcd = Makebcd(minuty)
Lcd Bcd(wart_bcd) ; " MIN"
'Locate 2 , 8
' Wart_bcd = Makebcd(sekundy)
' Lcd Bcd(wart_bcd) ; " MIN"


Reset Nowa_w
End If
End Sub Wysw_czas


Pr1:

Enable Timer1

Call Wys_czas

Set Nowa_w



Sub Wys_czas
If Nowa_w = 1 Then
Cls
Locate 1 , 4
Lcd "POZOSTALO"
Locate 2 , 5
Wart_bcd = Makebcd(minuty)
Lcd Bcd(wart_bcd) ; " MIN"
'Locate 2 , 8
'Wart_bcd = Makebcd(sekundy)
'Lcd Bcd(wart_bcd) ; " MIN"
Reset Nowa_w
End If
End Sub Wys_czas
Return

Odmierz_1s:
Counter1 = Counter1 + 34286
Incr Sekundy
Set Nowa_w

If Sekundy = 60 Then
Sekundy = 0
Decr Minuty

End If
Return

End

[ Dodano: 21-01-2007, 18:19 ]
I jak, podoba się?


$regfile = "m8def.dat" 'INFORMUJE KOMPILATOR O PLIKU DYREKTYW MIKROPROCESORA
$crystal = 8000000 'INFORMUJE KOMPILATOR O CZĘSTOTLIWOŚĆI OSCYLATORA TAKTUJĄCEGO MIKROKONTROLER

Config Lcd = 16 * 2 'DEKLARACJA WYŚWIETLACZA LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2
Config Lcdpin = Pin , Db6 = Portc.1 , Db7 = Portc.0 ,
Config Lcdpin = Pin , E = Portc.4 , Rs = Portc.5

Config Pind.0 = Input 'DEKLARACJA PORTÓW WEJŚCIA/WYJŚCIA
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.5 = Output
Config Pind.6 = Output
Config Pind.7 = Output

S1 Alias Pind.0 'PRZYPISANIE NAZW WEJ/WYJ
S2 Alias Pind.1
S3 Alias Pind.2
Piezo Alias Portd.5
Swietlowka Alias Portd.6
Pompa Alias Portd.7

Config Timer0 = Timer , Prescale = 256 'KONFIGURACJA TIMERA0
On Timer0 Odmierz_1s 'WŁĄCZENIE TIMER0 W PODPROGRAMIE Odmierz_1s

Dim Licz_8ms As Byte 'DEKLARACJA ZMIENNYCH
Dim Sekunda As Byte
Dim Minuta As Byte
Dim Minuta_ust As Byte
Dim Minuta_wys As Byte
Declare Sub Naswietlanie 'DEKLARACJA PODPROGRAMÓW
Declare Sub Pompka
Cursor Off
Cls
Reset Portd.5 'WŁĄCZNIE PIEZA
Waitms 50
Set Portd.5
Waitms 50
Reset Portd.5
Waitms 50
Set Portd.5
Waitms 50
Reset Portd.5
Waitms 50
Set Portd.5


'WYŁĄCZNIE KURSORA
Cls 'CZYSZCZENIE EKRANU

Locate 1 , 1 'POZYCJONOWANIE NAPISÓW
Lcd " Naswietlarka"
Locate 2 , 1
Lcd " UV "
Wait 2


Enable Interrupts 'WŁĄCZNIENIE PRZERWAŃ TIMERA0

Minuta_ust = 0 ' ZEROWANIE MINUTA_UST


Set Portd.0 'USTAWIENIE PORTÓW
Set Portd.1
Set Portd.2
Set Portd.5
Reset Portd.6
Reset Portd.7
Do 'POCZĄTEK GŁ. PĘTLI
If S1 = 0 And S2 = 0 Then 'WŁ/WYŁ POMPKI
Waitms 900
If S1 = 0 And S2 = 0 Then
Call Pompka
End If
End If

Locate 1 , 1 'MENU USTAWIANIA CZASU
Lcd " USTAW CZAS "
Locate 2 , 1
Lcd " " ; Minuta_ust ; " "
Locate 2 , 8
Lcd " MIN "

If S1 = 0 Then ' USTAWIANIE ZEGARA
Waitms 100
If S1 = 0 Then
Incr Minuta_ust
End If
End If
If Minuta_ust = 100 Then
Minuta_ust = 0
End If

If S2 = 0 Then
Waitms 100
If S2 = 0 Then
Decr Minuta_ust
End If
End If
If Minuta_ust = 255 Then
Minuta_ust = 99
End If

If S3 = 0 Then 'WŁ/WYŁ ODLICZANIA
Waitms 100
If S3 = 0 Then
Call Naswietlanie
End If
End If
Loop


Sub Naswietlanie 'PODPROGRAM NAŚWIETLANIA
Cls
Sekunda = 0
Minuta = 0
Do
If S3 = 0 Then
Waitms 100
If S3 = 0 Then
Reset Portd.6
Cls
Exit Sub
End If
End If

Set Portd.6
Enable Timer0
Load Timer0 = 250

'MENU ODLICZANIA I KOŃCA PROGRAMU
If Sekunda = 60 Then
Incr Minuta
Sekunda = 0
End If

If S1 = 0 And S2 = 0 Then
Waitms 500
If S1 = 0 And S2 = 0 Then
Call Pompka
End If
End If

If Minuta_ust > Minuta Then
Set Portd.6
End If
If Minuta_ust = Minuta Then
Reset Portd.5
Locate 1 , 1
Lcd " KONIEC "
Locate 2 , 1
Lcd " NASWIETLANIA "
Wait 2
Set Portd.5
Reset Portd.6
Exit Sub
End If
Minuta_wys = Minuta_ust - Minuta

Locate 1 , 1
Lcd " POZOSTALO "
Locate 2 , 6
Lcd Minuta_wys ; " MIN"

Loop
End Sub

Sub Pompka
Toggle Portd.7
End Sub

Odmierz_1s: 'PODPROGRAM Odmierz_1s
Load Timer0 = 250
Incr Licz_8ms
If Licz_8ms = 125 Then
Licz_8ms = 0
Incr Sekunda
End If
Return

[ Dodano: 21-01-2007, 18:20 ]
KONIEC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ΣΠΔΘΩµ :597:

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 6 gości