PIC - datum a cas.
Snail Instruments
snail
Středa Březen 17 14:37:26 CET 2004
>Prictu si potrebny interval k minutam, co pretece pres
>max. dam vzdy do vyssich,
Jenom pozor, pokud dojde k preteceni pri pricitani k minutam (nastavi se carry), je treba zvetsit udaj hodin o 4 a udaj minut o 16 (256 minut = 4 hodiny + 16 minut). Pokud dojde k preteceni hodin, pricist 10 dni a 16 hodin, preteceni dnu uz je komplikovane. Nejlepe vyjadrit interval jako (dny +) hodiny + minuty a zaridit, aby nedochazelo k preteceni 8 bitovych promennych.
>DD0: BTFSS YEAR,0
> BTFSC YEAR,1
> RETLW D'28'
> RETLW D'29'
>
>Nadherna konstrukce - moc libi.
Tak asi proto mam rad assembler. Dovedete si predstavit tu nudnou konstrukci v cecku: if (year%4) return 28; else return 29; :-)
Ted me napada, ze se bere vzdycky promenna year, spravne by se mela brat promenna z prislusneho casu (kuprikladu wyear). Chyba ale nastane zridka, pouze pokud se promenne budou lisit take v letopoctu a ta normalizovana bude uz mit unor. Cili pri zpracovani intervalu delsiho nezli mesic. Uplne spravne by melo byt:
DD0: incf fsr,f
movf indf,w
decf fsr,f
andlw 0x03
btfss status,z
retlw D'28'
retlw D'29'
a jeste dekrementovat FSR teprve po volani funkce DDAYS
NRM6: INCF FSR,F
MOVF INDF,W ;(MOVF MONTH,W)
CALL DDAYS
DECF FSR,F
J. Hanzal
Další informace o konferenci Hw-list