Sida 1 av 1
PIC asm - "större än"?
Postat: 6 oktober 2010, 19:37:46
av Klas-Kenny
Klurar på en funktion som ska känna av ifall det är "mörkt eller ljust", detta med ett ljuskänsligt motstånd och ADC hade jag tänkt mig, samt ska kunna ställa in med hjälp av en potentiometer hur mörkt det ska vara för att räknas som mörkt.
Dock kan jag inte komma på hur jag ska kunna göra en bra funktion för det där, då jag vill ju ha ungefär
if(value_from_pot < value_from_resistor)
Dock kan jag inte komma på hur man kan lösa detta med ASM, några tips?
Re: PIC asm - "större än"?
Postat: 6 oktober 2010, 20:14:51
av *L.R*
någon enkel aritmetik i form av subtraktion med fast värde. Sedan kolla lämplig flagga i stusregistret.
Kolla C, DC flaggor
Vad är det för processor?
Re: PIC asm - "större än"?
Postat: 6 oktober 2010, 20:18:06
av Swech
PIC.
Du kör subtraktion och kollar på Carry flaggan
Ladda W med din gräns och subtrahera med ADns värde
Utifrån om det blev carry eller inte så avgör du vilken som är störst.
Är det större än en byte som du skall kolla så får du subtrahera i 2 steg och köra med
subtraktion med carry i steg 2
Swech
Re: PIC asm - "större än"?
Postat: 6 oktober 2010, 20:21:15
av v-g
Om du har PIC18 serien finns CPFSGT Compare F Skip Greater Than (finns även Less than)
Kör du PIC16:
Subtraherar du och kollar C biten i status.
För sent ute var man också

Re: PIC asm - "större än"?
Postat: 6 oktober 2010, 20:30:25
av Klas-Kenny
Aha, tackar
Kom nyss på hur man kan göra det enklare (Skulle jag tro...) med hårdvara istället (Spänningsdelare med ljuskänsligt motstånd samt pot, sen en zener ut, borde ge vettigt resultat? Så sparar jag i alla fall en pinne på PIC'en samt en del tid till att skriva mjukvara), men detta är ju bra att veta i många lägen ändå
Det är PIC16 (Troligen F616) som skall användas.
Re: PIC asm - "större än"?
Postat: 8 oktober 2010, 09:19:19
av bos
Swech skrev:Utifrån om det blev carry eller inte så avgör du vilken som är störst.
Om man bara gör en subtraktion så går det inte att enbart med hjälp av carry ta reda på vilket som är störst. Om tal1 är större än tal2 så blir det ingen carry i operationen tal1 - tal2, men det blir heller inte någon carry om de båda talen är lika. Med andra ord måste man även använda zero-flaggan / Z.
Om man gör tal1 - tal2 och sen tal2 - tal1 och jämför carrys så slipper man förstås använda Z, men det är ju att krångla till saker i onödan.
Re: PIC asm - "större än"?
Postat: 8 oktober 2010, 09:43:37
av Klas-Kenny
Fast sen är det ju skillnad på < och <=
Man brukar vad jag vet skilja på "större än" och "större än eller lika med".
Re: PIC asm - "större än"?
Postat: 8 oktober 2010, 09:53:46
av bos
Vad har det för relevans i fallet med att kolla carry?
Re: PIC asm - "större än"?
Postat: 8 oktober 2010, 09:59:17
av Klas-Kenny
På vilket sätt kan det bli krångel?
*nu pratar jag symboler i högnivåspråk*
När man använder <, vilket jag efterfrågade, och båda värden är detsamma, får man FALSE.
När man använder <= där emot, och båda värden är samma, får man TRUE.
Dvs, om jag förstått saken rätt, så borde det räcka med att kolla Carry för att få en "<"-funktion?
Re: PIC asm - "större än"?
Postat: 8 oktober 2010, 10:01:25
av bos
Ok, du menar så. Då är jag med.