Mercurial > public > hwos_code
diff src/rtc.asm @ 0:11d4fc797f74
init
author | heinrichsweikamp |
---|---|
date | Wed, 24 Apr 2013 19:22:45 +0200 |
parents | |
children | fdd4e30846ae |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/rtc.asm Wed Apr 24 19:22:45 2013 +0200 @@ -0,0 +1,91 @@ +;============================================================================= +; +; File rtc.asm +; +; +; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. +;============================================================================= +; HISTORY +; 2011-08-08 : [mH] moving from OSTC code + +#include "ostc3.inc" +#include "math.inc" + +sensors CODE + + global rtc_init +rtc_init: + movlw .1 + movwf secs + movlw .59 + movwf mins + movlw .12 + movwf hours + movlw .13 + movwf day + movlw .1 + movwf month + movlw .13 + movwf year + rcall rtc_set_rtc ; writes mins,sec,hours,day,month and year to rtc module + return + + global rtc_set_rtc +rtc_set_rtc: + banksel 0xF16 ; Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM. + movlw 0x55 + movwf EECON2 + movlw 0xAA + movwf EECON2 + bsf RTCCFG,RTCWREN ; Unlock sequence for RTCWREN + bsf RTCCFG,RTCPTR1 + bsf RTCCFG,RTCPTR0 ; year + movff year,WREG + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALL ; year + movwf RTCVALH ; dummy write + movff day,WREG + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALL ;day + movff month,WREG + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALH ;month + movff hours,WREG + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALL ;hours + movlw d'0' + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALH ;weekday + movff secs,WREG + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALL ;secs + movff mins,WREG + rcall rtc_dec2bcd ; IN: temp1 in WREG, OUT: WREG in BCD, also sets to bank16h! + movwf RTCVALH ;minutes + movlw 0x55 + movwf EECON2 + movlw 0xAA + movwf EECON2 + bcf RTCCFG,RTCWREN ; Lock sequence for RTCWREN + banksel common + return + +rtc_dec2bcd: + banksel temp1 + movwf temp1 ; Input in dec + setf temp2 ; 10s + +rtc_dec2bcd2: + incf temp2,F ; Count 10's + movlw d'10' + subwf temp1,F + btfss STATUS,N + bra rtc_dec2bcd2 + movlw d'10' + addwf temp1,F ; 1s + swapf temp2,W ; swap to bit 7-4 -> WREG + addwf temp1,W ; Result in BCD + banksel 0xF16 ; Addresses, F16h through F5Fh, are also used by SFRs, but are not part of the Access RAM. + return + + END \ No newline at end of file