;UHR/KALENDER AVR-ASSEMBLER BAUSTEIN ;(c)2012 J.KORDAS jkordas(at)web.de ;---------------------------------------------------------------------------------- ;Aufruf mit 100 Hz sclock: ldi YL,low(HSEK) ;10 mSek Timerinterrupt ldi YH,high(HSEK) ldi r20,100 rcall sclock14 ;HSEK ldi r20,60 rcall sclock14 ;SEK rcall sclock14 ;MIN ldi r20,24 rcall sclock14 ;STU ldi r20,30 ;30 Tage: ldd r21,Y+2 cpi r21,3 ;April breq sclock10 cpi r21,5 ;Juni breq sclock10 cpi r21,8 ;September breq sclock10 cpi r21,10 ;November breq sclock10 inc r20 ;31 Tage Monate cpi r21,1 brne sclock10 ldi r20,29 ;Februar 29 Tage ldd r21,Y+3 sbrs r21,0 sbrc r21,1 ldi r20,28 ;Februar 28 Tage sclock10: set rcall sclock16 ;TAG mov r22,r21 ldi r20,7 rcall sclock16 ;WTAG tst r22 ;Monatswechsel? brne sclock19 ldi r20,12 rcall sclock14 ;MON ldi r20,64 rcall sclock14 ret sclock14: clt sclock16: ld r21,Y inc r21 cp r21,r20 brlo sclock18 clr r21 sclock18: st Y+,r21 brts sclock19 breq sclock19 pop XL pop XL ; pop XL ;Nur bei AVRs >128K Flash! sclock19: ret .DSEG HSEK: .BYTE 1 ;SCLOCK 1/100 SEKUNDE SEK: .BYTE 1 ;SCLOCK SEKUNDE MIN: .BYTE 1 ;SCLOCK MINUTE STU: .BYTE 1 ;SCLOCK STUNDE TAG: .BYTE 1 ;SCLOCK TAG WTAG: .BYTE 1 ;SCLOCK WTAG MON: .BYTE 1 ;SCLOCK MONAT JHR: .BYTE 1 ;SCLOCK JAHR