[DŁUGIE] BASCOM - PROBLEM

Witam mam taki sobie programik do obsługi zdalnego sterowania na pasmo 433 Mhz. Jest to program do modułu nadajnika pod uC 89C2051P Mam do tego programu pytanie: Program sprawdza czy przycisk jeden został wciśnięty... itd... to ustawia daną i leci do "wyślij" i tam jest coś takiego Acc = Dana a po paru linijkach If Acc.0 = 1 Czy ktoś mi może powiedzieć co to jest to Acc??

P.S. Przepraszam z góry że wkleiłem cały program...

Dim Dana As Byte , Wskaznik As Byte

Dana = 0 Call Wyslij

Do If P3.0 = 0 Then Set P3.0 Dana = 1 'jazda do tylu Call Wyslij Waitms 200 End If If P3.1 = 0 Then Set P3.1 Dana = 2 'przod Call Wyslij Waitms 20 End If If P3.2 = 0 Then Set P3.2 Dana = 3 'przod Call Wyslij Waitms 20 End If If P3.3 = 0 Then Set P3.3 Dana = 4 Call Wyslij Waitms 20 End If If P3.1 = 0 Then If P3.2 = 0 Then Set P3.1 Set P3.2 Dana = 5 'przod obu silnikow Call Wyslij Waitms 20 End If End If If P3.0 = 0 Then If P3.3 = 0 Then Set P3.0 Set P3.3 Dana = 6 'tyl odbu silnikow Call Wyslij Waitms 20 End If End If If P3.0 = 0 Then If P3.1 = 0 Then Set P3.0 Set P3.1 Waitms 20 End If End If If P3.0 = 0 Then If P3.2 = 0 Then Set P3.0 Set P3.2 Dana = 7 Call Wyslij Waitms 20 End If End If If P3.3 = 0 Then If P3.1 = 0 Then Set P3.3 Set P3.1 Dana = 8 Call Wyslij Waitms 20 End If End If If P3.3 = 0 Then If P3.2 = 0 Then Set P3.3 Set P3.2 Waitms 20 End If End If If P3.4 = 0 Then Set P3.4 Incr Wskaznik If Wskaznik = 1 Then Dana = 10 Wskaznik = 0 Call Wyslij End If If Wskaznik = 0 Then Dana = 11 Wskaznik = 1 Call Wyslij Waitms 20 End If If Wskaznik = 2 Then Wskaznik = 0 Dana = 11 Call Wyslij End If End If Loop

Sub Wyslij Acc = Dana If Acc.0 = 1 Then Set P1.7 End If If Acc.0 = 0 Then Reset P1.7 End If If Acc.1 = 1 Then Set P1.6 End If If Acc.1 = 0 Then Reset P1.6 End If If Acc.2 = 1 Then Set P1.5 End If If Acc.2 = 0 Then Reset P1.5 End If If Acc.3 = 1 Then Set P1.4 End If If Acc.3 = 0 Then Reset P1.4 End If End Sub

Reply to
Jarek
Loading thread data ...

Użytkownik "BartekK" snipped-for-privacy@drut.org napisał w wiadomości news:djrdp7$srf$ snipped-for-privacy@atlantis.news.tpi.pl...

hmm mądre :D a może jakieś linki co do tego bo wiecie ucze się na gotowych programach i początki cieżkie są niestety :/ Albo jakieś wytłumaczenie jak to działa... kiedy jest logiczne 0 a kiedy 1

Reply to
Jarek

Jarek napisał(a):

acc = akumulator procesora

Reply to
BartekK

Powitanko,

Acc to po bascomowemu akumulator (assemblerowej nazwy "A" nie skuma) Dana musi byc zadeklarowana jako byte Acc.0 oznacza najmlodszy bit akumulatora.

Pozdroofka, Pawel Chorzempa

Reply to
Pawel "O'Pajak

Użytkownik "Pawel "O'Pajak"" snipped-for-privacy@gazeta.pl napisał w wiadomości news:djrds9$cc4$ snipped-for-privacy@inews.gazeta.pl...

No dobrze to teraz mam tam w kodzie w pewnym przypadku dana = 2 i później Acc = dana i program sprawdza pokolei 4 bity Acc to kiedy będzie 1 a kiedy

0?? Może mi ktoś to wytłumaczyć??
Reply to
Jarek

Powitanko,

Czyli w akumulatorze bedzie zapisane 00000010 (=2) Inaczej mowiac Acc.0=0, Acc.1=1, Acc.2=0, Acc.3=0 itd

program sprawdza pokolei 4 bity Acc to kiedy będzie 1 a kiedy

4 najmlodsze czy najstarsze? (leci od Acc.0 do Acc.3, czy od Acc.4 do Acc.7). Pozdroofka, Pawel Chorzempa
Reply to
Pawel "O'Pajak

Dziękuje wszystkim za pomoc skumałem już program odbiornika i nadajnika :D czas poszukać coś innego :P

Reply to
Jarek

Napisałem program który po naciśnięciu danego przycisku wykonuje daną sekwencje świecenia diod. Skonfigurowałem tak porty, funkcje:

Config Portb = &B11111111 Portb = &B00000000

Config Portd = &B0000000 Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 = 1

Declare Sub Sekwencja1 Declare Sub Sekwencja2 Declare Sub Sekwencja3 Declare Sub Sekwencja4

If Pind.0 = 0 Then Set Portd.0 Call Sekwencja1 End If

Cały czas Pind.0 pomimo że podciągnąłem go do jedynki pokazuje logiczne 0. Używam symulatora bascom-avr demo. Czy ktoś mi może powiedzieć co robie źle??

Reply to
Jarek

Użytkownik "Jarek" snipped-for-privacy@poczta.fm napisał w wiadomości news:dk0ldm$3qr$ snipped-for-privacy@news.dialog.net.pl...

Sprawdz to:

Ddrd.0=0 Portd.0=1

If Pind.0 = 0 Then

Call Sekwencja1 End If

Reply to
OldBoy

Użytkownik "OldBoy" snipped-for-privacy@wp.pl napisał w wiadomości news:dk267f$p6k$ snipped-for-privacy@atlantis.news.tpi.pl...

Jak widać w popszednim programie też to jest... chyba po to(z mojego logicznego rozumowania) żeby portD.0 po naciśnięciu przycisku nie został z logicznym zerem a zmienił napewno wartość na 1

Reply to
Jarek

Jarek snipped-for-privacy@poczta.fm napisał(a):

..

Żaden ze znanych mi symulatorów uC AVR(Bascoma , AVRStudio,...) nie zmienia stanu pinów ustawionych jako wejście.Bascom nie zmienia nawet stanu pinów ustawionych jako wyjście.Poziomy logiczne na pinach (zielone) ustawia "symulant" ;) czyli Ty. Prosty test: .. Set Ddrd.0 'wyjście Set Portd.0 'ustaw stan wysoki If Pind.0 = 1 Then 'powinien wynosić "1" ... Set Portd.1 '... to jednak się nie wykona :( End If ..

Piotrek

Reply to
Piotrek Sz.

Mam jeszcze jedno ostatnie pytanie czy z starter kitem avt 3500 przerobie książke Bascom - AVR

formatting link
Tam polecjają dużo droższy zestaw startowy :( i nie ma opcji B czyli do posklejania...

A jak nie to jaką książke ( o ile taka jest) użyć do tamtego programatora...

Reply to
Jarek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.