Problem - uK



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam Szmulewski" <adamus_at_nospam_balta.net.pl>
Subject: Problem - uK
Date: Wed, 15 Jan 2003 18:42:06 +0100


Witam
Mam zbudowany uklad (uK 89c52) ktory ma za zadanie zliczanie czasu (w min)
zapalania lampy
Dziala to mianowicie tak: ustawia sie czas pracy lampy(max 20 min) ten czas
jest zapisywany w pamieci gdy lampa gasnie ustawia sie znowu jakis czas
ktory sie dodaje do poprzedniego i wynik znow do pamieci i tak w kulko
Do 100 ninut dziala wszystko ok , natomias po przekroczniu setki dziala to
tak:
mam juz zliczone 100 minut ustawiam 20 po dodaniu powinno dac
120 ----daje 220
gdy dodaje nastepne 20 uzyskuje 440 ,nastepne np.10 uzyskuje 850(tak
jakby cyfra setek byla
podwajana)
Zauwazylem ze gdy po kazdym dodaniu czasu programowo zresetuje uklad
wszystko jest liczone poprawnie
Jezeli ktos sie z tym spotkal lub wie jak ten problem rozwiazac prosze o
rade
Podrawiam
Adam

Ps umieszczam procedure jaka wykozystalem przy dodawaniu
.....
mov b,#xWskUtarg
acall XRdRazDoAccZB ;zmiana czasu
mov b,a
push acc
mov rtmp1,#3
mov radp0,#kod0 ;odczyt
acall XRead
;-----------------------------
mov rtmp1,#3
mov radp1,#dss-1 ;zmiana kod3 *

acall DodLiczDoKod0
;-----------------------------
mov rtmp1,#3 ;zapis
mov radp0,#dss ;kod3

pop b
acall XWrite
;.--------------------------------------------
DodLiczDoKod0:
mov radp0,#kod0-1
;-----------------
DodLicz: clr c
push adp1
push tmp1
DodLiczLoop: ;dodanie dwoch wartosci do siebie
inc radp1
inc radp0
mov a,_at_nospam_radp0
DodLiczAcc:
addc a,_at_nospam_radp1
da a
mov _at_nospam_radp1,a
djnz rtmp1,DodLiczLoop
pop tmp1
pop adp1
ret







Poprzedni Następny
Wiadomość
Spis treści
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: Problem - uK
Date: Wed, 15 Jan 2003 21:41:32 GMT


On Wed, 15 Jan 2003 18:42:06 +0100, Adam Szmulewski wrote:
Dziala to mianowicie tak: ustawia sie czas pracy lampy(max 20 min) ten czas
jest zapisywany w pamieci gdy lampa gasnie ustawia sie znowu jakis czas
ktory sie dodaje do poprzedniego i wynik znow do pamieci i tak w kulko
Do 100 ninut dziala wszystko ok , natomias po przekroczniu setki dziala to
tak:
mam juz zliczone 100 minut ustawiam 20 po dodaniu powinno dac
120 ----daje 220 [...]

A jak te 20 wpisujesz do bajtu dss, czy jeszcze zerujesz dss+1,
czy tam zostaje 1 po poprzednich obliczeniach ?
dss+2, dss+3 tez wypadaloby wyzerowac ..

.....
mov b,#xWskUtarg
acall XRdRazDoAccZB ;zmiana czasu
mov b,a
push acc
mov rtmp1,#3
mov radp0,#kod0 ;odczyt
acall XRead

Na przyslosc badz laskaw dac info ze XRead wczytuje dana z .. EEproma
(?) pod adres w R0 ?

;-----------------------------
mov rtmp1,#3
mov radp1,#dss-1 ;zmiana kod3 *

acall DodLiczDoKod0
;-----------------------------
mov rtmp1,#3 ;zapis
mov radp0,#dss ;kod3

pop b
acall XWrite
;.--------------------------------------------
DodLiczDoKod0:
mov radp0,#kod0-1
;-----------------
DodLicz: clr c
push adp1
push tmp1
DodLiczLoop: ;dodanie dwoch wartosci do siebie
inc radp1
inc radp0
mov a,_at_nospam_radp0
DodLiczAcc:
addc a,_at_nospam_radp1
da a
mov _at_nospam_radp1,a
djnz rtmp1,DodLiczLoop
pop tmp1
pop adp1
ret







Poprzedni Następny
Wiadomość
Spis treści
From: "Adam Szmulewski" <adamus_at_nospam_balta.net.pl>
Subject: Re: Problem - uK
Date: Sat, 18 Jan 2003 20:32:20 +0100


Dzieki faktycznie zapomnialem tego wyzerowac
Pozdr.
Adam

A jak te 20 wpisujesz do bajtu dss, czy jeszcze zerujesz dss+1,
czy tam zostaje 1 po poprzednich obliczeniach ?
dss+2, dss+3 tez wypadaloby wyzerowac ..