pettter´s noob faq...

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

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#46 Příspěvek od MiloPS3 »

Kód: Vybrat vše

		BANKSEL 0
		CLRF	0X20
		CLRF	0X21
		CLRF	0X22
		CLRF	0X23
		CLRF	0X24
		CLRF	0X25
		CLRF	0X26
		CLRF	0X27

		MOVLW 0x20 
		MOVWF FSR  
NEXT	MOVWF INDF 
		INCF FSR, F
		MOVF FSR, W
		BTFSS	FSR,3
		GOTO	NEXT
		NOP		
Přílohy
INDF_PETTER.JPG
(34.66 KiB) Staženo 126 x

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#47 Příspěvek od pettter »

Ďakujem!

Úprimne, myslí mi to viac abstraktne ako logicky, alebo radšej mám opisný spôsob ako logický... tak to skúsim po svojom.

-vyčistil si bunky od 20h - až po 27h
-vrazil si hex 20 do FSR čím si nastavil FSR na bunku 20h v BANK0
-nastavil si "bod zlomu" NEXT
-tú istú dvacku z W si vrazil do INDF, čím si bunku 20h naplnil hodnotou 32 dec
-pripočítal si jednotku k hodnote FS, čím si FSR posunul na ďalšiu bunku, teda 21h
-natiahol si hodnotu FSR do W, teda teraz je to 21 hex, alebo 33 dec
-kontroluješ bit 3 vo FSR, teda stav keď hodnota FSR dosiahne 34 hex tak tých 34 hex je blbosť, to som sa pomýlil, správne je to 28 hex, viď nižšie
----------ak je log 0 vracia sa no "bod zlomu" (NEXT)
----------ak je log 1 program sa zastaví (NOP)


Červenému nerozumiem. Vyčistil si bunky len do 27 hex a vo výpise pamete to máš tiež len do 27 hex... Tak prečo až 34? Či je to jedno vzhľadom k tomu že ide o ukážku?
Naposledy upravil(a) pettter dne 24 bře 2018, 22:05, celkem upraveno 3 x.

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#48 Příspěvek od MiloPS3 »

pettter píše:kontroluješ bit 3 vo FSR, teda stav keď hodnota FSR dosiahne 34 hex
0x34 :?:
https://cs.wikipedia.org/wiki/%C5%A0est ... 1_soustava

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#49 Příspěvek od pettter »

Hmm, ja som to presypal cez konvertor https://www.binaryhexconverter.com/hex- ... -converter

A 34 preto, lebo si začal adresou 20 hex (0010 0000 bin). A najbližšie číslo, ktoré zmení bit 3 v adrese je ...

Aha do riti, 28!!! No nie som ja kus...

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#50 Příspěvek od pettter »

PIC16F88
Assembler v MPLAB X IDE

Mám tu (PE 07/2010 str. 5) taký príkaz, že:

Kód: Vybrat vše

LEDMEM EQU 0x20
SUBLW LEDMEM - 1
Chápem dobre, že:
- odčítam od LEDMEM (0x20) obsah v reg. W (LEDMEM-W=???)?
- parameter na konci ( - 1), určuje, kam s výsledkom, v tomto prípade do LEDMEM?
- ale prečo je tam znak "-" pred jedničkou?

alebo

Kód: Vybrat vše

MOVLW LEDMEM - 7
čo tu robí tých "- 7"?

Z datashitu to neviem vyčítať...
Help pleas...

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#51 Příspěvek od MiloPS3 »

pettter píše:- parameter na konci ( - 1), určuje, kam s výsledkom, v tomto prípade do LEDMEM?
jak si na to prisel ? tohle v DS urcite nepisou http://technology.niagarac.on.ca/staff/ ... SUBLW.html
čo tu robí tých "- 7"?
a co ti na to rek simulator ?

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#52 Příspěvek od pettter »

Musím úprimne priznať, že to neviem.
Ako skúšam, tak skúšam, zisťujem, že to neviem odsimulovať. Ja ten MPLAB X IDE "poněkud" nezvládam. A v príkazoch assemblera tiež plávam na tenkom ľade. Dúfam, že je to stav dočasný. Riadne ma to nasiera, klávesnica mala už párkrát namále. Ale rozbíjanie HW mi moc nepomôže, možno trochu uľaví...

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#53 Příspěvek od MiloPS3 »

Instrukce SUBLW nema zadny kam s vysledkem, odecita 1 od hodnoty ulozene ve W a vysledek se ulozi o5 do W,
-1 znamena ze odecte 1,-7 znamena ze odecte 7 , takhle mi to ukazal simulator, tohle jsem taky videl po 1vy

Pouzivas 16f88 ta ma porporu jeste ve starym MPLABu, vyskousej si simulator tam ... :wink:

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#54 Příspěvek od pettter »

Ďakujem.

Ano, uvažujem o tom starom MPLAB 8, aj keď nemá už podporu a ani vývoj. Lenže na to čo potrebujem ja, isto stačí a je určite o dosť jednoduchši...

Lenže je to kua ďalší, pre mňa nový SW o ktorom viem úplný prd, znova sa učiť od začiatku... to sa mi fakt nechce. Z tohoto "obra" (MPLAB X IDE) sa idem posrať už od predvianoc a už viem min. aspoň založiť projekt! Prečítal som o ňom už kilá chujovín a tak, takže som v rozpakoch z toho, či sa naň 🤐 či nie...

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#55 Příspěvek od pettter »

MiloPS3 píše:Instrukce SUBLW nema zadny kam s vysledkem, odecita 1 od hodnoty ulozene ve W a vysledek se ulozi o5 do W...
Sorry. Nechcem sa s Tebou prieť o to, čí máš pravdu, či nejako znevažovať Tvoje tvrdenia a p., len mi to nelezie do gebule a tak sa radšej opýtam ešte raz.
V popise (16f84A.cz, alebo 16F88.eng, aj v tom, čo si vlozil odkaz) je uvedené:
"SUBtract W from Literal, v českom DS - odečtení střadače od konstanty...
Syntax: [label] SUBLW k, v českom DS - navěští SUBLW k
Dokonca aj Operands vyzerá takto: k-(W)→(W), v českom DS: (W) = k - (W)

Kde je tu tá "-1"?

Skrátka ja to chápem tak, že od konštanty sa odčíta obsah W
SUBLW KONSTANTA = Konstanta - w(stradač)
Ak si poviem, že konštanta je 0x0A a v registri W (stradači) je hodnota 0x05, tak:
SUBLW KONSTANTA = 0x0A - 0x05 = 0x05
Chápem to dobre?
Tak som to pochopil. Len nechápem, načo je v tom mojom príklade z PE 7/2010 st.5 to "- 1"

No nič, idem zabiť mamuta (MPLAB X IDE) a simulovať...
Naposledy upravil(a) pettter dne 25 bře 2018, 23:54, celkem upraveno 1 x.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#56 Příspěvek od Atlan »

Ach jaj to je taka programatorska ficurka. Syntax prekladaca stale plati, ale ten co to programoval si ulachcil vec. k malo mat hodnotu 19. Tj zapis mal byt Sublw 19.
Ale kedze memled by mohol niekedy dat na inu adresu ako 0x20, tak to napisal ako napisal.
Ak by memled dal na 0x30 tak by musel prepisovat to sublw cislo. Ale takto sa to spravi samo.
Teda aby som bol presny preklafac tam vlozi cislo 19(res ine ake vypocita ledmem-nejake cislo (-1 alebo -7). uP o nicom nevie on si vypocita sublw 19(13)

Prejdi uz na Ccko. Lebo za zchvilu si pri strankovani pamete a problemoch pri prekroceni 8bit adresy stranky (napr praca s tabulkou a plc ci aky rrgister na to je)

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#57 Příspěvek od pettter »

Atlan píše:...Prejdi uz na Ccko...
Je..m sa s tým už cca 5 mesiac po večeroch. Mám 57 a čo sa večer naučím, tak do rána zabudnem a tak mám problém udržať niť pri tomto a som rád že viem aspoň toľko čo sa už na mňa nalepilo. Okolo mňa žiadny rovesník, či známy nemá šajnu s čím sa drbkám, teda vo význame, že by bol aspoň náznak, že by tomu rozumeli... a tak jediný zdroj praktických info ste Vy, borci na fórach...

A tak to všetko odhodiť a začať znova... to sa na to vys..iem úplne. Ak si približne starý ako ja, vieš o šom píšem. Ak si mladší tak do 40, rýchlo sa všetko nauč, lebo potom je to čistá tortúra...

Takže preto assembler a MPLAB X IDE, lebo som s tým začal, zúrim pri tom už dosť dlho a začať z iným je min. na 99% neprijateľné. Naviac ide leto a dlhé dni...

A prečo som s tým začal až teraz? To sa poseriete! Našiel som pri upratovaní pivnice 6ks digitrónov...
A tiež preto, že zo sedenia na pive so športovými, politickými, teologickými...sexuologickími teoretikmi 🤐.
Naposledy upravil(a) pettter dne 25 bře 2018, 23:21, celkem upraveno 1 x.

Uživatelský avatar
pettter
Příspěvky: 83
Registrován: 07 říj 2013, 02:00

#58 Příspěvek od pettter »

Atlan píše:Ach jaj to je taka programatorska ficurka...
To som principiálne pochopil, že v tom príklade z PE ukladá stav PORTB postupne do adries 0x20 - 0x27 a posúva sa hore dolu po tých bunkách cez zmenu na FSR.

Ja si len pre seba analyzujem príkaz za príkazom, aby som to pochopil detailne. A zároveň sa naučil významy a praktické použitie jednotlivých príkazov.

A tak som došiel k tomu SUBLW a zopakujem otázku: chápem ho dobre ak si myslím že:
Ak si poviem, že konštanta je 0x0A a v registri W (stradači) je hodnota 0x05, tak:
SUBLW KONSTANTA = 0x0A - 0x05 = 0x05


A ešte, ak to teda chápem dobre, na kieho je tam kua tá "-1" za príkazom???
Naposledy upravil(a) pettter dne 28 bře 2018, 08:09, celkem upraveno 1 x.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#59 Příspěvek od AB1 »

Ak si poviem, že konštanta je 0x0A a v registri W (stradači) je hodnota 0x05, tak:
SUBLW KONSTANTA = 0x0A - 0x05 = 0x05
Je to naopak. W se odečte od konstanty a uloží do W.

SUBLW KONSTANTA = 0x05 - 0x0A = -5

Viz
https://www.allcomp.cz/blog/wp-content/ ... AF-PIC.pdf
-------------------------------------------------------------------------
A ešte, ak to teda chápem dobre, na kieho je tam kua robí tá "-1" za príkazom???
LEDMEM EQU 0x20
SUBLW LEDMEM - 1

Operand je tady (LEDMEM - 1) = 0x1f.
Od 0x1f odečti W a ulož do W.

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#60 Příspěvek od MiloPS3 »

W=k-W
?=0xA-0x5
?=0xA-(0x5-1)
jestly jsem to pochopi dobre.. pak na to jeste kouknu

Odpovědět

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