Stránka 4 z 6

Napsal: 24 bře 2018, 13:15
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      

Napsal: 24 bře 2018, 15:19
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?

Napsal: 24 bře 2018, 16:36
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

Napsal: 24 bře 2018, 16:52
od pettter
Hmm, ja som to presypal cez konvertor https://www.binaryhexconverter.com/hex-to-binary-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...

Napsal: 25 bře 2018, 12:25
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...

Napsal: 25 bře 2018, 12:42
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 ?

Napsal: 25 bře 2018, 19:49
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í...

Napsal: 25 bře 2018, 20:29
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:

Napsal: 25 bře 2018, 21:20
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...

Napsal: 25 bře 2018, 22:16
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ť...

Napsal: 25 bře 2018, 22:36
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)

Napsal: 25 bře 2018, 23:01
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 🤐.

Napsal: 25 bře 2018, 23:11
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???

Napsal: 26 bře 2018, 06:03
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.

Napsal: 26 bře 2018, 06:06
od MiloPS3
W=k-W
?=0xA-0x5
?=0xA-(0x5-1)
jestly jsem to pochopi dobre.. pak na to jeste kouknu