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.
PIC, hur tänka för att kontrollera om ett AD-värde över x
Re: PIC, hur tänka för att kontrollera om ett AD-värde över
Subtraherar talen och kolla Carry.
Re: PIC, hur tänka för att kontrollera om ett AD-värde över
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:
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!!!
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.
...
DISCLAMER: Har ej testat koden!!!
Re: PIC, hur tänka för att kontrollera om ett AD-värde över
Hej,
På 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.
På 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
tack och bock för alla svar!
//Ulf L.
//Ulf L.