www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Bascom spreminjanje spremenljivk

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Pon Okt 18, 2010 6:59 pm    Naslov sporočila:  Bascom spreminjanje spremenljivk Odgovori s citatom

Rad bi izdelal IR oddajnik, kateri bi z ukazom
Koda:
Rc5send Togbit , Address , Command

poslal "address" in "command". Problem je v tem, da imam jaz spremenljivko long in bi rad poslal le spodnjih 10 bitov. Se pravi, da bi v command vpisal bite od bit0 do bit5 v address pa bite od bit6 do bit10.
Razmišljal sem, da bi long spremenil v binarni string ter vzel le določene bite ter jih spremenil v decimalno število (byte) in jo priredil v command in address v teoriji je enostavno v praksi pa nimam pojma kako bi to izvedel Very Happy .

_________________
Razsvetljujemo od leta 1920!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Član
Član



Pridružen-a: Sre 03 Mar 2004 21:35
Prispevkov: 563
Aktiv.: 2.38
Kraj: Ljubljana

PrispevekObjavljeno: Pon Okt 18, 2010 9:52 pm    Naslov sporočila:   Odgovori s citatom

mogoče obstaja bolj elegantna rešitev od te:
comand.0=bit.0
comand.1=bit.1
.....
.....

adres.0=bit.6
adres.1=bit.7
itn.

LP
Vlado
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
smatjaz
Član
Član



Pridružen-a: Pon 10 Nov 2003 16:33
Prispevkov: 846
Aktiv.: 3.57

PrispevekObjavljeno: Tor Okt 19, 2010 7:04 am    Naslov sporočila:   Odgovori s citatom

Poskusi s shiftleft in shiftright.

Lp M.

_________________
Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Tor Okt 19, 2010 7:40 am    Naslov sporočila:   Odgovori s citatom

Koda:
Dim Command As Byte , Address As Byte
Dim L As Long
' Damo v L nekaj:
L = &H44332211
' Binarno to izgleda 0100 0100 0011 0011 0010 0010 0001 0001
'         za coomand in addres pridejo v poštev      cc cccc
'                                              aaa aa
' in izpišemo v hex obliki:
Print Hex(l)
' Definiramo polje 4-ih bajtov od X(1) do X(3) preko spremenljivke L
Dim Xx(4) As Byte At L Overlay
' In izpišemo bajt po bajt
Dim I As Byte
For I = 1 To 3
  Print I ; " " ; Hex(xx(i))
Next
' Ugotovimo, kar morda tudi že vemo, da so v pomnilniku napisani
' najprej bajti nizke vrednosti in na koncu bajti višje vrednosti
' command vpisal bite od bit0 do bit5 v address pa bite od bit6 do bit10.
Command = Xx(1) And &H3F
Print Hex(command)
' Dobili smo v command nanižjih 6 bitov spremenljivke L
' sedaj naredimo premik bitov v spreneljivki L za 6 bitov
Shift L , Right , 6
' in ponovimo isto na spremenljivki address,a le za pet bitov
Address = Xx(1) And &H1F
Print Hex(address)

End


In to preverimo s simulatorjem
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 20, 2010 3:41 pm    Naslov sporočila:   Odgovori s citatom

Jaz sem sicer naredil malo po svoje in upam, da nisem kje pobrkljal? Za pretvorbo sem uporabljal stringe ter binarne pretvorbe in zadeva sicer deluje, ko pogledam na osciloskopu problem pa imam sedaj pri branju ter sestavljanju spremenljivk. Ne vem kako naj ujamem vseh 6 poslanih kod ter kako naj jih prevedem nazaj v eno spremenljivko? Kot pomoč sem uporabljal ukaz "mid" kateri naj bi zamenjal določen del v nekem stringu.

Koda:

Dim Batts As Long
Dim Upovps As Word
Dim T As Word
Dim Stevec As Long

Dim Togbit As Byte
Dim Command(6) As Byte
Dim Address(6) As Byte

Dim Longstr As String * 32
Dim Wordstr As String * 16
Dim Commstr As String * 6
Dim Addstr As String * 5


Poslji:

Longstr = Bin(batts)
Addstr = Mid(longstr , 22 , 5)
Commstr = Right(longstr , 6)
Address(1) = Binval(addstr)
Command(1) = Binval(commstr)

Wordstr = Bin(upovps)
Addstr = Mid(wordstr , 6 , 5)
Commstr = Right(wordstr , 6)
Address(2) = Binval(addstr)
Command(2) = Binval(commstr)

Wordstr = Bin(t)
Addstr = Mid(wordstr , 6 , 5)
Commstr = Right(wordstr , 6)
Address(3) = Binval(addstr)
Command(3) = Binval(commstr)

Longstr = Bin(stevec)
Addstr = Left(longstr , 4)
Commstr = Mid(longstr , 5 , 6)
Address(4) = Binval(addstr)
Command(4) = Binval(commstr)

Addstr = Mid(longstr , 11 , 5)
Commstr = Mid(longstr , 16 , 6)
Address(5) = Binval(addstr)
Command(5) = Binval(commstr)

Addstr = Mid(longstr , 22 , 5)
Commstr = Right(longstr , 6)
Address(6) = Binval(addstr)
Command(6) = Binval(commstr)

Togbit = 1

For Posl = 1 To 6

   Rc5send Togbit , Address(posl) , Command(posl)
   Toggle Togbit
   Waitms 10

Next

Return

_________________
Razsvetljujemo od leta 1920!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Sre Okt 20, 2010 4:55 pm    Naslov sporočila:   Odgovori s citatom

Nisem analiziral tvojega programa, le v spremnem tekstu sem opazil napako:

Ukaz Mid ni za spreminjanje nekih bajtov nekje v stringu, temveč za prenos izbranih bajtov iz velikega stringa nekam drugam, v manjši string.

Če si razumel ukaz mid, kot si napisal, ne more delati.

Posamezne bajte v velikem stringu lahko spreminjaš, če string redefiniraš kot polje bajtov

AVR Bascom:

Dim string xx as string * 32
dim x(33) as byte at xx overlay

sedaj lahko dobiš deseti bajt stringa kot bajt x(10) itd
in ga lahko delaš z njim kar hočeš
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 20, 2010 6:35 pm    Naslov sporočila:   Odgovori s citatom

Aha no jas sem razumel malo drugače TUKAJ piše da naj bi zamenjalo bom pa še poizkusil z overlay in shiftom.
_________________
Razsvetljujemo od leta 1920!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group