Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

pettter´s noob faq...
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: so březen 03 2018, 14:13    Předmět: Citovat

Tak ďalšia noob otázka!
MCU PIC16F88, SW MPLAB X IDE, Assembler

Mám direktívy:
kód:
            RRF   DELAY, f              ;alebo
             DECF DELAY, f


Čo znamená to ´f´ v týchto príkazoch?

Dík.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: so březen 03 2018, 14:44    Předmět: Citovat

Atlan napsal(a):
Stiahni si cesky preklad pre pic 16f84.

ty sis ten DS ani neotevrel !

tohle neni direktiva,to sou zakladni prikazy, je jich cca 30, tak si otevri ds a precti si co znamenaj

http://pic16fxx.sweb.cz/programovani/instrukce_pic12-16fxx.pdf
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: so březen 03 2018, 16:29    Předmět: Citovat

MiloPS3 napsal(a):
...ty sis ten DS ani neotevrel...


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´???
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: so březen 03 2018, 17:01    Předmět: Citovat

urcite si si vsiml ze kdyz mas treba
kód:
movlw   petter
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.

napr: CBLOCK,ENDC,CONFIG,DE,DEFINE,DT,DW,EQU,ERROR, ENDIF,INCLUDE,LIST, NOLIST,ORG, ,UNDEFINE,BANKSEL,PAGESEL,BANKISEL,MOVFW ....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: so březen 03 2018, 20:17    Předmět: Citovat

MiloPS3 napsal(a):
...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 -----------------------------------------------------

;-----Bank0------------------
INDF             EQU  H'0000'
TMR0             EQU  H'0001'
PCL              EQU  H'0002'
STATUS           EQU  H'0003'


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?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: so březen 03 2018, 20:40    Předmět: Citovat

jak je uvedeno pro DECF
citace:
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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: so březen 03 2018, 21:07    Předmět: Citovat

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ť...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: ne březen 04 2018, 6:36    Předmět: Citovat

ano
ano
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: ne březen 04 2018, 12:29    Předmět: Citovat

Díky. Zas o jednu puzzlu viac v obrázku...

Ešte ma napadlo, že ak namiesto ´w´ zadám 0, alebo namiesto ´f´ zadám 1, tak je to to isté.

Teda:
kód:
DECF   NIEČO, f
DECF   NIEČO, w


je to isté ako:
kód:
DECF   NIEČO, 1
DECF   NIEČO, 0

???

Som to skúsil a debuger to pri simulácii nevyhodnotil ako chybu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: ne březen 04 2018, 13:27    Předmět: Citovat

Prekladac na miste od kud kam ocekava 0 nebo 1 a v jaky podobe mu to podas je uplne burt
kód:
leva_kapsa EQU 0
prava_kapsa EQU 0b1

DECF FSR,leva_kapsa
DECF FSR,prava_kapsa
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4507
Bydliště: Košice

PříspěvekZaslal: ne březen 04 2018, 17:19    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: so březen 10 2018, 10:23    Předmět: Citovat

Atlan napsal(a):
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"...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MiloPS3



Založen: Aug 07, 2010
Příspěvky: 262

PříspěvekZaslal: so březen 10 2018, 15:26    Předmět: Citovat

pokud zustanes u mikrocipackyho Cka tak ten "citat" ber s velkou rezervou..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ZdenekHQ
Administrátor


Založen: Jul 21, 2006
Příspěvky: 25741
Bydliště: skoro Brno

PříspěvekZaslal: so březen 10 2018, 15:31    Předmět: Citovat

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[?
]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
pettter



Založen: Oct 07, 2013
Příspěvky: 83

PříspěvekZaslal: so březen 24 2018, 12:13    Předmět: Citovat

PIC16F88
Assembler v MPLAB X IDE

Ď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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6  Další
Strana 3 z 6

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.17 sekund