Ale čítal neboj, už ma z toho riť bolí... lenže tam čítam veci ktorým nerozumiem...
MiloPS3 napsal(a):
...tohle neni direktiva,to sou zakladni prikazy...
Pochop že tápem aj v takýchto základoch ako je rozdiel medzi výrazom: "direktíva" a "základný príkaz". Tak si mi nadhodil hneď na ďalšiu noobku. Aký je rozdiel vo výrazoch "direktíva" a "príkaz"?
K tej mojej otázke na ´f´... v DS je k príkazu napr. RRF uvedené:
Syntaxe: návěští SUBWF f, d; komentář
Operandy: f = (0-127) d=(0,1) Obsah registru je posunut o jeden bit doprava přes C – příznak přenosu CARRY (rotace probíhá přes devět bitů). Výsledek je umístěn do střadače pro d=0 nebo do registru pro d=1.
K príkazu DECF je zas uvedené:
Syntaxe: návěští DECF f, d; komentář
Operandy: f = (0-127) d=(0,1) Operace: (f) - 1 → (cílový registr)
Ovlivňované příznaky: Z
Popis: Od obsahu registru je odečtena jednička a výsledek je uložen do střadače pro d=0 nebo do registru pro d=1.
A "moje přetrhdílo" vypadá takto:
kód:
RRF DELAY, f ;alebo
DECF DELAY, f
Chápem že to moje ´f´ je vlastne ´d´ z DS. Lenže čo reprezentuje to ´f´ z môjho přetrhdíla, či 0, či 1, tak z toho som v riti. Lebo aj v DS sú obe možnosti. Čo určuje hodnotu toho môjho ´f´???
a nikde toho petra nemas nijak zadefinovanyho tak ti to vyhodi chybu
to samy treba s f,w,POTRA,PORTx,STATUS,TMR1 atd
to vsechno je uvedeny v soubore k prislusnemu procesoru tady v p16f88.inc
otevres to v obycejnym textaku
jinak je to vzdy
prikaz - registr - odkat dam
takze to tvoje f (popripade w) je na miste toho d v DS , hodnotu toho f a w zjistis v tom *.inc
citace:
Pseudoinstrukce představují tzv. direktivy překladače. Protože tyto pseudoinstrukce nejsou řádnými intrukcemi mikroprocesoru, při běhu programu se nevykonávají - plní svojí funkci pouze při překladu zdroj. programu a říkají překladači, co má při překladu dělat. Tzn. K procesoru se nedostane. Pseudoinstrukce se používají i k mnoha dalším činnostem, můžeme pomocí nich dělat následující: přiřazovat symboly konkrétním objektům, inicializovat nebo rezervovat paměťový prostor, ovládat čítač instrukcí (PC) atd.
...to vsechno je uvedeny v soubore k prislusnemu procesoru tady v p16f88.inc...
Tak do toho .inc pozerám ako hus do piva a... hmm... ako by som to... som z toho oné... magor?
Neviem čo máš Ty v tom .inc, ale ja tam mám len hex hodnoty pridelené k výrazom (EQU). Príde mi to ako tabuľka s cenami za výrazy, akurát sú tie ceny v kryptomene HEX a to bez DPH.
Napr.:
kód:
; Register Definitions
W EQU H'0000'
F EQU H'0001'
;----- Register Files -----------------------------------------------------
Aha teraz mi došlo, že k znaku w je priradená hodnota 0000h, alebo 0000 0000b, alebo 0dec. A k znaku f je priradená hodnota 0001h, či 0000 0001b, či 1dec. Takže ak je uvedené:
kód:
INCF DELAY, f
znamená to že ak predpokladáme že DELAY má hodnotu pred príkazom napr.: 0010h, tak po príkaze bude mať hodnotu 0011h?
AK by som použil:
kód:
INCF DELAY, w
tak mi pridá nič, nulu a teda je to akoby som zadal NOP?
Od obsahu registru je odečtena jednička a výsledek je uložen do střadače pro d=0 nebo do registru pro d=1.
stridacen je myslen registr W ( ma adresu 0) neboli pracovni registr, pres nej se toci vsechny hodnoty,
takze pokud je v prikazu W neboli 0 tak se vysledek ulozi do W a registr zustane nezmenen -> incf "10" , W -> v registru 10 v W 11
pokud tam bude F neboli 1 tak se ulozi vysledek do registru -> incf "10" , F -> v registru 11
Aha, takže to w a f na konci nie je hodnota, ktorá sa pričíta, alebo odčíta, ale parameter ktorý určí v ktorej časti MCU sa výsledok objaví, či uloží??? V reg. W ake je použitý znak w, alebo v mnou zadanom registri aj je požitý znak f.
A príkaz INCF a DECF zvýši, alebo zníži výsledok vždy o jedničku???
Začína mi svitať, ja som sa totiž domnieval, že tým parametrom (w, f) môžem určiť koľko sa pričítava, či odčítava a za boha som nevedel ako a kde zadám koľko sa má odčítať...
Založen: May 10, 2004 Příspěvky: 4507 Bydliště: Košice
Zaslal: ne březen 04 2018, 17:19 Předmět:
Este tak 3 strany asm, a dostaneme sa k deleniu a nasobeniu a vysledkom bude prechod na C jazyk.
Teda akho z toho. Nepicne uz pri porovnavani 2 res viacerych cisel.
Este tak 3 strany asm, a dostaneme sa k deleniu a nasobeniu a vysledkom bude prechod na C jazyk...
Toto je starý a nikdy nekončiaci spor. Asi máš pravdu, že skončím na C. Ale čosi som o tom prečítal na Microchipe a ta o.i. uvádzajú:
"Kľúčovou výhodou používania jazyka na vysokej úrovni (napríklad C, Fortran alebo Basic) je to, že programátor nemusí chápať architektúru použitého mikroprocesora; znalosť architektúry je ponechaná kompilátorovi.
Napríklad ... osoba, ktorá píše program na vysokej úrovni, vie o správe pamäte málo alebo nič, táto úloha bola delegovaná na softvérového inžiniera, ktorý napísal kompilátor..."
Takže preto assembler, aby som poznal "zač je toho Loket"...
Založen: Jul 21, 2006 Příspěvky: 25741 Bydliště: skoro Brno
Zaslal: so březen 10 2018, 15:31 Předmět:
Aplikace instrukce MUL a DIV způsobila kdysi docela zásadní "boj" mezi vyznavači 8-bit procesorů Intel vs. Microchip. Na co je na čipu třeba AD převodník, když tam chybí základní podpora matiky... A naopak. _________________ Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Ďakujem Vám za Vaše poznámky a odpovede na moje noob´s questions...
A tak pridám ďalšiu!
Mocem sa okolo nepriameho adresovania. Takže soudruzi, kontrolní votázka:
- zápisom do INDF zapisujem vlastne do FSR+STATUS bit7 (výber BANK) ???
- FSR+STATUS bit7 si však dopredu musím nastaviť ???
Predpokladám, že je to tak a tak ďalšia otázka je, že ako sa postupne posúvam po bunkách pamete, ak chcem ukladať do, či čítať z buniek.
Napr. chcem uložiť hodnotu z:
- PORTA do bunky BANK0-0x20
- PORTB do bunky BANK0-0x21
- PORTC do bunky BANK0-0x23...
Ako dosiahnem to posunutie medzi bunkami? Inkrementáciou FSR?
Napr. takto?
kód:
MOVF FSR,0x20 ;predpokladám že STATUS IRP = 0, takže BANK0
MOVF PORTA,W
MOVWF INDF
INCF FSR,f
MOVF PORTB,W
MOVWF INDF
INCF FSR,f
MOVF PORTC,W
MOVWF INDF
...
Iný príklad:
- FSR+STATUS bit7 mám nastavené na adresu 0x20 v BANK0 BCF STATUS,IRP (STATUS bit7 = 0 = BANK 0/1) MOVF FSR,0x20
- zápisom MOVF INDF,0x01 vložím hodnotu 01 hex (1 dec, 0000 0001 bin) do adresy 0x20 BANK0. Ako sa posuniem na adresu 0x21 BANK0?
Napr. takto?
kód:
MOVF FSR,0x20 ;nastavím prvú adresu na 0x20
MOVF INDF,0x01 ;vrazím do nej hodnotu 1 dec
INCF FSR,f ;posuniem sa na ďalšiu adresu, teda 0x21
...
A nezúrte, že nechápem niektoré prosté pochody, som predsa noob.
Naposledy upravil pettter dne so březen 24 2018, 13:22, celkově upraveno 2 krát.
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.