Autor Tema: DS 1302  (Leído 2140 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ma-tec

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 76
    • www.matec.es.tl
DS 1302
« en: 06 de Julio de 2004, 08:44:00 »
;****************************************************
;                     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

LA CLAVE DEL EXITO ES SABER
PARA DONDE VA LA GENTE Y
LLEGAR PRIMERO.

Desconectado gabotronic

  • PIC12
  • **
  • Mensajes: 57
RE: DS 1302
« Respuesta #1 en: 12 de Octubre de 2004, 18:30:00 »
Ma Tec:

Como es la conexion que realizaste entre el PIC y el DS1302?
Puede ser algo asi?

Pin 1: Masa.
Pin 2: Cristal.
Pin 3: Cristal.
Pin 4: Masa.
Pin 5: Pin RB7 del PIC (RESET).
Pin 6: Pin RB6 del PIC (IO).
Pin 7: Pin RB5 del PIC (SCLK).
Pin 8: 5 V.


Saludos.