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

#76 Příspěvek od MiloPS3 »

kdyby jsi si to odsimuloval tak na to prides :roll:

kdyz ti to nekdo naserviruje na zlatim podnose tak se muzes tak akorad " domnievať "

kdyz na to prides sam tak to i pochopis ,a o tom to je

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

#77 Příspěvek od pettter »

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...

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

#78 Příspěvek od pettter »

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

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

#79 Příspěvek od MiloPS3 »

je to neco s pameti , uz si nepamatuju

pokud das relocatable tak se ti v okne WATCH nezobrazujou ty vlastni promeny jak se nam stalo pri zakladani toho projektu

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

#80 Příspěvek od pettter »

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...

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

#81 Příspěvek od pettter »

PIC16F88
MPLAB IDE 8.92
Assembler

Tak z tohoto som pekne na tvrdo...
ak mám:

Kód: Vybrat vše

fero equ 0x20
a zadám:

Kód: Vybrat vše

MOVLW fero
tak sa mi do W načíta 0x20, ale ak zadám:

Kód: Vybrat vše

MOVF fero
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ť...

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

#82 Příspěvek od MiloPS3 »

a ?

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

#83 Příspěvek od pettter »

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:

Kód: Vybrat vše

fero equ 0x20
movlw 0x0a
movwf fero
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ť:

Kód: Vybrat vše

sublw fero
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...

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

#84 Příspěvek od MiloPS3 »

v pohode
pettter píše:fero je odkaz na číslo 0x20
spis bych rek ze fero je 0x20 ,proste budes misto 32 rikat fero...

to jak to pouzijes zalezi na prikazu

Kód: Vybrat vše

LW
WF

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

#85 Příspěvek od pettter »

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!

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

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

#86 Příspěvek od Atlan »

Definovanie c 20 az c29 nema nejaky zmysel. A je v tomto priklade zbytocne.
A bacha na banksel 0a 1 res. Pracu s bankami pamete. To by si sa potom mohol divit.
A zdielane ram premene v dolnej casti pamete (tusim 16 registrov?)
Zase zbytocne starosti asm, ktore nemas ak by si pouzil Cko.

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

#87 Příspěvek od AB1 »

č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....
Chce to pečlivě prostudovat instrukce. Z popisu instrukce je jasné jestli pracuje s adresou bunky, nebo s jejím obsahem.

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.

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

#88 Příspěvek od pettter »

Atlan píše:Definovanie c 20 az c29 nema nejaky zmysel. A je v tomto priklade zbytocne...
Hej, došlo mi, že to bola vovlovina.
Atlan píše:A bacha na banksel 0a 1 res. Pracu s bankami pamete. To by si sa potom mohol divit.
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 zdielane ram premene v dolnej casti pamete (tusim 16 registrov?)
Netuším o čom píšeš...
Atlan píše:Zase zbytocne starosti asm, ktore nemas ak by si pouzil Cko.
Nahaj tak, dospejem aj k C...

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

#89 Příspěvek od pettter »

AB1 píše:...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...
Ďakujem.

Odpovědět

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