Sida 1 av 1

PIC, hur tänka för att kontrollera om ett AD-värde över x

Postat: 10 januari 2014, 20:46:35
av MrIzoard
Hejsan!

Det är assembler som gäller för nedanstående.

Jag har läst in ett 10-bitars AD-värde och har det i två variabler (hög och låg).
Hur gör man smidigast för att kontrollera om det är över x?
I den applikation som jag skall göra så är det inte extremt noga på värdet så vi säger att x = 31 i detta fall.

Min tanke är att jag roterar höger 5 gånger och sedan kör jag någon instruktion som uppdaterar statusregistret och så kontrollerar jag zero-biten.

Är det en bra lösning eller har ni några bättre/snyggare lösningar?

M.v.h.
Ulf L.

Re: PIC, hur tänka för att kontrollera om ett AD-värde över

Postat: 10 januari 2014, 21:00:20
av Icecap
Subtraherar talen och kolla Carry.

Re: PIC, hur tänka för att kontrollera om ett AD-värde över

Postat: 10 januari 2014, 21:44:13
av YD1150
Fungerar nog med XOR också.

Re: PIC, hur tänka för att kontrollera om ett AD-värde över

Postat: 11 januari 2014, 00:30:37
av Kaggen
Som dom säger ovan. Om vi antar att du högerjusterar AD resultatet och bara använder nedre 8-bitar funkar nedanstående kod:

Kod: Markera allt

movf  ADRESH,W    ; Hämta hög byte av AD resultat. Z-flaggan sätts om W laddas med 0 från ADRESH
btfss STATUS,Z    ; Om Z=1 är ADRESH = 0, så skippa nästa instruktion
goto  AD_TOO_BIG  ; AD > 255 så ingen idé att kolla låg byte.
movf  ADRESL,W    ; Hämta resultat från AD (nedre byte)
sublw .31          ; Subtrahera AD från X (31)
btfss STATUS,C    ; Kolla C flaggan, skippa nästa instruktion om C=1, Om C=1 så är AD <= X (31)
goto AD_TOO_BIG   ; Om denna rad exekveras är AD > X

; Om du kommer hit är AD <= X
...

AD_TOO_BIG
; Om du kommer hit är AD > X. Gör vad du nu skall göra i så fall.
...
Observera att denna kod enbart kollar nedre 8 bitarna. Skulle du välja att sätta X > 255 kommer ovanstående inte att funka.

DISCLAMER: Har ej testat koden!!!

Re: PIC, hur tänka för att kontrollera om ett AD-värde över

Postat: 11 januari 2014, 09:12:38
av void
Hej,

http://www.gooligum.com.au/tutorials/ finns flera trevliga tutorials.

Exempel 3 på sidan 10 i http://www.gooligum.com.au/tutorials/ba ... e_A_10.pdf finns ett exempel med kontroll av gränsvärde från ADC.

Re: PIC, hur tänka för att kontrollera om ett AD-värde över

Postat: 11 januari 2014, 20:00:48
av MrIzoard
tack och bock för alla svar!

//Ulf L.