view src/rtc.asm @ 608:d866684249bd

work on 2.99 stable
author heinrichsweikamp
date Mon, 07 Jan 2019 21:13:43 +0100
parents ca4556fb60b9
children c40025d8e750
line wrap: on
line source

;=============================================================================
;
;   File rtc.asm													## V2.98c
;
;
;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
;=============================================================================
; HISTORY
;  2011-08-08 : [mH] moving from OSTC code

#include "hwos.inc"
#include "math.inc"

rtc		CODE

;=============================================================================

	global	rtc_init
rtc_init:
	movlw	.1
	movwf	secs
	movlw	.59
	movwf	mins
	movlw	.12
	movwf	hours
	movlw	.2
	movwf	day
	movlw	.12
	movwf	month
	movlw	.17
	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	lo
	movwf	lo					; Input in decimal
	setf	hi					; 10s
rtc_dec2bcd2:
	incf	hi,F				; Count 10's
	movlw	d'10'
	subwf	lo,F
	btfss	STATUS,N
	bra		rtc_dec2bcd2
	movlw	d'10'
	addwf	lo,F				; 1s
	swapf	hi,W				; swap to bit 7-4 -> WREG
	addwf	lo,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