začiatočník v assembleri
Moderátori: psichac, Moderátori
Re: začiatočník v assembleri
Ale ked spodne dva bity ignorujes, tak sa ti prevodnik "zmeni" na osembitovy, najnizsi bit ma teda vahu 5V/256 = cca 20mV, ty precitas 51, teda 51*20mV =~ 1V ktory ocakavas.
0
Re: začiatočník v assembleri
chybka :
pri left justified je v ADRESH hornych 8 bitov, v ADRESL dolne 2 bity. pri right justified su v ADRESH horne 2 bity a v ADRESL spodnych 8 bitov
ak teda pracujes s left justified a pouzivas iba ADRESH, nemozes dostat relevantnu informaciu.
aby veci fungovali ako popisujes, musis pouzit right justified a citat ADRESL
sakra, jaromir predbieha
pri left justified je v ADRESH hornych 8 bitov, v ADRESL dolne 2 bity. pri right justified su v ADRESH horne 2 bity a v ADRESL spodnych 8 bitov
ak teda pracujes s left justified a pouzivas iba ADRESH, nemozes dostat relevantnu informaciu.
aby veci fungovali ako popisujes, musis pouzit right justified a citat ADRESL
sakra, jaromir predbieha
0
- danhard
- Ultimate člen
- Príspevky: 3226
- Dátum registrácie: 15 Apr 2009, 00:00
- Bydlisko: Jesenice u Prahy
- Vek: 68
Re: začiatočník v assembleri
Jaké vrchné bity, když je to left justified ?cmeliak napísal: ... a vrchné 2 bity sú v ADRESL s ktorým nič nerobím.
Jakou váhu má nejnižší bit, který zpracováváš v mV ?
0
Re: začiatočník v assembleri
Vychádzal som z obrázku nižšie avšak myslel som že sa výsledok číta s ľava do prava avšak je to opačne teda z prava - doľava.
0
Re: začiatočník v assembleri
AHOJTE všetci.
Mal by som na vás jednu otázku.
Neviem či to nebude blbosť, ale predsa. Prípadne ma nasmerujete správnym smerom.
mám dva registre X a Y .
Dá sa do registra X napísať adresa umiestnenia ( napr 20H ) registra Y?
Ak áno, viem ju zvačšiť o jedna ( na 21H ) a v budúcnosti použiť?
Idem mi o to, že potrebujem si do 8 po sebe idúcich registrov ukladať dáta.
aby som nemusel 8 krát opakovať určitú smyčku, v ktorej sa mi mení iba register z daného radu, rozmýšlam ako to inak napísať .
Príklad :
START
CLRF K1
CLRF K2
CLRF K3
CLRF K4
CLRF K5
CLRF K6
CLRF K7
CLRF K8
BSF LEDC
AAA CALL KONT
CALL KONTCIS
MOVLW D'12'
SUBWF TEMP,0
BTFSC STATUS,Z
GOTO POROVNAJ
MOVLW D'11'
SUBWF TEMP,0
BTFSC STATUS,Z
GOTO START
MOVLW D'13'
SUBWF TEMP,0
BTFSC STATUS,C
GOTO AAA
MOVF TEMP,0
MOVWF K1
Tuto smyčku potrebujem zopakovať 8 krat a pri dalsom opakovani sa meni len register kam ukladá ( K2,K3 ...... )
ako to mám spraviť ? skúste ma prosím nasmerovať
Pocul som niečo také, ale netusím či je to pravda že sa používalo niečo takéto .
MOVWF (skuska ) - to je že v registry skuska je adresa registru kam to má uožiť. Skúšal som , ale nejde
Mal by som na vás jednu otázku.
Neviem či to nebude blbosť, ale predsa. Prípadne ma nasmerujete správnym smerom.
mám dva registre X a Y .
Dá sa do registra X napísať adresa umiestnenia ( napr 20H ) registra Y?
Ak áno, viem ju zvačšiť o jedna ( na 21H ) a v budúcnosti použiť?
Idem mi o to, že potrebujem si do 8 po sebe idúcich registrov ukladať dáta.
aby som nemusel 8 krát opakovať určitú smyčku, v ktorej sa mi mení iba register z daného radu, rozmýšlam ako to inak napísať .
Príklad :
START
CLRF K1
CLRF K2
CLRF K3
CLRF K4
CLRF K5
CLRF K6
CLRF K7
CLRF K8
BSF LEDC
AAA CALL KONT
CALL KONTCIS
MOVLW D'12'
SUBWF TEMP,0
BTFSC STATUS,Z
GOTO POROVNAJ
MOVLW D'11'
SUBWF TEMP,0
BTFSC STATUS,Z
GOTO START
MOVLW D'13'
SUBWF TEMP,0
BTFSC STATUS,C
GOTO AAA
MOVF TEMP,0
MOVWF K1
Tuto smyčku potrebujem zopakovať 8 krat a pri dalsom opakovani sa meni len register kam ukladá ( K2,K3 ...... )
ako to mám spraviť ? skúste ma prosím nasmerovať
Pocul som niečo také, ale netusím či je to pravda že sa používalo niečo takéto .
MOVWF (skuska ) - to je že v registry skuska je adresa registru kam to má uožiť. Skúšal som , ale nejde
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
Cau, de to , dela se to pres FSR , neprime adresovani ...,
Kód: Vybrať všetko
cblock 0x20
dataa
pom_cislo
delka_pole
pole
endc
ORG 0x0
goto Start
Start clrf pom_cislo
movlw 0x40
movwf dataa
movlw 0x08
movwf delka_pole
Main
movlw pole
addwf pom_cislo,w
movwf FSR
movf dataa,w
movwf 0
incfsz pom_cislo,f
decfsz dataa,f
movf pom_cislo,w
subwf delka_pole,w
btfss STATUS,C
goto $
goto Main
END
- Prílohy
-
- fsr.JPG (25.83 KiB) 8226 zobrazení
0
Re: začiatočník v assembleri
mám pocit že som asi objavil ameriku.
Mýlim sa ak si mylsím že moj problém vyriešim s nepriamym adresovaním ?
Mýlim sa ak si mylsím že moj problém vyriešim s nepriamym adresovaním ?
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
ano tohle sme vyresilymám dva registre X a Y .
Dá sa do registra X napísať adresa umiestnenia ( napr 20H ) registra Y?
Ak áno, viem ju zvačšiť o jedna ( na 21H ) a v budúcnosti použiť?
nestudoval sem tvuj kod, ale pokud ti jde o to ze chces zapsat 8x do osmi registru tak jak to asi udelas ? napises to 8x za sebou pokazdy pro jinej registr nebo 8x zopakujes zapis do registru s menici se adresou....,jinak to neudelasIdem mi o to, že potrebujem si do 8 po sebe idúcich registrov ukladať dáta.
aby som nemusel 8 krát opakovať určitú smyčku
0
Re: začiatočník v assembleri
Ano je to tak, už som si to naštudoval FSR, a INDF
Len teraz som sa stretol s ďalším problémo s ktorým si neviem rady.
Ja sa toto všetko učím na príklade. Skúšam naprogramovať kodovy zamok .
Ale teraz som sa zasekol na takejto situácii. čítanie aj zápis do EEPROM mi funguje.
Ked porovnávam zadané číslo s klávesnice s číslom v pameti EEPROM tak pri tom to mi to trocha hapruje.
z EEprom načítam hodnotu z adresy. Táto hodnota je 0xFF ( čiže by sa to malo javiť ako prázdna ) .
S akou hodnotou to mám porovnať pomocou SUBWF a sledovania Z bitu v STATUSE aby výsledok bol 0 ?
porovnával som to aj s prázdnym registrom ( vymazaným pomocou CLRF ) , aj so zapísanou hodnotou 0xFF, aj s hodnotou 255 ale vždy mi bit Z zostane 0, ako keby výsledok bol nenulový . NEROZUMIEM TOMU:
Len teraz som sa stretol s ďalším problémo s ktorým si neviem rady.
Ja sa toto všetko učím na príklade. Skúšam naprogramovať kodovy zamok .
Ale teraz som sa zasekol na takejto situácii. čítanie aj zápis do EEPROM mi funguje.
Ked porovnávam zadané číslo s klávesnice s číslom v pameti EEPROM tak pri tom to mi to trocha hapruje.
z EEprom načítam hodnotu z adresy. Táto hodnota je 0xFF ( čiže by sa to malo javiť ako prázdna ) .
S akou hodnotou to mám porovnať pomocou SUBWF a sledovania Z bitu v STATUSE aby výsledok bol 0 ?
porovnával som to aj s prázdnym registrom ( vymazaným pomocou CLRF ) , aj so zapísanou hodnotou 0xFF, aj s hodnotou 255 ale vždy mi bit Z zostane 0, ako keby výsledok bol nenulový . NEROZUMIEM TOMU:
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
co kdyby si treba ukazal kod ?
Kód: Vybrať všetko
cblock 0x20
cislo1
cislo2
cislo3
kod
endc
ORG 0x0
goto Start
Start
movlw 0x01
movwf cislo1
movlw 0x02
movwf cislo2
movlw 0x03
movwf cislo3
movlw 0x03
movwf kod
Main
movf cislo1,w
xorwf kod,w ;nebo SUBWF
btfsc STATUS,Z
goto $
movf cislo2,w
xorwf kod,w ;nebo SUBWF
btfsc STATUS,Z
goto $
movf cislo3,w
xorwf kod,w ;nebo SUBWF
btfsc STATUS,Z
goto $
goto Main
END
0
Re: začiatočník v assembleri
OK, prikladam v prilohe .
ďakujem
ďakujem
- Prílohy
-
- kodovy zamok.asm
- (5.81 KiB) 88 stiahnutí
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
mas uz v HESLO ulozeny zadany heslo z klavesnice ? me to funguje
jinak mas tam par nedostatku,
cteni a zapis do EE nejsou nekonecny,takze nemusis to cist pokazdy kdyz porovnavas
banky se daj prepinat i "banksel EEDATA"
neuplnej zapis do EE
neprojizdel sem celej program , je cteni zapis do ee a porovnaj takze muze bejt bota i nekde jinde, jednotlivy casti programu mas odskouseny ?
jinak mas tam par nedostatku,
cteni a zapis do EE nejsou nekonecny,takze nemusis to cist pokazdy kdyz porovnavas
banky se daj prepinat i "banksel EEDATA"
neuplnej zapis do EE
neprojizdel sem celej program , je cteni zapis do ee a porovnaj takze muze bejt bota i nekde jinde, jednotlivy casti programu mas odskouseny ?
- Prílohy
-
- kodovy zamok.asm
- (8.15 KiB) 79 stiahnutí
0
Re: začiatočník v assembleri
Ahoj Miloš.
Dakujem za odpoveď, ale vobec nechapem to čo si mi dopisal do programu .
Čo sa táka tej EEPROM . Viem že zápis nie je nekonečne opakovatelný, ale to sa týka aj čítania?
ja nad tým rozmýšlam takto.
Zapnem zariadnenie. Zámok je zamknutý ( ak by vypadlo napáajanie ) .
Čaká na zadanie kódu.
Zadané heslo si ukladá do registrov s adresov 20H - 27H.
Pri porovnávaní, si načíta zadefinovaný kód z EEPROM do registra W a postupne porovnáva 8 čísel . Zadané s tými čo sú v EEPROM.
Zápis do EEPROM sa použije iba vtedy ked by si chcel užívateľ zmeniť prístupové heslo.
Uvažujem zle o takomto fungovaní ?
Ďakujem
Dakujem za odpoveď, ale vobec nechapem to čo si mi dopisal do programu .
Čo sa táka tej EEPROM . Viem že zápis nie je nekonečne opakovatelný, ale to sa týka aj čítania?
ja nad tým rozmýšlam takto.
Zapnem zariadnenie. Zámok je zamknutý ( ak by vypadlo napáajanie ) .
Čaká na zadanie kódu.
Zadané heslo si ukladá do registrov s adresov 20H - 27H.
Pri porovnávaní, si načíta zadefinovaný kód z EEPROM do registra W a postupne porovnáva 8 čísel . Zadané s tými čo sú v EEPROM.
Zápis do EEPROM sa použije iba vtedy ked by si chcel užívateľ zmeniť prístupové heslo.
Uvažujem zle o takomto fungovaní ?
Ďakujem
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
jakym zpusobem zjistujes jestli ti to funguje ?
ja sem si to otestoval takle....
fungovat to muze vseliak, az to cely napises tak bude jeste co upravovat ..
je treba zacinat postupne,zapis a cteni do ee funguje, obsluha klavesnice funguje ? pak spravne ulozeni do registru ? a pak muzes resit porovnavani hesel, az to vsechno budes mit odladeny tak uz si to muzes poskladat jakchces ...
takze co ti nejde ?
ja sem si to otestoval takle....
fungovat to muze vseliak, az to cely napises tak bude jeste co upravovat ..
je treba zacinat postupne,zapis a cteni do ee funguje, obsluha klavesnice funguje ? pak spravne ulozeni do registru ? a pak muzes resit porovnavani hesel, az to vsechno budes mit odladeny tak uz si to muzes poskladat jakchces ...
takze co ti nejde ?
0
Re: začiatočník v assembleri
klavesnica funguje.
porovnávanie funguje , teda ak sa nemýlim, pretože ked som do porovnávania dal porovnať iba jedno číslo, ale muselo to byť číslo stlačenej klávesy, tak to ide.
Zápis som zatial neriešil pretože som sa zasekol na tom porovnávaní ak to malo porovnávať nestlačenú žiadnu klávesu, čiže prázdny register s prázdnym miestom v EEPROM ( 0xFF ) .
To bola moja prvá otázka prečo mi to pri porovnávaní pomocou SUbWF vyhodí že výsledok nie je nulový.
Na toto som stále nedostal odpoveď.
Keď zistím kde je chyba, tak pojdem na zapisovanie do EEPROM.
Zapisovanie bude zariadenie vykonávať iba pri otvorenom zámku, ale tam som ešte neni.
Dúfam že ma chápeš, čo myslím.
porovnávanie funguje , teda ak sa nemýlim, pretože ked som do porovnávania dal porovnať iba jedno číslo, ale muselo to byť číslo stlačenej klávesy, tak to ide.
Zápis som zatial neriešil pretože som sa zasekol na tom porovnávaní ak to malo porovnávať nestlačenú žiadnu klávesu, čiže prázdny register s prázdnym miestom v EEPROM ( 0xFF ) .
To bola moja prvá otázka prečo mi to pri porovnávaní pomocou SUbWF vyhodí že výsledok nie je nulový.
Na toto som stále nedostal odpoveď.
Keď zistím kde je chyba, tak pojdem na zapisovanie do EEPROM.
Zapisovanie bude zariadenie vykonávať iba pri otvorenom zámku, ale tam som ešte neni.
Dúfam že ma chápeš, čo myslím.
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
takze :Zápis som zatial neriešil pretože som sa zasekol na tom porovnávaní ak to malo porovnávať nestlačenú žiadnu klávesu, čiže prázdny register s prázdnym miestom v EEPROM ( 0xFF ) .
To bola moja prvá otázka prečo mi to pri porovnávaní pomocou SUbWF vyhodí že výsledok nie je nulový.
Na toto som stále nedostal odpoveď.
čiže prázdny register -> clrf HESLO
prázdnym miestom v EEPROM -> de 0xff
http://technology.niagarac.on.ca/staff/ ... SUBLW.html
W= vysledek v priloze ...
- Prílohy
-
- kodovy zamok1.asm
- (1.86 KiB) 79 stiahnutí
0
Re: začiatočník v assembleri
Ďakujem, ale to som sa nikam nepohol. Tomu datasheetu nerozumiem. Prečo si mi posla SUBLW, ked v programe je SUBWF.
Prosím ťa keď mi chceš pomocť, napíš mi to normálne polopatyaticky v SK, alebo CZ jazyku .
ďakujem
Takto to byť nemôže, pretože ja to chcem spraviť tak aby si uživateľ lubovolne vybral ake dlhe chce mať heslo . Od 0-8 .
To znamená, že ak bude mať heslo 5 miestne a bude kontrolovať vždy 8 pozícií , tak by mi to hádzalo chybu. To som asi na začiatku zabudol spomenúť, tak sa ospravedlnujem.
Prosím ťa keď mi chceš pomocť, napíš mi to normálne polopatyaticky v SK, alebo CZ jazyku .
ďakujem
Takto to byť nemôže, pretože ja to chcem spraviť tak aby si uživateľ lubovolne vybral ake dlhe chce mať heslo . Od 0-8 .
To znamená, že ak bude mať heslo 5 miestne a bude kontrolovať vždy 8 pozícií , tak by mi to hádzalo chybu. To som asi na začiatku zabudol spomenúť, tak sa ospravedlnujem.
0
-
- Stály člen
- Príspevky: 481
- Dátum registrácie: 20 Apr 2011, 00:00
- Bydlisko: Lazne Kynzvart / CZ
Re: začiatočník v assembleri
s tim odkazem sem se sek , tak tedy spravny http://technology.niagarac.on.ca/staff/ ... SUBWF.html
koukni se na ty examply v jakim pripade se nastavuje Z, tot odpoved na
pokud na to prides sam je to dalsi + pro tebe nez kdyz ti to jen tak dam na zlatym podnose
no, program si si psal sam, tymusis vedet jak tam zakomponovat delku hesla, proto si mas sam delat takovydle testovasi programy abys odhalil chybu...
koukni se na ty examply v jakim pripade se nastavuje Z, tot odpoved na
takze pokud chces mit vysledek nulovy , musi byt hodnota ve W s registrem v inctrukci SUBWF jaka ?To bola moja prvá otázka prečo mi to pri porovnávaní pomocou SUbWF vyhodí že výsledok nie je nulový.
pokud na to prides sam je to dalsi + pro tebe nez kdyz ti to jen tak dam na zlatym podnose
no, program si si psal sam, tymusis vedet jak tam zakomponovat delku hesla, proto si mas sam delat takovydle testovasi programy abys odhalil chybu...
0
Re: začiatočník v assembleri
Jedna poznamka: ak niekde najdes chybu, osekavaj program okolo tejto chyby na absolutne minimum, aby si vylucil, ze chybu sposobuje nieco ine. Pomoze to tebe a ked to potom posles do fora, ludia budu ochotnejsi poradit ti, lebo sa nemusia matlat niekolkymi stranami slabo komentovaneho kodu.
Ak by tam bolo 20 riadkov, ktore jasne demonstruju problem, viac ludi by mohlo prilozit ruku k dielu.
Ak by tam bolo 20 riadkov, ktore jasne demonstruju problem, viac ludi by mohlo prilozit ruku k dielu.
0
Re: začiatočník v assembleri
Milos - dakujem pozrem na to este raz .
Jaromir - ano mas pravdu ale moja otazka znela jednoducho.
Preco ked do registra a dam cislo 0xff, alebo 255 alebo ho necham prazdny( vymazem pomocou clrf) a do registra b nacitam hodnotu z eeprom z prazndneho miesta, cize nacita 0xff, a tieto registre vzajomne odcitam tak vysledok nie je nula.
Da sa na to odpovedat jednou vetou?
Nic ine nepotrebujem vediet , program chcem napisat sam aby som sa ucil, ale toto ma zastavilo a neviem sa pohnut.
Tot vsio
Jaromir - ano mas pravdu ale moja otazka znela jednoducho.
Preco ked do registra a dam cislo 0xff, alebo 255 alebo ho necham prazdny( vymazem pomocou clrf) a do registra b nacitam hodnotu z eeprom z prazndneho miesta, cize nacita 0xff, a tieto registre vzajomne odcitam tak vysledok nie je nula.
Da sa na to odpovedat jednou vetou?
Nic ine nepotrebujem vediet , program chcem napisat sam aby som sa ucil, ale toto ma zastavilo a neviem sa pohnut.
Tot vsio
0