Test av bit/ar som fraser (define).

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Test av bit/ar som fraser (define).

Inlägg av Erik M »

Jag satt å skrev på test av differential och upptäckte hur MicroChip återigen vänt på språkbruk.

För SUBWF, språkmässigt "subtrahera W från F" dvs f - W , gäller att C = 0 om W > f.
För SUBLW, som språkligt låter som "subtrahera L från W dvs W - k, gäller att C = 0 om W > k.

Fördelen är att instruktionerna fungerar på samma vis, trots hur de fungerar språkligt.

Nästa steg är att göra dem begripliga.
Främst för att slippa den logiska akrobatik som krävs för att få ut korrekt resultat.

Jag tänker att det är samma test efter både SUBLW och SUBWF.

Har jag fått ihop det rätt här?

Kod: Markera allt

#define	IF_W_More	BTFSS	STATUS, C
#define	IF_W_Less	BTFSC	STATUS, C
När det gäller BTFSC och BTFSS får jag dem till:

Kod: Markera allt

#define	WHEN 	BTFSC
#define	IF_not	BTFSS
Det blir enklare se vad som kommer ske på så vis.
Att använda "WHEN" istället för "IF" är mest för att få fraserna att balansera mot varandra.

För test av noll och lika verkar det bli:

Kod: Markera allt

#define	IF_Equal	BTFSC	STATUS, Z
#define	IFnotEqual	BTFSS	STATUS, Z
Det blir enklare se vad som kommer ske på så vis.

Ett "[fras]_THEN" är underförstått i alla fallen ovan.


Att skriva fraser med definitioner av denna typ tycker jag fungerar väl.
Andra tycker annat.
Men om det bortses från personlig åsikt i den frågan - ser ovan korrekt ut?