[PIC programování] – 9. díl – bonus

Vítám vás u malého bonusu k devátému dílu.

Napadlo mě, že by někdo chtěl, aby jeho čítač počítal jen do určité hodnoty, např. od 0 do 9. V Assembleru nic jako porovnání čísel nemáme, alespoň ne tak, jak to známe z jiných jazyků, např. z jazyka C.

Abychom porovnali dvě čísla, budeme odčítat! K tomu nám slouží instrukce subwf a sublw. Rovnou ještě pro budoucí účely uvedu instrukce addwf a addlw, kterými naopak přičítáme.

Naše MCU má registr zvaný STATUS. Z tohoto registru umíme vyčíst spoustu důležitých věcí. Nás bude zajímat jeden jediný bit – Zero bit. Tento bit je roven 1, pokud je výsledek operací addwf, addlw, subwf a sublw nulový.

Pokud od registru odečteme nějakou konstantu a výsledek bude nulový, znamená to přece, že hodnota v registru se rovnala konstantě. Zkontrolujeme tedy Zero bit a když bude roven 1, naše čísla se rovnají.

Zde uvádím rovnou celý rozšířený program:

Ještě bych chtěl poznamenat, že pokud bychom chtěli porovnávat, je-li číslo větší/menší než jiné číslo, použijeme bit Carry (STATUS, C). Carry nás informuje, došlo-li k přetečení/podtečení registru. Pakliže se tak stalo (Carry = 1), číslo, které odečítáme, musí být větší. Pokud nedošlo, musí být naopak menší nebo rovno (poté kontrolujeme Zero bit a rozhodujeme, zda je menší nebo rovno).

A to je pro tento bonus vše. Uvidíme se v příštím díle!

Posted in PIC

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *