začiatočník v assembleri

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: začiatočník v assembleri

Príspevok od používateľa jaromir » 14 Júl 2013, 14:19

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

Používateľov profilový obrázok
petersno
Ultimate člen
Ultimate člen
Príspevky: 2774
Dátum registrácie: 06 Aug 2011, 00:00
Bydlisko: ba
Vek: 63

Re: začiatočník v assembleri

Príspevok od používateľa petersno » 14 Júl 2013, 14:22

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 :wink:
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 :D
0

Používateľov profilový obrázok
danhard
Ultimate člen
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

Príspevok od používateľa danhard » 14 Júl 2013, 14:46

cmeliak napísal: ... a vrchné 2 bity sú v ADRESL s ktorým nič nerobím.
Jaké vrchné bity, když je to left justified ?
Jakou váhu má nejnižší bit, který zpracováváš v mV ?
0

cmeliak
Nový člen
Nový člen
Príspevky: 81
Dátum registrácie: 14 Jún 2011, 00:00
Bydlisko: Veľký Krtíš
Vek: 29

Re: začiatočník v assembleri

Príspevok od používateľa cmeliak » 14 Júl 2013, 21:29

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.
Prílohy
Bez názvu.png
0

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 03 Feb 2014, 17:15

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
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 03 Feb 2014, 19:04

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
fsr.JPG (25.83 KiB) 8104 zobrazení
0

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 03 Feb 2014, 19:18

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 ?
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 03 Feb 2014, 21:27

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ť?
ano tohle sme vyresily
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
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 neudelas
0

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 04 Feb 2014, 23:56

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:
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 05 Feb 2014, 11:45

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

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 05 Feb 2014, 14:29

OK, prikladam v prilohe .

ďakujem
Prílohy
kodovy zamok.asm
(5.81 KiB) 86 stiahnutí
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 05 Feb 2014, 17:37

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 ?
Prílohy
kodovy zamok.asm
(8.15 KiB) 78 stiahnutí
0

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 05 Feb 2014, 18:37

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
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 06 Feb 2014, 13:34

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 .. :wink:
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

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 06 Feb 2014, 13:41

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.
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 06 Feb 2014, 16:07

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ď.
takze :
č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) 78 stiahnutí
0

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 06 Feb 2014, 17:56

Ď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.
0

MiloPS3
Stály člen
Stály člen
Príspevky: 480
Dátum registrácie: 20 Apr 2011, 00:00
Bydlisko: Lazne Kynzvart / CZ

Re: začiatočník v assembleri

Príspevok od používateľa MiloPS3 » 06 Feb 2014, 19:08

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
To bola moja prvá otázka prečo mi to pri porovnávaní pomocou SUbWF vyhodí že výsledok nie je nulový.
takze pokud chces mit vysledek nulovy , musi byt hodnota ve W s registrem v inctrukci SUBWF jaka ?

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

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: začiatočník v assembleri

Príspevok od používateľa jaromir » 06 Feb 2014, 19:12

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.
0

bebeno28
Stály člen
Stály člen
Príspevky: 204
Dátum registrácie: 16 Sep 2012, 21:34
Bydlisko: Trnava

Re: začiatočník v assembleri

Príspevok od používateľa bebeno28 » 06 Feb 2014, 20:15

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
0

Napísať odpoveď