Det gick... Men inte mycket mer....
Tänkte göra så den räknar sekunder uppåt, men den halkvar efter flera sekunder redan efter en minut!
Klarar inte picen av o hålla tempot eller var ligger felet...?
Bifogar koden. Insåg att jag tänkte lite fel då display inte behöver vara en variabel, ursäkta för allt onödigt tjat...
Kod: Markera allt
DEFINE OSC 4
TRISB = 0
TRISA = 0
tmpa VAR BYTE
tmpb VAR BYTE
tmpc VAR BYTE
tid VAR WORD
dis VAR BYTE
tiotal VAR BYTE
ental VAR BYTE
siffra VAR BYTE[10]
display VAR BYTE[2]
siffra(0) = %00111111
siffra(1) = %00000110
siffra(2) = %01011011
siffra(3) = %01001111
siffra(4) = %01100110
siffra(5) = %01101101
siffra(6) = %01111101
siffra(7) = %00000111
siffra(8) = %01111111
siffra(9) = %01100111
display(0) = %01
display(1) = %10
loop:
For tiotal = 0 TO 5
For ental = 0 TO 9
For tid = 0 TO 1000
PORTB = siffra(ental)
PORTA = display(0)
PauseUs 500
PORTB = siffra(tiotal)
PORTA = display(1)
PauseUs 500
Next tid
Next ental
Next tiotal
GoTo loop
EDIT:
Det tog 127 minuter för den att räkna till 120 sekunder, mätte med klocka...
Då tog jag 127/120=0,94488, blir i milliesekunder 944,88, alltså 945, skrev in det i programkoden o nu stämmer det exakt med klockan!! Är det så man får göra eller? Tycker inte det borde behövas...
Sen funderade jag lite på om man ska ta 120/127=1,05833 = 1058 msn för att räkna ett steg på displayen... hmm Undertiden jag sitter här och skriver ser jag att picen halkat efter en aning under 7 minuter, så det kanske är denna uträkning som är rätt, ska tänka vidare... 1,058 sekunder för att räkna ett steg, då motsvarar alltså 1000 i programkoden 1058, då får man väll ta till lite räkneknep...hmm.... 1000/1058*1000=945,17, denna uträknning stämde alltså inte heller, då det måste bli lmindre än den översta... hur göra?
EDIT 2: Nu efter 17 och en halv minut har det halkat efter ganska exakt en sekund då det står 945 i koden, vore bättre om man kunde räkna fram sig till svaret än o testa sig fram.
EDIT 3: Inser att jag inte mätt fullt exakt med min klocka, men är ändå lite osäker på hur jag ska räkna, nu har jag mätt på 21 sekunder så nu borde det stämma lite bättre iaf...
EDIT 4: Nu fick jag det till 943,8 , när jag räknade enligt min andra metod ovan... Det känns ganska rimligt...