Witam.
Mam mały problem z programem ktory pisze w asm na '51. Otóż chodzi
mi o ustawienia czasu (zmniejszanie) i wyświetlanie ich na LCD.
Przy zmniejszaniu wartości godzin podczas przejscia z 0 na 23 jest ok,
ale przy przejsciu z 20 zamiast 19 jest 25, przy przejsciu z 10 zamiast
9 jest 15. Nie bardzo wiem jak to poprawic. oto fragment kodu:
UST1:
CLR RS
MOV A,#11000010B ;POZYCJA
ACALL SEND ;WYSLIJ do LCD
MOV A,HOURS
ACALL HEXASCII
SETB RS
ACALL SEND ;->LCD
MOV A,B
ACALL SEND ;->LCD
UST2: JB SWUP,UST3 ;W GORE
ACALL WAITMS100
MOV A,HOURS
ADD A,#1
DA A
MOV HOURS,A
CJNE A,#24H,UST1
MOV HOURS,#0
SJMP UST1
UST3: JB SWDOWN,UST4 ;W DOL
ACALL WAITMS100
MOV A,HOURS
CJNE A,#0,UST33
MOV A,#24H
UST33:
DEC A
DA A
MOV HOURS,A
SJMP UST1
Jest to prawie cala petla z wyświetlaniem. Fragment odpowiadajacy za zwiekszanie chodzi OK. Zmniejszanie probowalem tez zrobic z odejmowaniem ale bylo podobnie.
Możecie coś doradzić? Pozdrawiam.
Mam mały problem z programem ktory pisze w asm na '51. Otóż chodzi
mi o ustawienia czasu (zmniejszanie) i wyświetlanie ich na LCD.
Przy zmniejszaniu wartości godzin podczas przejscia z 0 na 23 jest ok,
ale przy przejsciu z 20 zamiast 19 jest 25, przy przejsciu z 10 zamiast
9 jest 15. Nie bardzo wiem jak to poprawic. oto fragment kodu:
UST1:
CLR RS
MOV A,#11000010B ;POZYCJA
ACALL SEND ;WYSLIJ do LCD
MOV A,HOURS
ACALL HEXASCII
SETB RS
ACALL SEND ;->LCD
MOV A,B
ACALL SEND ;->LCD
UST2: JB SWUP,UST3 ;W GORE
ACALL WAITMS100
MOV A,HOURS
ADD A,#1
DA A
MOV HOURS,A
CJNE A,#24H,UST1
MOV HOURS,#0
SJMP UST1
UST3: JB SWDOWN,UST4 ;W DOL
ACALL WAITMS100
MOV A,HOURS
CJNE A,#0,UST33
MOV A,#24H
UST33:
DEC A
DA A
MOV HOURS,A
SJMP UST1
Jest to prawie cala petla z wyświetlaniem. Fragment odpowiadajacy za zwiekszanie chodzi OK. Zmniejszanie probowalem tez zrobic z odejmowaniem ale bylo podobnie.
Możecie coś doradzić? Pozdrawiam.