scx
Guest
Tue Jan 16, 2007 10:21 am
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
scx
Guest
Tue Jan 16, 2007 10:40 am
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
Robert Z.
Guest
Tue Jan 16, 2007 11:16 am
Użytkownik "scx" <es-ce-iks-7@wu-pe.pe-el> napisał w wiadomości
news:1ga65keh0rf28.1q37w7e0xxqvc.dlg@40tude.net...
Quote:
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
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.
Darek
Guest
Tue Jan 16, 2007 11:20 am
Quote:
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
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
Piotrek Sz.
Guest
Tue Jan 16, 2007 12:40 pm
scx <es-ce-iks-7@wu-pe.pe-el> napisał(a):
Quote:
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
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
--
Wysłano z serwisu Usenet w portalu Gazeta.pl ->
http://www.gazeta.pl/usenet/
RoMan Mandziejewicz
Guest
Tue Jan 16, 2007 2:28 pm
Hello Robert,
Tuesday, January 16, 2007, 11:16:28 AM, you wrote:
Quote:
?!?!?!
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
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;]
A nie -1?
Quote:
zatem -127-(+112) jak by nie bylo daje ujemna liczbe.
--
Best regards,
RoMan mailto:roman@pik-net.pl
Robert Z.
Guest
Tue Jan 16, 2007 2:54 pm
Użytkownik "RoMan Mandziejewicz" <roman@pik-net.pl> napisał w wiadomości
news:1527960466.20070116142852@pik-net.pl...
Quote:
Hello Robert,
Tuesday, January 16, 2007, 11:16:28 AM, you wrote:
?!?!?!
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
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;]
A nie -1?
zatem -127-(+112) jak by nie bylo daje ujemna liczbe.
--
Best regards,
RoMan mailto:roman@pik-net.pl
Masz oczywiscie racje, pomylilem sie i niemam nic na swoje usprawiedliwienie
;-]
pozdrawiam
Marek Wodzinski
Guest
Tue Jan 16, 2007 5:30 pm
scx wrote:
Quote:
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
Jak nie używasz liczb ze znakiem, to sprawdzaj carry, a nie sign.
pozdrawiam
majek
--
"If you want something done...do yourself!"
Jean-Baptiste Emmanuel Zorg
scx
Guest
Tue Jan 16, 2007 9:14 pm
Dnia Tue, 16 Jan 2007 17:30:18 +0100, Marek Wodzinski napisał(a):
Quote:
scx wrote:
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 :(
Jak nie używasz liczb ze znakiem, to sprawdzaj carry, a nie sign.
i to właśnie jest prawidłowa odpowiedź
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.
Szymon Kubicki
Guest
Tue Jan 16, 2007 10:59 pm
Dnia 16-01-2007 o 10:40:59 scx <es-ce-iks-7@wu-pe.pe-el> napisał(a):
Quote:
Aha: AVRStudio 4.12, Attiny12, testuję program we wbudowanym symulatorze
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
--
Szymon