;****************************************************
; DS1302.ASM
;****************************************************
LIST P = 16F84
#INCLUDE "P16F84.INC"
TITLE "DS1302.ASM
;******************** DEFINE REGISTROS
W EQU 0
Z EQU 2
PC EQU 02H
STATUS EQU 03H
SEG EQU 10H
MIN EQU 11H
HOR EQU 12H
DIA EQU 13H
MES EQU 14H
AÑO EQU 15H
DIS EQU 16H
NUME EQU 17H
OCHO EQU 18H
DEL1 EQU 19H
TEMP EQU 1AH
DATO EQU 1BH
TREMP EQU 1CH
RARO EQU 1DH
ORG 00H
GOTO START
;-------------- SALE DATA DIR -------------------------
FUERA NOP
S77 BCF PORTA,3
RRF NUME,1
BTFSS STATUS,C ; 0
GOTO S44 ; FUE CERO 1
BSF PORTA,2 ; FUE UNO 1
GOTO S55
S44 BCF PORTA,2 ; DELAY ENTRE BITS 3
S55 BSF PORTA,3
DECFSZ OCHO,1
GOTO S77
RETLW 00
RAMIN MOVLW 8E
MOVWF NUME
MOVLW 00
MOVWF DATO
CALL ESCRI
RETLW 00
;++++++++++++++++++++++++++++++++++++++++++++++
ESCRIBE MOVLW 8E ;rutina de escritura
MOVWF NUME
MOVLW 00
MOVWF DATO
CALL ESCRI
MOVLW 80
MOVWF NUME
MOVLW 80
MOVWF DATO
CALL ESCRI
MOVLW 80
MOVWF NUME
MOVF SEG,W
MOVWF DATO
CALL ESCRI
MOVLW 82
MOVWF NUME
MOVF MIN,W
MOVWF DATO
CALL ESCRI
MOVLW 84
MOVWF NUME
MOVF HOR,W
MOVWF DATO
CALL ESCRI
MOVLW 86
MOVWF NUME
MOVF DIA,W
MOVWF DATO
CALL ESCRI
MOVLW 88
MOVWF NUME
MOVF MES,W
MOVWF DATO
CALL ESCRI
MOVLW 8C
MOVWF NUME
MOVF AÑO,W
MOVWF DATO
CALL ESCRI
MOVLW 8A
MOVWF NUME
MOVF DIS,W
MOVWF DATO
CALL ESCRI
MOVLW 090
MOVWF NUME
MOVLW 0A5
MOVWF DATO
CALL ESCRI
MOVLW 8E
MOVWF NUME
MOVLW 80
MOVWF DATO
CALL ESCRI
RETLW 00
;********** DELAY ENTRE BITS *****************
DEBIT MOVLW 12 ; PARA 9600 BAUDIOS / XTAL DE 4 MEGA HZ.
MOVWF DEL1
X02 CLRWDT
NOP
DECFSZ DEL1,1
GOTO X02
RETLW 00H
;***************************************************
SEOUT MOVWF TREMP ;rutina para salida serial
SWAPF TREMP,1 ; a pc para probar
MOVF TREMP,W
ANDLW 0F
ADDLW 30
MOVWF NUME
CALL SEOUTO
SWAPF TREMP,W
ANDLW 0F
ADDLW 30
MOVWF NUME
CALL SEOUTO
RETLW 00
SEOUTO BCF PORTA,0 ; START BITS
CALL DEBIT
MOVLW 08H ; SIETE BITS
MOVWF OCHO
NOP
S7 RRF NUME,1
BTFSS STATUS,C ; 0
GOTO S4 ; FUE CERO 1
BSF PORTA,0 ; FUE UNO 1
GOTO S5 ; 2
S4 BCF PORTA,0 ; 2
S5 CALL DEBIT ; DELAY ENTRE BITS 3
DECFSZ OCHO,1
GOTO S7
BSF PORTA,0 ; STOP BITS
; CALL DEBIT
CALL DEBIT
RETLW 00H
;=============================================
;caracteres en el string
ASTE MOVLW 2A ; asterisco
MOVWF NUME
CALL SEOUTO
RETLW 00
DOSP MOVLW 3A ; dos puntos
MOVWF NUME
CALL SEOUTO
RETLW 00
SLAT MOVLW 2F ;slat
MOVWF NUME
CALL SEOUTO
RETLW 00
ESPA MOVLW 20 ; espacio
MOVWF NUME
CALL SEOUTO
RETLW 00
;(((((((((( ESCRIBE EN RTC )))))))))))))))
ESCRI BSF PORTA,1
BCF PORTA,1
BSF PORTA,2
BSF PORTA,1
MOVLW 08H ; SIETE BITS
MOVWF OCHO
CALL FUERA
MOVLW 08
MOVWF OCHO
MOVF DATO,W
MOVWF NUME
CALL FUERA
BCF PORTA,1
BCF PORTA,3
BSF PORTA,2
BCF PORTA,2
BSF PORTA,2
RETLW 00H
;((((((( LEE EL DATO DEL RTC ))))))))))
LEE BSF PORTA,1
BCF PORTA,1
BCF PORTA,3
BSF PORTA,2
BSF PORTA,1
STBIT MOVLW 08H ; SIETE BITS
MOVWF OCHO
CALL FUERA
BSF STATUS,5
MOVLW 04 ;2 SALIDA
MOVWF PORTA
BCF STATUS,5
CLRWDT
MOVLW 8
MOVWF OCHO
CLRF NUME ; PARTE CON BYTE EN CERO
S3 BCF PORTA,3
BTFSS PORTA,2 ; LEE DATA SERIAL
GOTO S0
BSF STATUS,C ; 0
GOTO S1 ; FUE CERO 1
S0 BCF STATUS,C ; FUE UNO 1
S1 RRF NUME,1
BSF PORTA,3
DECFSZ OCHO,1
GOTO S3
BSF STATUS,5
MOVLW 00 ;TODAS SALIDAS
MOVWF PORTA
BCF STATUS,5
BCF PORTA,1
BCF PORTA,3
BCF PORTA,2
BSF PORTA,2
RETLW 00H
;************ PARTIDA *************************************************
START BSF STATUS,5
MOVLW 80 ;B7 IN RS232
MOVWF PORTB
MOVLW 00 ;TODAS SALIDAS
MOVWF PORTA
BCF STATUS,5
BCF PORTA,1
BCF PORTA,3
BTFSS PORTB,7
GOTO ESTARYU
MOVLW 00
MOVWF SEG
; DATOS A ESCRIBIR EN EL RTC
;26/04/01 17:35 DIA DE LA SEMANA 04
MOVLW 35
MOVWF MIN
MOVLW 17
MOVWF HOR
MOVLW 26
MOVWF DIA
MOVLW 04
MOVWF MES
MOVLW 01
MOVWF AÑO
MOVLW 04
MOVWF DIS
CALL ESCRIBE
;SI CONECTAS EL PIN RA0 AL UN MAX 232 O UN TR-557
;Y ESTE A UN PC A 9600,8,N
;PUEDES VER LA HORA GUARDADA Y AVANZANDO
ESTARYU MOVLW 7
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL SLAT
CALL RAMIN
MOVLW 0C0
MOVWF NUME
MOVLW 3A
MOVWF DATO
CALL ESCRI
MOVLW 0C2
MOVWF NUME
MOVLW 3C
MOVWF DATO
CALL ESCRI
MOVLW 9
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL SLAT
MOVLW 0D
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL SLAT
CALL ESPA
MOVLW 5
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL DOSP
MOVLW 3
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL DOSP
MOVLW 1
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL ESPA
MOVLW 0C1
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
CALL ESPA
MOVLW 0C3
MOVWF NUME
CALL LEE
MOVF NUME,W
CALL SEOUT
MOVLW 0D
MOVWF NUME
CALL SEOUTO
GOTO START
;****************************************************
END