Nybörjarfrågor PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Så registrerna nollställs alltså automatiskt när de har nått 0?

Är inte det samma sak ?
Användarvisningsbild
Fritzell
Inlägg: 4531
Blev medlem: 29 januari 2004, 22:43:35

Inlägg av Fritzell »

00h är väl inte samma som FFh? Eller har jag missat något?
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Nej 00h & FFh är inte samma sak, de är ett värde från varandra om man talar om en byte.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Att registret når noll är ju samma sak som att det nollställs, inte att noll och FF är sammma sak. Lite förvirring... :D
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

I delay-looparna kommer Q1 och Q2 att räkna från 'FF' => '00' då villkoret
för DECFSZ uppfylls och rutinen är klar. I första varvet vid *nästa* körning
av delay-looparna så kommer Q1 och Q2 först att räkna '00' => 'FF', och
sedan kör det på som innan tills det blir '00' igen. Alltså behöver du inte sätta
Q1/Q2 till 'FF' i själva koden, du får i princip samma fördröjning i alla fall.
Utom möjligen vid första körningen av delay-looparna, då Q1 och A2 är "undefined",
om det spelar roll, så får du hantera det innan körningen av delay-looparna.

Om du vill ha maximal fördröjning så är det bättre att använda "CLRF Q1/Q2"
istället, det ger ett extra "varv", men det är alltså helt onödigt eftersom både
Q1 och Q2 kommer att vara h'00' i alla fall...

Slutligen, vad exakt menar du med "nollställs" ?
Användarvisningsbild
Fritzell
Inlägg: 4531
Blev medlem: 29 januari 2004, 22:43:35

Inlägg av Fritzell »

Aha okej. Tackar för svaren. Vad jag menade med nollställs är att de får samma värde som de hade innan man började räkna bort från dem med decfsz. Hade för mig att det inte händer något när man drar bort 1 från 00h men i själva verket hamnar värdet på FEh istället?
Senast redigerad av Fritzell 27 december 2008, 12:12:57, redigerad totalt 2 gånger.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Inlägg av Walle »

FFh :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Vad jag menade med nollställs

"Nollställs" är att något blir "noll".
Det du beskriver skulle jag kalla "återställs".

> ...man drar bort 1 från 00h men i själva verket hamnar värdet på FEh istället?

Nej.

h'FF', så klart... D.v.s b'00000000' "minus ett" => b'11111111'

h'FF' "minus ett" => h'FE'

> innan man började räkna bort från dem med decfsz.

Det finns ingenting som håller reda på var du börjar att räkna !
D.v.s inbyggt i processorn, du själv kan ju fixa det med din egen kod, om du vill.
Användarvisningsbild
Fritzell
Inlägg: 4531
Blev medlem: 29 januari 2004, 22:43:35

Inlägg av Fritzell »

Just det :D. Hann faktiskt ändra till FF innan jag såg ditt svar men ändrar väl tillbaka för sammanhangets skull :).
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Ah, OK... :-)
Då var både Walle och jag lite för snabba... :-)
Tips: Använd "Förhandgranska" så är det lättare att fånga upp sådana
där småmissar innan man "Skickar".
Skriv svar