Sida 2 av 2

Postat: 11 mars 2007, 22:24:46
av Kaggen
Under ett anfall av total uttråkning läste jag igenom lite av din kod :)

Jag fann ett vanligt nybörjarfel som jag kallar "vad ligger *igentligen* i W-registret?"-felet.

Kod: Markera allt

step_1   
   bsf      sens1         ;ladda upp kondensatorn
   call   delay
   bcf      sens1
   movlw   0h            ;nollställ "time"
   movwf   time
   movlw   1h            ;lägg 1hex i W registret
   goto   portb5_in      ;ändra sens1 (portb5) till ingång

step_2
   addwf   time,f
...
Om du noga kontrollerar koden under din "step_1"-del av programmet sätter du w-registret till 1 INNAN du hoppar till kod "portb5_in" vilken också proppar in massa grejor i w-registret. När koden sedan hoppar tillbaka till "step_2" tror du i godan ro att du via "addwf time,f" adderar 1 till variabeln "time" i varje iteration när du igentligen adderar... ja, vad är det du adderar... ?

Edit: Såg just att sodjan tipsade om samma sak, man är sen som vanligt...

/Kaggen

Postat: 11 mars 2007, 22:39:19
av sodjan
Helt rätt.
W kommer tillbaka från "portb5_in" med b'00100000' i "bagaget"... :-)

Sen, lite inom parentes, så föredrar jag personligen h'00' och h'01' istället
för 0h och 1h (vilket är format som inte ens är upptagna i tabellen i
MPASM manualen !). Det är möjligt att det fungerar, men i alla fall...

Postat: 12 mars 2007, 09:55:15
av squiz3r
Det tänkte jag inte på fören nu när ni skrev det :) Tack så mycket! Får fixa det när jag kommer hem. Ska ta och ändra till "h'1'" istället :)

//Daniel A

Postat: 12 mars 2007, 10:09:52
av sodjan
Konstigt svar. Svårt att veta vad du syftar på.
*Vad* är det du inte har tänkt på och ska fixa ?

Postat: 12 mars 2007, 21:15:25
av squiz3r
Jag syftade på att jag ska ändra problemet med "vad ligger i W problemet" :) , och med att det ska vara h'1' istället för 1h eller 0x1.

För övrigt så funkar det nu att räkna "tiden" :D

Tack!
//Daniel A

Postat: 12 mars 2007, 21:28:15
av sodjan
OK :-)