Vitkovsky zpravodaj

. . .zapoj se a publikuj

Lekce 5 – Početní operace


Pokud chceme v programu něco vypočítat, musíme si u procesorů pic vystačit s pouze s těmito příkazy:

incf f,d    ;přičte k proměnné f jedničku a výsledek uloží do W, nebo zpět do souboru

decf f,d   ;Odečte jedničku

subwf   ;odečte W a proměnnou

addwf   ;sečte W a proměnnou

andwf    ;logický součet AND

xorwf    ;funkce XOR

iorwf    ; logciká OR funkce

Toto jsou základní početní operace. Veškeré početní operace ovlivňují Z (registr STATUS, bit Z zero, pokud je výsledek nula), sčítání a odčítání dále ovlivňují C (carry – hlásí přetečení kapacity paměti) a DC (digit carry)

příklad 1:

movlw .6  ;6 do registru W

movwf promenna   ; uložit do proměnné s názvem promenna

decf promenna,W;  odečte z proměnné jedničku a výsledek uloží do W

;příklad 2: nyni mame v W registru  hodnotu 5

subwf promenna,f ;odečte z hodnoty promenna (stale šest) registr W (odečte pětku) a uloží do F

;příklad 3

addwf promenna,W ;sečte registr W(hodnota 5) s registrem promenna(1) a uloží do W

příklad 4 násobení (neošetřené, max do výsledku  255)

nasobek equ 5;   hodnota číslo jedna

nasobitel equ 6; hodnota číslo dvě

vysledek equ 025h

clrf W ;vymaže w registr

incf nasobek ; k násobku přičíst 1, aby to při prvním odečítání sedělo (nyní je 6)

vratse

decfsz nasobek; odečte od hodnoty nasobek 1 a otestuje, jestli není nulový stav. Pokud ano, potom přeskočí následující řádek

goto pricist; pokud ještě není nula , tak skok na podprogram přičíst

movwf vysledek ;výsledek z W uložíme do  registru výsledek

goto ~~ tady program nasměrujeme dále,výsledek je uložen v  registru výsledek

pricist

addwf nasobitel,W ;přičíst násobitel s W, výsledek do W

goto vratse

end

tento prográmek není nijak ošetřen a neřeší, jestli dojde k přeetečení výsledku(výsledek  se nevejde do 255) . Máme li výsledek větší než 255, musíme jej rozdělit do dvou a více segmentů paměti. Druhý a další segmenty by se plnily příkazem incf při každém přetečení registru W. Přetečení bychom kontrolovali registrem status,C

A proč právě 255 ? Procesor 16f628 je osmibitový, to znamená, že každý segment jeho paměti má 8 bitů. Každý bit může mít hodnotu nula, nebo jdena. Pokud naplníme všechny bity hodnotou 1, což je maximum co nám tato technologie nabízí získáme tuto hodnotu „11111111“. Převedeme li to na desítkovou soustavu, potom výjde našich 255 , nebo ff hex. Dvojková a šestnástková soustava se používá proto, že je lépe pochopitelná a čitelná při programování. Jenom je nutné si na to zvyknout. potřebujeme-li např. vyjádřit číslo větší, třeba 256, je to ve dvojkové i šestnástkové soustavě jednoduché. už by se jednalo o zápis o dvou registrech, první by měl hodnotu 1 a druhý nula. pro lepší pochopení , první číslo vyjadřuje násobky 256, druhé do 256 a v binárním  by to vypadalo takto 0000000100000000, přičemž prvních osm nul je první hodnota (násobky 256)a dalších osm je do 256.

18.2.2010 - Posted by | Programování procesorů PIC

Sorry, the comment form is closed at this time.

%d bloggers like this: