pettter´s noob faq...
Moderátor: Moderátoři
Ano, to máš recht. To chápem a akceptujem.
Ale občas narazíš na limity, dané zlým výkladom, či neschopnosťou pochopiť daný výklad, alebo na limity dostupnosti info a p. Potom potrebuješ popostrčiť...
Mne osobne vyhovuje viac verbálny spôsob, keď mi to ktosi opíše a vysvetlí, ako čítanie a tápanie v pocitoch, či tomu dobre rozumiem...
Úprimné díky všetkým za snahu a trpezlivosť...
PS: netešte sa, nikam neodchádzam...
Ale občas narazíš na limity, dané zlým výkladom, či neschopnosťou pochopiť daný výklad, alebo na limity dostupnosti info a p. Potom potrebuješ popostrčiť...
Mne osobne vyhovuje viac verbálny spôsob, keď mi to ktosi opíše a vysvetlí, ako čítanie a tápanie v pocitoch, či tomu dobre rozumiem...
Úprimné díky všetkým za snahu a trpezlivosť...
PS: netešte sa, nikam neodchádzam...
PIC16F88
MPLAB 8.92
Assembler
Prosím, v čom je rozdiel pri písaní kódu v MPLAB IDE ak je v:
- absolute code (MPASM assembler used only)
- relocatable code (MPASM assembler used with MPLINK
object linker)
Dostávam otázku pri zakladaní projektu a nemám šajnu vo co go... Skrátka neviem, čo mám zvoliť a v čom je rozdiel...
Odkazy s UG pre ASM:
MPASM Suite
MPASM Assembler, MPLINK Object Linker and MPLIB Object Librarian executables
and help files, support executables, assembler include (INC) files.
• Example – Example files.
• LKR – Linker scripts.
• Template – Template files to aid in code development.
- Code – Absolute code templates (MPASM assembler used only.)
- Object – Relocatable code templates (MPASM assembler used with MPLINK
object linker.)
There are two template files for each Microchip PIC MCU and dsPIC DSC device: one
for absolute code (no linker used) in the Code directory and one for relocatable code
(linker used) in the Object directory. Since we will be using the linker in this tutorial,
choose the file named 18F8722. in the Object directory.
Díky
MPLAB 8.92
Assembler
Prosím, v čom je rozdiel pri písaní kódu v MPLAB IDE ak je v:
- absolute code (MPASM assembler used only)
- relocatable code (MPASM assembler used with MPLINK
object linker)
Dostávam otázku pri zakladaní projektu a nemám šajnu vo co go... Skrátka neviem, čo mám zvoliť a v čom je rozdiel...
Odkazy s UG pre ASM:
MPASM Suite
MPASM Assembler, MPLINK Object Linker and MPLIB Object Librarian executables
and help files, support executables, assembler include (INC) files.
• Example – Example files.
• LKR – Linker scripts.
• Template – Template files to aid in code development.
- Code – Absolute code templates (MPASM assembler used only.)
- Object – Relocatable code templates (MPASM assembler used with MPLINK
object linker.)
There are two template files for each Microchip PIC MCU and dsPIC DSC device: one
for absolute code (no linker used) in the Code directory and one for relocatable code
(linker used) in the Object directory. Since we will be using the linker in this tutorial,
choose the file named 18F8722. in the Object directory.
Díky
Ako som pochopil s UG, tak pri "Relocatable" móde sa jedná o akúsi "prenositeľnosť" projektu, alebo o akési "spájanie" projektov.
Zle som položil otázku. Pýtam sa na rozdiely v čomsi o čo neviem nič, akoby som sa pýtal na farbu piesku na Sahare... Skrátka noob...
Lepšie sa spýtam:
Ktorý mód mám použiť? Predpokladám, že ten absolútny, but I´m not shure, brďo...
Zle som položil otázku. Pýtam sa na rozdiely v čomsi o čo neviem nič, akoby som sa pýtal na farbu piesku na Sahare... Skrátka noob...
Lepšie sa spýtam:
Ktorý mód mám použiť? Predpokladám, že ten absolútny, but I´m not shure, brďo...
PIC16F88
MPLAB IDE 8.92
Assembler
Tak z tohoto som pekne na tvrdo...
ak mám: a zadám:
tak sa mi do W načíta 0x20, ale ak zadám: tak do w načítam obsah adresy 020h.
Raz je fero číslom, raz adresou... sa PICnem
Kua to je bordel! Kto sa v tom má vyznať...
MPLAB IDE 8.92
Assembler
Tak z tohoto som pekne na tvrdo...
ak mám:
Kód: Vybrat vše
fero equ 0x20
Kód: Vybrat vše
MOVLW fero
Kód: Vybrat vše
MOVF fero
Raz je fero číslom, raz adresou... sa PICnem
Kua to je bordel! Kto sa v tom má vyznať...
Vyžiaril som momentálnu emóciu. Len to, že mám z toho chaos. Teraz som zase riešil, čo odčíta SUBLW ak:
teda fero je odkaz na číslo 0x20, toto číslo som použil ako adresu pre uloženie hodnoty 0x0a do bunky 0x20. No a hybaj ho odčítať:
A teraz som bol v prdeli, či konštanta je odkaz na číslo 0x20, či obsah bunky 0x0a. Po simulatovi mi je jasné, že odčíta ten odkaz na číslo, teda 0x20....
Skrátka mám v tom guláš jak hovado. Musím si tieto črty nabiť do hlavy. Ale dík tým simuláciam som poposkočil o 7míľový krok. Oheň a síru na MPLAB X IDE... ten 🤐 sw ma zdržal zo 3-4 mesiace. Furt som čosi musel na ňom riešiť namiesto chápania kódu kua!!!
Díky...
Kód: Vybrat vše
fero equ 0x20
movlw 0x0a
movwf fero
Kód: Vybrat vše
sublw fero
Skrátka mám v tom guláš jak hovado. Musím si tieto črty nabiť do hlavy. Ale dík tým simuláciam som poposkočil o 7míľový krok. Oheň a síru na MPLAB X IDE... ten 🤐 sw ma zdržal zo 3-4 mesiace. Furt som čosi musel na ňom riešiť namiesto chápania kódu kua!!!
Díky...
v pohode
to jak to pouzijes zalezi na prikazu
spis bych rek ze fero je 0x20 ,proste budes misto 32 rikat fero...pettter píše:fero je odkaz na číslo 0x20
to jak to pouzijes zalezi na prikazu
Kód: Vybrat vše
LW
WF
Môj prvý kód, čo som si sám vymyslel.
Zaplní postupne bunky cez nepriame adresovanie. Keď dosiahne určenú hornú hranicu, tak sa otočí a postupne bunky vymaže. Keď dosiahne dolnú hranicu, hybaj od začiatku...
A teraz do mňa!
Zaplní postupne bunky cez nepriame adresovanie. Keď dosiahne určenú hornú hranicu, tak sa otočí a postupne bunky vymaže. Keď dosiahne dolnú hranicu, hybaj od začiatku...
A teraz do mňa!
Kód: Vybrat vše
LIST P=16F88
#include <p16f88.inc>
CBLOCK 0X20
c20
c21
c22
c23
c24
c25
c26
c27
c28
c29
ENDC
min_addr equ 0x20
max_addr equ 0x29
x equ 0x30
RESET ORG 0x0000
;nastavenie registra pre nepriame adresovanie
movlw 0x20
movwf FSR
;nastavenie prvej bunky pamete
start movlw 0x01
movwf x
goto start_0
;dopredná zmena hodnot
;zmena hodnoty registra pre nepriame adresovanie, vysledok do registra
start_1 incf FSR, 1
;zmena hodnoty x, vysledok do x
incf x, 1
;zápis do bunky pamete
movf x, 0
start_0 movwf INDF
;test dosiahnutia max. adresy
movlw max_addr
subwf FSR, 0
btfss STATUS, Z
goto start_1
;vymazanie pamete
mazanie clrf INDF
decf FSR, 1
;test dosiahnutia min. adresy
movlw min_addr
subwf FSR, 0
btfss STATUS, Z
goto mazanie
clrf INDF
goto start
END
Chce to pečlivě prostudovat instrukce. Z popisu instrukce je jasné jestli pracuje s adresou bunky, nebo s jejím obsahem.či konštanta je odkaz na číslo 0x20, či obsah bunky 0x0a. Po simulatovi mi je jasné, že odčíta ten odkaz na číslo, teda 0x20....
Jednoduchá pomůcka je, že když je v instrukci písmeno L (a v popisu instrukce slovo Literal) tak pracuje s adresou, jinak s obsahem bunky.
Např:
promenna equ 0x20
MOVLW promenna ; adresa promenne do W
SUBLW promenna ; odečte obsah registru W od adresy promenne
MOVF promenna ; přesune obsah promenne do W
INCF promenna ; zvětší obsah promenne o 1
atd.
Hej, došlo mi, že to bola vovlovina.Atlan píše:Definovanie c 20 az c29 nema nejaky zmysel. A je v tomto priklade zbytocne...
Ano, súhlas, s bankami to je asi pakáreň, hlavne ak sú 4 ako v 16f88... nebodaj je aj viac... nó nazdar!Atlan píše:A bacha na banksel 0a 1 res. Pracu s bankami pamete. To by si sa potom mohol divit.
Netuším o čom píšeš...Atlan píše:A zdielane ram premene v dolnej casti pamete (tusim 16 registrov?)
Nahaj tak, dospejem aj k C...Atlan píše:Zase zbytocne starosti asm, ktore nemas ak by si pouzil Cko.