logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

asm obsuga czasu lub 16 bitowych liczb

dylu7 03 Lut 2009 00:45 1215 6
REKLAMA
  • #1 6094930
    dylu7
    Poziom 2  
    witam
    zaczynam sie bawic w programowanie atmelkow w asm i nie umiem w ladny spob przeskoczyc problemu porownania daty lub przynajmniej godzin.
    Chce aby po zczytaniu z zewnetrznego zegara porownac czas rzeczywisty z nastawa i ewentualnie zapalic przekaznik o ustalonej godzinie
    Ale nie umiem przez to przeskoczyc
    Wymyslilem tak ze lacze minuty z godzinami i mam w jednym 8 bitowym rejestrze minuty i dziesiatki minut i to porownuje z minutami i dziesiatkami minut z nastawy

    tj. np 34 minuty
    0000 0011 ----3
    0000 0100 ----4
    przesuwam w lewo pierwsza liczbe o 4 bity i mam
    0011 0000
    a potem do tego dodaje drugo liczbe i mam
    0011 0100 i to porownuje z nastawa tak sammo zrobioną i jest ok
    ale chcialbym zeby dodac do tego jeszcze godziny ale wtedy musialbym miec 16 bitowy rejestr do porownania z drugim 16 bitowym
    i nie umiem tego przejsc
    Moze jest jakis juz wymysliony sposob na porownywanie nastaw czasu ??
    Zalezy mi na malym kodzie w asm bo mam attiny z 2k flash
    a potrzebuje w to wlozyc jeszcze pomiar tmp i expander na i2c i rs232

    z gory dzieki za pomoc
    dylu

    dzieki
  • REKLAMA
  • #2 6094940
    korrus666
    Poziom 40  
    zapisuj sobie godziny i minuty w osobnych rejestrach wtedy będziesz miał dwie 8-bitowe liczby. Najpierw porównujesz godziny i jak się zgadzają to porównujesz minuty w przeciwnym wypadku omijasz. Jak minuty się zgadzają to załączasz sobie przekaźnik czy co tam chcesz.
  • REKLAMA
  • #3 6094959
    dylu7
    Poziom 2  
    dzieki :)

    No niby proste ale chyba juz pozno i cos slabo mysle :)

    I bede musial dodac chyba jeszcze dni a nawet lata bo inaczej nie nastawie nic od 23:00 do 01 w nocy
    bo 23 >01


    dylu
  • REKLAMA
  • #4 6096498
    asembler
    Poziom 32  
    Ja to robie w nastepujacy sposob.
    wyliczasm ile sekund uplynelo od poczatku doby (roku jezeli chce porownywac rowniez date) Majac teraz dwie zmienne wystarczy odjac jedna od drugiej i otrzymujemy wyniki. Dodatkowa zaleta to taka ze wiem czy jest przed/ po nastawionej godzinie/dacie. Sa tez doddatkowe korzysci z takie podejscia do sprawy o ktorych sam sie przekonasz.
  • REKLAMA
  • #5 6097188
    dylu7
    Poziom 2  
    hey

    Ja wlasnie tak chcialem zrobic tylko ze nie jestem zbyt dobry w asm nie wiem jak taka liczbe zapisac i ja porownywac bo w 24 godzinach jest 1440 min a to juz mi sie nie miesci w 8 bitowym rejestrze
    Jak moglbs mi dac przyklad w asm licznia na duzych liczbach to bylbym wdzeczny np dadanie 2 24 bitowych liczb

    pozdrawiam
    dylu
  • #6 6097767
    Balu
    Poziom 38  
    ADD ADC i już?
    
    ADD  	Rd,Rs  	Dodaj zawartość dwóch rejestrów  	Rd ¬ Rd + Rs  	Z,C,N,V,H,S  	1
    ADC 	Rd,Rs 	Dodaj zawartość dwóch rejestrów z przeniesieniem 	Rd ¬ Rd + Rs + C 	Z,C,N,V,H,S 	1
    
  • #7 6125918
    dylu7
    Poziom 2  
    dzieki za pomoc

    dylu
REKLAMA