AS51 mi nechce přeložit "port equ p1", akorat píše syntax error; ale ASM51 to zase přeloží bezproblému, můžete mi někdo říct v čem je problém?
Fórum › Assembler
Equ
asi by bylo nejlepší napsat pro co přesně to potřebuju: např. na P3.0 budou vstupní data, odkuď budu bit po bitu postupně ukládat do C a z něho potom budu ukládat ty jednotlivy bity na adresu třeba těch 20h, kde je bitově adresovatelný prostor; no a tady je ten problém buď můžu napsat zbytečně dlouhý program, kde to budu muset vše rozepsat( pro první bit mov 20h.0,c; mov 20h.1,c pro druhy bit a tak dál) nebo napsat mov 20h.x,c
inc x kde to x by bylo od 0-7 a program by byl mnohem jednoduši, ví někdo jestli to jde takhle realizovat, pokud ano tak jak?
Teď sice plácnu z hlavy, ale není náhodou část paměťovýho prostoru adresovatelná jak bitově, tak i bytově? Myslím, že tam něco takovýho bylo...
To xp:Podle mě "port equ p1" nelze, jde "proměnná equ adresa v paměti" a bitově adresované jsou porty př.:"p1.0" a pak akumulátor př.:"acc.0"
To xp:Říkám "Podle mě", hovořím za instrukční sadu a debuger co je v as51.
Nepochopil jsem Tvou otázku ohledně segmentů, můžeš blíže specifikovat ?
ještě tady mám ten program pro přístup k jednotlivým bitum na adrese 20h, registr R7 se nastaví na hodnotu hledaného bitu, např. chci uloži data na 20h.4, R7 se musi nastavit na 4;
DAT BIT 21H.0
ad0 bit 20h.0
ad1 bit 20h.1
ad2 bit 20h.2
ad3 bit 20h.3
ad4 bit 20h.4
ad5 bit 20h.5
ad6 bit 20h.6
ad7 bit 20h.7
;************ bitove pole *************
bitPole:MOV C,DAT
CJNE R7,#0,bit1
MOV ad0,C
RET
bit1:CJNE R7,#1,bit2
MOV ad1,C
RET
bit2:CJNE R7,#2,bit3
MOV ad2,C
RET
bit3:CJNE R7,#3,bit4
MOV ad3,C
RET
bit4:CJNE R7,#4,bit5
MOV ad4,C
RET
bit5:CJNE r7,#5,bit6
MOV ad5,C
RET
bit6:CJNE R7,#6,bit7
MOV ad6,C
RET
bit7:CJNE R7,#7,ERROR
MOV ad7,C
RET
ERROR:RET
nedává mi smysl proč nelze napsat
mov 20h.0,c
ale musím psát:
ad0 bit 20h.0
mov ad0,c
nedá se tento program napsat lépe a efektivněji?
To xp:Myslím že dá :)
dec r7
cjne r7,#0,dal
mov a,#1
jmp konec
dal: mov a,#1
zpet: mov b,#2
mul ab
djnz r7,zpet
konec: mov p3,a
nop
Otázkou je jestli to je kratší kód :(
Nějak sem nepochopil proč je chceš ukládat bit po bitu a navíc přes C? C je příznak přenosu (přetečení při součtu).
mov A, P3
mov 20h, A
Potom už bitově pracuješ s jednotlivými hodnotami. Nebo adresuješ rovnou bitově ACC.
mov 20h.0, C by fungovat mělo, záleží jak na kterém překladači...
Jak se liší Windows a Tamagoči? Windows chcípnou, i když se o ně staráte.
Viete ako spoznáte závislosť na internete? Keď narazíte autom do zvodidiel, a prvé čo hľadáte je back.
To Tax:můsím to ukládat přes c protože existují jen 2 přesunové bitové instrukce mov c,bit; mov bit,c; a data nemám na celým portu, ale jen na P3.0, kde mi přijde postupně 8 bitů, jinak jsem přišel na mnohem elegantnější řešení a to, že si uložím příchozí bit do c a pak pomocí instrukce RLC A postupně naplním celý akumulátor a jeho hodnotu si uložím; to původní řešení mělo jeden velkej problém, že instrukce cjne mění příznak c, pak by to nemělo vůbec fungovat, ale je zvláštní, že to fungovalo bezproblému jak v debugeru tak i v 8051
nějak jsem nepochopil co myslíš tím že to na P3 příjde postupně 8 bitů? ano příjde tak jednoduše uložíš celý bajt ne ? jinak toto se dá obejít mnoha způsoby použitelné by mohlo být třeba i JB (Jump if Bit set.) na návěstí kde bys provodlo požadovanou operaci, třeba inkrementaci určitého registru nebo adresy,....
To RLC je šokovné řešení ;)
Jak se liší Windows a Tamagoči? Windows chcípnou, i když se o ně staráte.
Viete ako spoznáte závislosť na internete? Keď narazíte autom do zvodidiel, a prvé čo hľadáte je back.
To xp:Tos měl a krom toho 8051 podporuje sériový přenos i když s tímdle ti nepomůžu, musíš poledat na netu jsem to kdesi viděl... když by jsi použil to RLC A, tak to můžeš sombinovat s vnějším přerušením které je na P3 ;)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Equality function — založil nord
Metoda equals (porovnání odkazů na objekt) — založil Začátečník11