PIC asm - "större än"?
- Klas-Kenny
- Inlägg: 11757
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
PIC asm - "större än"?
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?
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"?
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?
Kolla C, DC flaggor
Vad är det för processor?
- Swech
- EF Sponsor
- Inlägg: 4736
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: PIC asm - "större än"?
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
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"?
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å
Kör du PIC16:
Subtraherar du och kollar C biten i status.
För sent ute var man också

- Klas-Kenny
- Inlägg: 11757
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: PIC asm - "större än"?
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.

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"?
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.Swech skrev:Utifrån om det blev carry eller inte så avgör du vilken som är störst.
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.
- Klas-Kenny
- Inlägg: 11757
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: PIC asm - "större än"?
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".

Man brukar vad jag vet skilja på "större än" och "större än eller lika med".
- Klas-Kenny
- Inlägg: 11757
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: PIC asm - "större än"?
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?
*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?