P16F88 - jednoduchý komparátor dvou čtyřbitových čísel

Dobrý den mám problém s MPlabem. Chodím na střední školu a tam s tímto programem děláme.
A já jsem veliký začátečník a nevím si s tím rady.

Zde je jeden příklad který by jsme měli udělat a byl bych rád kdyby mi s tím mohl někdo poradit.

Sestavte program, který bude sloužit jako komparátor dvou čtyřbitových čísel. Obvod bude mít 3 výstupy, které budou udávat následující situace:
a < b , a = b , a > b
Návod: čísla odečteme, pokud se rovnají, má bit …. u registru …… hodnotu …… Pokud je jedno větší, dojde k přetečení, a pak má bit … u registru …. hodnotu …. . No a z těchto dvou hodnot zkombinujeme situace >, <, =, a je to.

Jde o to to naprogramovat v tom MPLABu.

Předem děkuji za každou pomoc.

:arrow_right: administrator: přejmenováno z "P16F88"

Jestli píšeš v ASM, tak při odečítání ti reg STATUS udává, jakej byl výsledek. Kladný, zaporný nebo zero.

Asi takto:

movlw a ;a= 0 - 255
movwf reg_a
movlw b ;b = 0 - 255
movwf reg_b

bcf STATUS,C ;před odečtem nastav C = 0

movf reg_b,W ;načti hodnotu b do W
subwf reg_a,W ;odečti obsah reg_a - W tj. a - b

;pokud a - b = 0 ,Z = 1,C = 1
;pokud a - b > 0 ,Z = 0,C = 1
;pokud a - b < 0 ,Z = 0,C = 0

btfsc STATUS,Z ;přeskoč následující instrukci pokud Z = 0
goto loop1 ;pokračuj na loop1, Z = 1, tj a = b

btfsc STATUS,C ;přeskoč následující instrukci pokud C = 0
goto loop2 ;pokračuj na loop2, C = 1, tj a > b
goto loop3 ;pokračuj na loop3, C = 0, tj a<b

STATUS,C nulovat nemusíš před tím. A tak nějak by to mohlo fungovat :open_mouth:

standa takto sa to nerobi lebo sa ho nezbavime :smiley: vsetko niekomu dať na podnose hlavne ked je to asi zaadanie doškoly…keby prejavil viac snahy nepoviem nič…