Witam
Jest sobie kod:
IMPULS: cli in czas,TCNT0 clr temp ;czyszczenie flag signed i negative subi czas,112 brmi ALARM
Problem w tym , że nawet jeśli rejestr liczący timera ma 255, to w wyniku odejmowania dostaje zawsze wynik negatywny :(
Witam
Jest sobie kod:
IMPULS: cli in czas,TCNT0 clr temp ;czyszczenie flag signed i negative subi czas,112 brmi ALARM
Problem w tym , że nawet jeśli rejestr liczący timera ma 255, to w wyniku odejmowania dostaje zawsze wynik negatywny :(
Dnia Tue, 16 Jan 2007 10:21:42 +0100, scx napisał(a):
?!?!?!
ldi czas,0xff subi czas,112 I też mam ustawioną flagę "negative"! Od kiedy 255 - 112 < 0?
Aha: AVRStudio 4.12, Attiny12, testuję program we wbudowanym symulatorze
U¿ytkownik "scx" snipped-for-privacy@wu-pe.pe-el> napisa³ w wiadomo¶ci news: snipped-for-privacy@40tude.net...
flaga N ustawiana jest zawsze kiedy w wyniku ustawiony jest najbardziej znaczacy bit ktory stanowi o znaku danej liczby. Jezeli operujesz na liczbach ze znakiem to liczba 255 nie oznacza wcale 255 tylko -127;] zatem
-127-(+112) jak by nie bylo daje ujemna liczbe.
w jaki sposób masz zadeklarowan± zmienna czas? Jest to jeden z rejestrów R16-R31?
i czy przypadkiem zapis nie powinien wygl±daæ tak: subi czas,$112
Pozdrawiam Darek
scx snipped-for-privacy@wu-pe.pe-el> napisał(a):
Hmmm... Traktujesz swoje dane jako liczby bez znaku , a sprawdzasz wskaźniki dla operacji na liczbach ze znakiem , czyli U2.Gdybyś napisał co chcesz osiąnąć , to wtedy - kto wie ;-)
Piotrek
A nie -1?
U¿ytkownik "RoMan Mandziejewicz" snipped-for-privacy@pik-net.pl napisa³ w wiadomo¶ci news: snipped-for-privacy@pik-net.pl...
Masz oczywiscie racje, pomylilem sie i niemam nic na swoje usprawiedliwienie ;-]
pozdrawiam
Jak nie używasz liczb ze znakiem, to sprawdzaj carry, a nie sign.
pozdrawiam
majek
Dnia Tue, 16 Jan 2007 17:30:18 +0100, Marek Wodzinski napisał(a):
i to właśnie jest prawidłowa odpowiedź :P zamiast brmi - brcs
Dziękuję wszystkim za podpowiedzi, a szczególnie Robertowi za uświadomienie mnie w kwestii reprezentacji liczb ujemnych :) I tak dzień po dniu człowiek się mądrzejszy robi :P
Urządzonko już pięknie śmiga - jest to ostrzegacz o przekroczeniu 5000 obrotów silnika + przypominacz o zapięciu pasów. Jutro będzie testowany w naturze, a biurku działa OK.
Dnia 16-01-2007 o 10:40:59 scx snipped-for-privacy@wu-pe.pe-el> napisał(a):
Dorzuce jeszcze od siebie to co sam nie dawno tutaj na grupie uslyszalem: nie ufaj symulatorowi. Ostatnio symulator pokazywal jakies dziwolagi natomiast zaprogramowana atmega dziala prawidlowo. Wiec zalecam ostroznosc.
pozdrawiam
Have something to add? Share your thoughts — no account required.
Ask the community — no account required