;************************************************************************ ;* * ;* get time information * ;* * ;************************************************************************ gettime: mifne a, 3, _gtt1 ldi a, 0xFF _gtt1: mov zl, second subi zl, 20 mifl zl, ( table1e - table1 ) / 2, _gtt2 ret _gtt2: ldi zh, high(table1) add zl, zl ; * 2 subi zl, -low(table1) sbci zh, 0xFF mxor flags, parity, a, 0 ;calculate parity ijmp parity_min: sbrc flags, parity rjmp parity_ok sts nme, ff sts nmz, ff ret parity_hour: sbrc flags, parity rjmp parity_ok sts nhe, ff sts nhz, ff parity_ok: table1: cbr flags, parity ;20 ret ldi zl, nme ;21 rjmp setbit0 ldi zl, nme ;22 rjmp setbit1 ldi zl, nme ;23 rjmp setbit2 ldi zl, nme ;24 rjmp setbit3 ldi zl, nmz ;25 rjmp setbit0 ldi zl, nmz ;26 rjmp setbit1 ldi zl, nmz ;27 rjmp setbit2 rjmp parity_min ;28 = parity ret ldi zl, nhe ;29 rjmp setbit0 ldi zl, nhe ;30 rjmp setbit1 ldi zl, nhe ;31 rjmp setbit2 ldi zl, nhe ;32 rjmp setbit3 ldi zl, nhz ;33 rjmp setbit0 ldi zl, nhz ;34 rjmp setbit1 rjmp parity_hour ;35 = parity ret ldi zl, nde ;36 = day rjmp setbit0 ldi zl, nde ;37 rjmp setbit1 ldi zl, nde ;38 rjmp setbit2 ldi zl, nde ;39 rjmp setbit3 ldi zl, ndz ;40 rjmp setbit0 ldi zl, ndz ;41 rjmp setbit1 ldi zl, nwe ;42 = week day rjmp setbit0 ldi zl, nwe ;43 rjmp setbit1 ldi zl, nwe ;44 rjmp setbit2 ldi zl, nmoe ;45 = month rjmp setbit0 ldi zl, nmoe ;46 rjmp setbit1 ldi zl, nmoe ;47 rjmp setbit2 ldi zl, nmoe ;48 rjmp setbit3 ldi zl, nmoz ;49 rjmp setbit0 ldi zl, nye ;50 = year rjmp setbit0 ldi zl, nye ;51 rjmp setbit1 ldi zl, nye ;52 rjmp setbit2 ldi zl, nye ;53 rjmp setbit3 ldi zl, nyz ;54 rjmp setbit0 ldi zl, nyz ;55 rjmp setbit1 ldi zl, nyz ;56 rjmp setbit2 ldi zl, nyz ;57 rjmp setbit3 ret ;58 = parity ret table1e: setbit3: lsl a setbit2: lsl a setbit1: lsl a ld ah, z or a, ah setbit0: st z, a ret ;------------------------------------------------------------------------