pic - obsah proměnné jako adresa

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
kajus
Příspěvky: 91
Registrován: 27 úno 2009, 00:00

pic - obsah proměnné jako adresa

#1 Příspěvek od kajus »

Zdravím, tvořím program pro pic (asm) a mám následující problém:
V proměnné mám uloženou adresu výstupního portu a v druhé číslo pinu.
Kdybych se ho pokusil nastavit pomocí bsf port, pin, tak to samozřejmě nebude nefungovat, protože nastavuje proměnnou port a na pozici dané adresou pin.
Takže se táži, neexistuje nějaký způsob, jak dosadit obsah proměnné, ne její adresu? Sice tuším, že ne, ale zeptat se musím :-D, značně by to ten kód zjednodušilo.
Uživatelský avatar
mat100
Příspěvky: 480
Registrován: 04 lis 2009, 00:00
Bydliště: Plzen-jih

#2 Příspěvek od mat100 »

V té druhé proměnné budeš mít jen 1 nebo 0 ?

Hoď sem tvůj program. Na takto vytrženou informaci z kontextu se dát jen těžko reagovat.
kajus
Příspěvky: 91
Registrován: 27 úno 2009, 00:00

#3 Příspěvek od kajus »

myslím že dávat sem celej program je zbytečny, měl by fungovat asi takto:
po sériové lince přijmu adresu portu, číslo pinu. Přijatá data uložím do proměnných, takže v proměnné port mám uloženou adresu portu, v proměnné pin číslo pinu (0-7).
Jako poslední přijme jedničku, nebo nulu (to se nastaví na daném pinu). Podle toho bude buď instrukce bsf nebo bcf.

Takže nejlepší by bylo, kdyby šlo použít BSF PORT, PIN. To ale samozřejmě nejde (např port obsahuje 0x6, adresa port je 0x20, pin obsahuje 0x1, adresa je 0x21. Takže výsledek dopadne BSF 0x20, 0x21). Takže by bylo nejlepší, kdyby existoval způsob, jak dosadit jako do BSF obsah proměnné, ne její adresu. Předpokládám, že to nepude, ale co kdyby :-D.
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#4 Příspěvek od jankop »

Parametr port můžeš adresovat nepřímo prostřednictvím FSR.
Parametr pin ale nepřímo adresovat nejde.
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#5 Příspěvek od procesor »

Tak to urob ako akúkoľvek inú operáciu s obecným RAM pomocou movf s indirekt adresáciou. Predtým zapisované Dáta si priprav z adresy bitu, databitu a obsahu registra-portu. Len neviem či je to jednoduchšie a spoľahlivejšie ako klasický rozskok a priama práca s portom.
A pozor na read-write-modify. Porty nie sú identické registre pre read a write.
kajus
Příspěvky: 91
Registrován: 27 úno 2009, 00:00

#6 Příspěvek od kajus »

Všem dík, s nepřímým adresováním jsem doteď nepracoval (jen jsem věděl, že něco takového existuje). Tím je můj problém vyřešen.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“