változók konstansok meghatározások stb..

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

változók konstansok meghatározások stb..

Hozzászólás Szerző: herc1234 »

Ha ezt irom pl:
zero=0
zold=255
piros=255

Cimu1ls0.0 = Zold.7
Cimu1ls0.1 = Zero
Cimu1ls0.2 = Piros.0
Cimu1ls0.3 = Zero
Cimu1ls0.4 = Zold.0
Cimu1ls0.5 = Zero
Cimu1ls0.6 = Piros.1
Cimu1ls0.7 = Zero


ami ugye négy változó és a barnával szedett rész egy meghatározás arra
melyik byte melyik bitjét hova akarom tölteni...
a kérdés hogy lehet ezt statikussá tenni const ként ugye ez nem jó mivel
illagal karaktereket tartalmaz
subrutin ként is jó pofa de van e még más formája?
pl még a config részben leirva, hogy ez csak egyszer fusson le
és ha hivatkozok a Cimu1ls0 ra akkor azzal tisztában legyen hogy az három bytbe-ból áll tulajdonképpen.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

A byte-bit-word figyelembe vételével tessék tisztában lenni. Azaz


Dim zold as byte
dim nullaegy as bit


Azaz a zold.1=nullaegy az lehet.
A nullaegy.7=zold NEM!


Az alias utasításra keress rá. Azzal lehet direkthivatkozást (akár változó, akár konstans) használni.
http://www.tavir.hu - a gazda :)
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

Hozzászólás Szerző: herc1234 »

dim zero as bit
dim zold as byte
dim piros as byte
cimu1ls0 as byte
(természetesen csak nem akartam teljes egészében leirni)
zero=0
zold=255
piros=255

Cimu1ls0.0 alias Zold.7
Cimu1ls0.1 alias Zero
Cimu1ls0.2 alias Piros.0
Cimu1ls0.3 alias Zero
Cimu1ls0.4 alias Zold.0
Cimu1ls0.5 alias Zero
Cimu1ls0.6 alias Piros.1
Cimu1ls0.7 alias Zero

(És ha (tehát az ALIAS-ok után)

zold = 10000010
piros =11000000

(akkor Cimu1ls0)
print Cimu1ls0

Result:10101010
mert ha igy van akkor az nagyon kafa
félek ez egy memóriaigényes dolog lesz
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

Többszörös alias nem lehet....

dim zero as bit
dim zold as byte
dim piros as byte
cimu1ls0 as byte

zero=0
zold=255
piros=255

Cimu1ls0.0 alias Zold.7
Cimu1ls0.1 alias Zero '<---
Cimu1ls0.2 alias Piros.0
Cimu1ls0.3 alias Zero '<---
Cimu1ls0.4 alias Zold.0
Cimu1ls0.5 alias Zero '<---
Cimu1ls0.6 alias Piros.1
Cimu1ls0.7 alias Zero '<---


<--- Ilyen NINCS. 2 féle változó AZONOS aliassal nem lehet. ha a zeronak értéket adsz akkor minek mi lesz?????


(És ha (tehát az ALIAS-ok után)

zold = 10000010
piros =11000000

(akkor Cimu1ls0)
print Cimu1ls0

Result:10101010
mert ha igy van akkor az nagyon kafa
félek ez egy memóriaigényes dolog lesz
>>>>Nem.


Nézd meg inkább a OR/AND utasításokat.

&B01010111 AND &B00000000 = &B00000000
&B01010111 AND &B11111111 = &B01010111
&B01010111 AND &B01010101 = &B01010101

AND esetén, ha mindkét helyiérték 1, akkor 1. Ha legalábbaz egyik 0, akkor 0!
OR esetén, ha legalább egyik helyiérték 1, akkor 1. Ha mindkét helyiérték 0, akkor 0!

Ez nem jó?
http://www.tavir.hu - a gazda :)
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

Hozzászólás Szerző: herc1234 »

zero az átláthatóság miatt került bele
bár azt jó tudni hogy több ALIAS-a nem lehet egy változónak

ez a részlet egy i2c buszon üldögélő négy led dimmer ic
kimeneteit rendezi egy tömbbe(változóba)
azért is nem irtam portot
mert igy 4 icnél két byte-al le lehet irni 32 led állását

(a cimzéseket és küldéseket alapvetőleg csinálja a program még
akkor is ha nincs küldve értelmes adat (pl 1 ))
de igy csak 2 bytot kell olvasni

(bocsánat két két szemben lévő ic-nek egy ugyanazon a funkciója)
csak a jövőbeni szofware upgrade miatt került igy bele hogy a hardware
-en már ne keljen változtatni még a panel többet tud (külön külön villogás)
Az AND OR kapukat azért vágom de vajon ezeketből is lehet (azaz egy számítási müveletet) konstans vagy egyéb statikus dolgot csinálni?

különben mintha azért volna valamilyen tipuskonverzió mivel a 0-át hajlandó bytekét is kezelni akkor is ha bit nek van degradálva
persze visszafelé ez úgy dereng hogy nem müködik
vagy tévedek?
bocs most kevereg bennem a bascom basic meg a visual studio... :D
vacak dolgo több nyelvet egyszerre tanulni de arra jöttem rá hogy céljaim eléréséhez sajnos szükségem van rá
(készülök egy rettenetes nagy projektre csak még kevés vagyok hozzá érzem)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

Típuskonverzió:

A as bit
B as Byte

A=1
B=255


Ha a Bascom:
A=B utasítást talál: HIBA
B=A utasítást talál B=1.
Azaz nagyobb felveheti a kisebbik értékét (nem mindíg szerencsés, azt hiszem LONG esetén fejreállhatsz).

Word esetén az alsó-felső a High(word) ás a Low(word) adhatja ki a alsó-felső byte-ket.
4byte esetén: LOWW, HIGHW (wordként bontja)

Nálad tipp:
A as Long at overlay &H60 '32 bit letárolása a 60-as SRAM címtől
V1 as byte at overlay &H60 'legmagasabb byte
V2 as byte at overlay &H61 'legmagasabb előtti byte
V3 as byte at overlay &H62
V4 as byte at overlay &H63 'legalacsonyabb byte
W1 as word at overlay &h60 'ugyanez WORDre
W2 as word at overlay &h62 'ugyanez WORDre

A Bascom szimulátorban ellenőrizheted:)


AND és OR nem kapu, hanem logikai utasítás!
Logikai ÉS illetve logikai VAGY. bitmanipulációra jó:). Csak tippnek írtam. hátha kellhet a programban. Én használom....

A 0 is használható byteértékként! A byte értéke 0...255 lehet.
Nem a stringgel kevered? Ott a stringláncban NEM lehet 0, mert az a stringlánc vége karakter!
http://www.tavir.hu - a gazda :)
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00
Tartózkodási hely: Törökbálint

Hozzászólás Szerző: herc1234 »

tehát direkt módon történő elhelyezése a változóknak egymásralapozást
lehet elérni szuper!
látod mondtam én neked hogy a nyelv parancsainak ismerete szinte elsődlegesen fontos ( ha ismered az építőkockákat tudod hogy lehet várat építeni belőle) fogalmam sem volt arról hogy a változókat igy is el lehet
tárolni (legalább nem halok meg hülyén :D )
a kapukkal kapcsolatban nem szeretnék vitábaszállni hogy a tyúk volt e elöbb vagy a tojás
(de tény hogy a logikai 1 a tulajdonképpeni magas jelszintnek felel meg)
kapu vagy utasítás mindegy...értetted mit szeretnék ez a lényeg
ezeket majd bevetem ahol lehet köszönöm
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

Az Overlay-ról én is csak olvastam, először a WEBszerveres fejezetben írok.
Amire vigyázz: a DIM-ek sorrendje fontos! Elökl legyen az Overlay-os, utána a sima. A fordító így tudja elkerülni a kavarodást. Ennek magyarázata lsd a WEBSZERVER fejezetben....

Jó programozást :P
http://www.tavir.hu - a gazda :)
Avatar
Daveeboy
DrótVégénSzéndarab
Hozzászólások: 39
Csatlakozott: 2007. november 21. szerda, 7:00
Tartózkodási hely: Győr

Hozzászólás Szerző: Daveeboy »

Sziasztok!
rs485-öt programozok és elég érdekes dolgot tapasztalok a soros kommunikáció során.

Már sok-sok napja debugolom de nem tudom mi történik.
A lényeget megpróbálom összefoglelni.

Kód: Egész kijelölése

$regfile = "m32def.dat"
$crystal = 14745600
$hwstack = 32
$swstack = 32
$framesize = 32
Van kát változó:

Kód: Egész kijelölése

Dim Stationid As Byte
Stationid = 1
Dim Master As Byte
Master = 128
A master egység ben

Kód: Egész kijelölése

   Stationid=Master
Az adatokat urxc megszakításban fűzöm össze.

Nos olyat tapasztalok, hogy ahogy jönek az adatok, egyszercsak a Stationid változó 0 majd 2 lesz, master változó pedig 20.
"Master" változóra még csak nem is hivatkozom!

Sehol nem módosítom a változókat. Hozzáférések az alábbi helyeken történnek.
egy "sendmessage" subrutinban

Kód: Egész kijelölése

If _cimzett <> Stationid Then ...
...
Crc8_buffer(2) = Stationid
...
urxc megszakításban:

Kód: Egész kijelölése

...
If _rx_buffer(1) = Stationid Then ...
...
Ami egy icipici "kapaszkodó" hogy jelenleg csak egy slave egységgel kommunikálok aminek a címe mit ad isten 2.
Teszteltem, "Stationid" a helyes értékről a slave egység címére változik.

Egyszerüen nem értem! áááááááááá! :( :? :( :? :( :? :cry: :?:

Valaki mentsen meg pls...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

$regfile = "m32def.dat"
$crystal = 14745600
$hwstack = 32
$swstack = 32
$framesize = 32
[/code]

helyett

Kód: Egész kijelölése

$regfile = "m32def.dat"
$crystal = 14745600
$hwstack = 64
$swstack = 64
$framesize = 64
javasolt.

ha nem használod ki teljesen a SRAMot, akkor a 64 helyett 128-t írj...
Avatar
Daveeboy
DrótVégénSzéndarab
Hozzászólások: 39
Csatlakozott: 2007. november 21. szerda, 7:00
Tartózkodási hely: Győr

Hozzászólás Szerző: Daveeboy »

Robert: Köszönöm!! :lol:
Úgy tünik rendben lesz.
Honnan tudom hogy mennyire kell állítsam ezeket az értékeket, ha pl takarékos is szeretnék lenni?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

2 hét múlva megmondom :P.

Akkorra lesz meg a könyv e fejezete......
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00
Tartózkodási hely: Dombóvár

Hozzászólás Szerző: Atesz »

Nem tudom volt e már téma, de olyan kérdésem lenne, hogy:
Hogyan lehet egy single változóban lévő értéket átrakni negatívba?
Pl: a változó eredeti értéke: 12,4 és én -12,4 et szeretnék.
Semmi ötletem nincs. Vagy már késő van ehhez. :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10115
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Hozzászólás Szerző: Robert »

Kód: Egész kijelölése

dim a as single

a=12.46
a=-1*a

Off: Késő volt.... :P
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00
Tartózkodási hely: Dombóvár

Hozzászólás Szerző: Atesz »

:roll:

Reggel nagyon kiröhögtem magam! :D
Válasz küldése