Sei sulla pagina 1di 65

Sistemas Digitales III

Modulo MSSP Modulo SPI SSPSTAT - SPI SSPCON - SPI I/O en modo SPI Diagrama de tiempos El DS1302 Caracter sticas Byte de comando Control y transferencia Resumen de registros PIC modo SPI - DS1302 Trabajo a desarrollar: Programacin UART - DS1302 o Diagrama de conexiones Caracter stica de diseo n Diagramas de ujo del programa: Primera aproximacin o Diagramas de ujo del programa: Segunda aproximacin o Diagramas de ujo del programa: Tercera aproximacin o
Mauricio Lpez V. (Ingenier o a) Microcontroladores PIC Mayo, 2012 1 / 65

Modulo MSSP

Modulo SPI

Modulo MSSP en modo SPI


El modulo MSSP en modo SPI es un protocolo s ncrono que permite a un dispositivo maestro iniciar la comunicacin e intercambio de datos con un o dispositivo esclavo. El SPI permite la transmisin y recepcin s o o ncrona simultneamente de datos de a 8 bits. Se soportan los cuatro modos de SPI (CKP y CKE). Para llevar a cabo la comunicacin se usan t o picamente tres pins:
- Salida de datos serial (SDO). - Entrada de datos serial (SDI). - Reloj serial (SCK).

Adicionalmente se puede usar un cuarto pin cuando se opera en modo de esclavo:


- Seleccionador de Esclavo (SS).
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 2 / 65

Modulo MSSP

Modulo SPI

Modulo MSSP en modo SPI

En el protocolo SPI, la seal de reloj, SCK, es suministrada por el maestro que n proporciona la sincronizacin y el control del inicio de la transmisin del dato. o o La velocidad de la transferencia de datos depende de la velocidad del reloj. El SPI es un protocolo Maestro-Esclavo con las siguientes caracter sticas:
Solo el dispositivo maestro puede controlar la l nea de reloj, SCK. Los datos no se transeren a no ser que el reloj sea programado. Todos los esclavos son controlados por el reloj, que est a su vez controlado por el a dispositivo maestro. El esclavo no puede manipular el reloj.

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

3 / 65

Modulo MSSP

Modulo SPI

Modulo MSSP en modo SPI

En la transferencia de datos, estn involucrados el registro SSPBUF y el registro a de corrimiento SSPSR.

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

4 / 65

Modulo MSSP

Modulo SPI

Modulo MSSP en modo SPI


La transmisin inicia en el momento que el mdulo maestro manda una seal de o o n habilitacin al mdulo esclavo y se lleva a cabo al activar la terminal SS (Slave o o Selection). Una vez nalizada la transferencia se manda la seal de n deshabilitacin para indicar que la comunicacin entre los dos dispositivos ha o o terminado. La transferencia la inicia el mdulo maestro en el momento en que el dato a o transmitir se carga en el registro SSPBUF, ste a su vez se carga en el registro e de corrimiento SSPSR que inicia el intercambio de datos. Por cada pulso de reloj el registro SSPSR transere un bit a la terminal SDO. Este bit es recibido por el mdulo esclavo por al terminal SDI y almacenado en o su registro de corrimiento. De igual forma, por cada pulso de reloj, controlado por el maestro, el registro SSPSR del mdulo esclavo transere un bit a la terminal SDO. Este bit es o recibido por el mdulo maestro, por la terminal SDI, y almacenado en su o registro de corrimiento SSPSR. De esta forma se cierra un bucle en la que ambos transeren datos al mismo tiempo.
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 5 / 65

Modulo MSSP

Modulo SPI

Modulo MSSP en modo SPI

En modo SPI, la transmisin y recepcin de datos es en los dos sentidos. o o


Se crea un ciclo de transmisin/recepcin. o o Los dos mdulos transmiten y reciben datos. o Cuando la transferencia ha nalizado en el mdulo maestro, tambin ha terminado o e de recibir un dato el mdulo esclavo y viceversa. o

La transferencia no inicia si el mdulo esclavo carga un dato en su registro o SSPBUF. Cuando el mdulo maestro realiza la transmisin de un dato, ste se almacena o o e en el registro SSPBUF y debe ser le antes de transmitir el siguiente dato. do

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

6 / 65

Modulo MSSP

Modulo SPI

Modulo MSSP en modo SPI

Para inicializar el modulo MSSP en modo SPI deben especicarse varias opciones, al programar de manera adecuada los bits de control en el registro SSPCON (SSPCON<5:0>) y SSPSTAT (SSPSTAT<7:6>). Estos bits de control permiten especicar:
- Modo Maestro (SCK es la salida de reloj). - Modo Esclavo (SCK es la entrada de reloj). - Polaridad del Reloj (estado de inactividad del SCK). - Momento de muestrear el dato de entrada (a la mitad o al nal de tiempo de salida del dato). - Transicin del Reloj (salida del dato en la transicin ascendente/descendente del o o SCK). - Velocidad del Reloj (slo en modo Maestro). o - Modo de seleccin de Esclavo (slo en modo Esclavo). o o

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

7 / 65

Modulo MSSP

SSPSTAT - SPI

SSPSTAT: Registro de estado MMSP (Modo SPI)

bit 7 : SMP (Sample bit). Muestreo del bit. Momento en el que se ingresa el bit en el registro SSPSR. SPI en modo Maestro
SMP = 1. Muestro del dato entrante al nal del tiempo de salida del dato. SMP = 0. Muestro del dato entrante a la mitad del tiempo de salida del dato.

SPI en modo Esclavo


SMP debe programarse en cero cuando SPI se usa en modo Esclavo.

bit 6 : CKE (SPI Clock Select bit). Bit selector del anco en la que se realiza la sincronizacin. o
CKE = 1. La transmisin ocurre en la transicin del estado activo al inactivo del o o reloj. CKE = 0. La transmisin ocurre en la transicin del estado inactivo al activo del o o reloj.

Nota: La polaridad del estado del reloj se establece con el bit CKP (SSPCON<4>).
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 8 / 65

Modulo MSSP

SSPSTAT - SPI

SSPSTAT: Registro de estado MMSP (Modo SPI)

bit5:1 : D/A, P, S, R/W y UA: Bits para uso en comunicacin modo I2C. o Se programan en cero. bit 0 : BF (Buer Full Status bit). Bit de estado de buer lleno (slo en modo de o recepcin). o
BF = 1. Recepcin completa, SSPBUF lleno. o BF = 0. Recepcin incompleta, SSPBUF vac o o.

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

9 / 65

Modulo MSSP

SSPCON - SPI

SSPCON: Registro de control MMSP (Modo SPI)

bit 7 : WCOL (Write Collision Detect bit). Bit que verica si a ocurrido una colisin(slo en modo de transmisin). o o o
WCOL = 1. Se escribe sobre el registro SSPBUF cuando an se encuentra u transmitiendo la palabra previa (Debe ser limpiada por software). WCOL = 0. No hay una colisin. o

bit 6 : SSPOV (Receiver Overow Indicator bit). Bit de sobrepasamiento. SPI en modo esclavo
SSPOV = 1. Se recibe un nuevo dato mientras el registro SSPBUF an conserva u la palabra anterior (El dato en SSPSR se pierde). El usuario debe leer el SSPBUF, inclusive si slo transmite datos, para evitar que se genere el sobrepasamiento o (Debe ser limpiada por software). SSPOV = 0. No hay una overow.
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 10 / 65

Modulo MSSP

SSPCON - SPI

SSPCON: Registro de control MMSP (Modo SPI)

bit 5 : SSPEN (Synchronous Serial Port Enable bit). Habilita el puerto serial sincrono.
SSPEN = 1. Habilita el puerto serial y congura los pin SCK, SDO, SDI, and SS como los pin del puerto serial. SSPEN = 0. Deshabilita el puerto serial y congura stos pins como pins de e entrada/salida.

Nota: Cuando se habilita, los pins deben congurase apropiadamente como entradas o salidas. bit 4 : CKP (Clock Polarity Select bit). Bit selector de la polaridad del reloj.
CKP = 1. El estado de inactividad para el reloj es el nivel alto. CKP = 0. El estado de inactividad para el reloj es el nivel bajo.
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 11 / 65

Modulo MSSP

SSPCON - SPI

SSPCON: Registro de control MMSP (Modo SPI)

bit3:0 : SSPM3:SSPM0 (Synchronous Serial port Mode Select bits). Estos bits indican en que modalidad se programa el PIC, en esclavo o maestro, as como el valor del oscilador.
SSPM3:SSPM0 = 0101. Modo esclavo SPI, pin SCK = reloj. Deshabilitado el control del pin SS. El SS puede ser usado como un pin de I/O. SSPM3:SSPM0 = 0100. Modo esclavo SPI, pin SCK = reloj. Habilitado el control del pin SS. SSPM3:SSPM0 = 0011. Modo maestro, reloj = salida del TMR2/2. SSPM3:SSPM0 = 0010. Modo maestro, reloj = FOSC/64. SSPM3:SSPM0 = 0001. Modo maestro, reloj = FOSC/16. SSPM3:SSPM0 = 0000. Modo maestro, reloj = FOSC/4.
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 12 / 65

Modulo MSSP

I/O en modo SPI

Habilitando I/O en modo SPI


Para habilitar el puerto serial, el bit habilitador del SSP, SSPEN (SSPCON<5>), debe ponerse en uno. Para reiniciar o recongurar el modo SPI, limpiar el bit SSPEN, inicializar los bits del registro SSPCON y luego poner en uno el bit SSPEN. SSPEN = 1 congura los pins SCK, SDO, SDI, and SS como los pins del puerto serial. Para que los pins funcionen de acuerdo a los requerimientos del puerto serial, algunos bits (en el registro TRISC) deben programarse de tal manera que se tenga el ujo de direccin de los datos adecuado. Estos son: o
SDI es automticamente controlado por el modulo SPI. a SDO que corresponde al bit TRISC<5>, debe ser limpiado. SCK (en modo Maestro) que corresponde al bit TRISC<3>, debe ser limpiado. SCK (en modo Esclavo) que corresponde al bit TRISC<3>, debe ser puesto en uno. SS que corresponde al bit TRISC<4>, debe ser puesto en uno.
Mauricio Lpez V. (Ingenier o a) MSSP - SPI . . . Mayo, 2012 13 / 65

Modulo MSSP

I/O en modo SPI

Diagrama a bloque del mdulo MSSP en modo SPI o

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

14 / 65

Modulo MSSP

Diagrama de tiempos

Diagrama de tiempos en modo maestro (SPI)

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

15 / 65

Modulo MSSP

Diagrama de tiempos

Diagrama de tiempos en modo maestro (SPI)

Mauricio Lpez V. (Ingenier o a)

MSSP - SPI . . .

Mayo, 2012

16 / 65

El DS1302

Caracter sticas

Caracter sticas del DS1302


Reloj de tiempo real, proporciona informacin de: segundos, minutos, horas, d o a del mes, mes, d de la semana y ao (vlido hasta 2100). a n a RAM de 31 x 8 para almacenamiento de datos. Voltaje de operacin de 2 a 5.5V. o Utiliza menos de 300 nA a 2V. Interfaz a 3 l neas. Compatible a niveles TTL. Dos pins para el suministro de energ primaria y de respaldo. a: Se puede usar una bater en el bit de suministro de energ de respaldo. a a
Mauricio Lpez V. (Ingenier o a) El DS1302 . . . Mayo, 2012 17 / 65

El DS1302

Caracter sticas

Descripcin de los pin del DS1302 o

PIN X1, X2 GND RST CE o I/O SCLK Vcc1, Vcc2

Descripcin o Pins para conectar el oscilador de cristal de 32.768 KHz. Ground o tierra. Reset. Entrada/Salida de datos. Reloj serial. Pins de suministro de energ a.

Circuito de conexin: o

Mauricio Lpez V. (Ingenier o a)

El DS1302 . . .

Mayo, 2012

18 / 65

El DS1302

Caracter sticas

Principales elementos a bloque del DS1302


Registro de corrimiento, lgica de control, oscilador, reloj de tiempo real y RAM. o

Mauricio Lpez V. (Ingenier o a)

El DS1302 . . .

Mayo, 2012

19 / 65

El DS1302

Caracter sticas

El DS1302
El DS1302 contiene un reloj/calendario de tiempo real y 31 bytes de RAM. El ultimo d de la fecha del mes se ajusta automticamente para aquellos meses a a que tienen menos de 31 d incluye correccin de ao bisiesto. as, o n La operacin del reloj permite ambos formatos: 24 horas o 12 horas con o indicador de AM/PM. La interface del DS1302 con un microcontrolador se simplica usando una comunicacin serial s o ncrona. Slo se requieren tres l o neas para comunicarse con el Reloj/RAM:
RST o CE (Reset). I/O (L nea de datos). SCLK (Reloj serial).
Mauricio Lpez V. (Ingenier o a) El DS1302 . . . Mayo, 2012 20 / 65

El DS1302

Byte de comando

Byte de comando

Un byte de comando inicia cada transferencia de datos. El MSB (bit 7) debe ser un uno lgico. Si ste es cero y es escrito en el DS1302 o e lo deshabilitar. a El bit 6 especica el dato reloj/calendario, para un cero lgico, o dato RAM, o para un uno lgico. o Los bits de 1 al 5 especican el registro en particular a ser le o escrito. do El LSB (bit 0) especica una operacin de escritura (entrada) si tiene valor cero o lgico o de lectura (salida) si tiene valor uno lgico. o o
Mauricio Lpez V. (Ingenier o a) El DS1302 . . . Mayo, 2012 21 / 65

El DS1302

Control y transferencia

Control de reloj

Un ciclo de reloj es una secuencia de un frente ascendente seguido de un frente descendente. Para datos de entrada, los datos deben ser vlidos durante el frente ascendente a del reloj y para la salida de los bits del dato en el frente descendente del reloj. Si la entrada del bit RST CE es bajo, toda la transferencia de datos se termina o y el pin de I/O va a un estado de alta impedancia. En el proceso de encendido, el bit RST CE debe encontrarse en cero lgico o o hasta que VCC > 2V. Tambin, SCLK debe estar en cero lgico cuando el bit e o RST CE cambia a una estado uno lgico. o o

Mauricio Lpez V. (Ingenier o a)

El DS1302 . . .

Mayo, 2012

22 / 65

El DS1302

Control y transferencia

Transferencia de datos

Mauricio Lpez V. (Ingenier o a)

El DS1302 . . .

Mayo, 2012

23 / 65

El DS1302

Control y transferencia

Entrada y Salida de datos


Entrada de datos Despus de los ocho ciclos de SCLK que introducen un byte de comando de e escritura, un byte de datos se introduce en los frentes ascendentes de los ocho siguientes ciclos de SCLK. Los datos son introducidos comenzando con el bit 0. Salida de datos Despus de los ocho ciclos SCLK que introducen un byte de comando de lectura, e un byte de datos sale en los frentes descendentes de los ocho siguientes ciclos de SCLK. El primer bit del dato a ser transmitido ocurre en el primer frente descendente despus de que el ultimo bit del byte de comando es escrito. e El pin I/O va a un estado de alta impedancia en cada frente ascendente de SCLK. Los datos salen comenzando con el bit 0.
Mauricio Lpez V. (Ingenier o a) El DS1302 . . . Mayo, 2012 24 / 65

El DS1302

Control y transferencia

Entrada y Salida de datos

La informacin de la hora y del calendario se obtiene al leer los bytes de los o registro correspondientes, un vez que stos ultimos se hayan congurado (al e escribir en ello) con los datos iniciales deseados. Los contenido de los registros de la hora y del calendario se encuentran en formato decimal codicado en binario (BCD). El registro del d de la semana se incrementa a medianoche. a Los valores que corresponden al d de la semana son denidos por el usuario, a pero deben ser consecutivos (es decir, si 1 corresponde al domingo, entonces 2 corresponde al lunes, etc.). Los datos de la hora y de la fecha con informacin ilgica causan una operacin o o o indeterminada.

Mauricio Lpez V. (Ingenier o a)

El DS1302 . . .

Mayo, 2012

25 / 65

El DS1302

Resumen de registros

Registros de Direccin/Denicin o o

Mauricio Lpez V. (Ingenier o a)

El DS1302 . . .

Mayo, 2012

26 / 65

El DS1302

PIC modo SPI - DS1302

PIC modo SPI - DS1302


El microcontrolador al usar el protocolo SPI transere su informacin iniciando o con el MSB (bit7), mientras que el dispositivo reloj DS1302 comienza con el LSB (bit0) El PIC deben invertirse los bits antes y despus de interactuar con el e DS1302. Para el dispositivo DS1302 el estado de inactividad del reloj SCLK es el nivel bajo, por lo que el PIC debe programarse con CKP = 0. Como el ciclo de reloj SCLK en el dispositivo DS1302 es una secuencia de un frente ascendente seguido de un frente descendente, el PIC debe programarse con CKE = 1 para que la transmisin ocurra en un frente descendente. o Se desea muestrea el dato de entrada a la mitad del tiempo de salida del dato, por lo que el PIC debe programarse con SMP = 0. El PIC se programa en modo maestro con reloj de Focs/64, es decir, con SSPM3:SSPM0 = 0010.
Mauricio Lpez V. (Ingenier o a) El DS1302 . . . Mayo, 2012 27 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagrama de conexiones

Diagrama de conexiones UART - DS1302


+5V 10 K 100 1 MCLR RB7 40 RB6 39 RB5 RB4 RB3 RB2 RB1 38 37 36 35 34

LCD_RS LCD_RW LCD_E

2 RA0 3 RA1

4 RA2 5 6 RA3 RA4

7 RA5 8 9 RE0 RE1

RB0 33 Vdd 32 Vss RD7 31 30 20 K +5V 1 16 +5V +5V

10 RE2 +5V 22 pf 4 MHz 22 pf +5V 1 Vcc2 2 X1 3 X2 4 GND Vcc1 5 SCLK 6 I/O 7 RST 8 Reloj Latch +5V RSTDS13 11 Vdd 12 Vss 13 OSC1 14 OSC2 15 RC0 16 RC1 17 RC2 18 SCK

RD6 29 RD5 28

RD427 RX TX 26 25

Vss Vdd Vee RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 NCNC

SDO 24 SDI 23

19 RD0 20 RD1 PIC 16F877A

RD3 22 RD2 21 +5V

+ 1K

+10V

-10V

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

+ 1 C1+ Vcc 16 GND 15 T1OUT 14 R1IN 13 R1OUT 12 T1IN 11 T2IN 10 R2OUT 9 2 V+ 3 C1+ 4 C2+ 5 C26 V7 T2OUT 8 R2IN

+ -

Conector DB9 hembra

1 2 3 4 5 6 7 8 9

+ -

Conectar al computador

MAX232

Mayo, 2012

28 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Caracter stica de dise o n

Criterios de programacin del reloj DS1302 o

Se desea utilizar un microcontrolador PIC16F877 para programar un dispositivo, reloj DS1302, mediante el protocolo SPI. El reloj debe iniciar con la fecha y la hora: primero de Enero de 2000 a las cero horas, cero minutos y cero segundos, que deben ser desplegados en un display LCD. El usuario podr actualizar la fecha y la hora con ayuda del teclado de una a computadora. El usuario podr reprogramar, en un proceso de modicacin, uno o varios de a o los parmetros de fecha y hora. a

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

29 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Caracter stica de dise o n

Criterios de teclas para la programacin del reloj DS1302 o


P - Inicia un proceso de programacin del reloj DS1302. o F - Finaliza un proceso de programacin del reloj DS1302. o ESC - Aborta toda la programacin del reloj DS1302. o A - Inicia programando del ao. n M - Inicia programando del mes (Enero, Febrero, etc.). D - Inicia programando del d (1, 2, 3, etc.). a H - Inicia programando de las horas (23 hrs.). m - Inicia programando de los minutos (59 min.). d - Inicia programando del d de la semana (Lunes, Martes, etc.). a
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 30 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Caracter stica de dise o n

Criterios de banderas en el control del ujo del programa

Para llevar a cabo el control del ujo del programa en la programacin del reloj o DS1302, de acuerdo al dato proporcionado por el usuario, dato, se requiere establecer un conjunto de banderas. En general se identican dos grupos de banderas:
- Las que controlan el proceso de captura de los datos, registro Rprogm. - Las que controlan el proceso de escritura en el DS1302, registro Yaprogm.

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

31 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Caracter stica de dise o n

Criterios de banderas en el control del ujo del programa


Banderas del registro Rprogm (captura de los datos):
- proc ac (bit Rprogm, 7 ): Proceso activo (dato = P - wrt ano (bit Rprogm, 5 ): Captura del ao (dato = A n - wrt mes (bit Rprogm, 4 ): Captura del mes (dato = M - wrt dia (bit Rprogm, 3 ): Captura del d (dato = D a = = = = proc ac = 1). wrt ano = 1). wrt mes = 1). wrt dia = 1). = = = wrt hrs = 1). wrt min = 1). wrt dis = 1).

- wrt hrs (bit Rprogm, 2 ): Captura de las horas (dato = H - wrt min (bit Rprogm, 1 ): Captura de minutos (dato = m - wrt dis (bit Rprogm, 0 ): Captura d de semana (dato = d a

- bit MSB (bit Rprogm, 6 ): Captura del nmero (bit MSB = 1 para nibble ms u a signicativo, bit MSB = 0 para nibble menos signicativo).

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

32 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Caracter stica de dise o n

Criterios de banderas en el control del ujo del programa


Banderas del registro Yaprogm (escritura en el DS1302):
- wds ano (bit Yaprogm, 5 ): Escritura del ao n (dato = A y dato = F - wds mes (bit Yaprogm, 4 ): Escritura del mes (dato = M y dato = F - wds dia (bit Yaprogm, 3 ): Escritura del d a (dato = D y dato = F - wds hrs (bit Yaprogm, 2 ): Escritura de las horas (dato = H y dato = F - wds min (bit Yaprogm, 1 ): Escritura de los minutos (dato = m y dato = F = wds min = 1). = wds hrs = 1). = wds dia = 1). = wds mes = 1). = wds ano = 1).

- wds dis (bit Yaprogm, 0 ): Escritura de los d de la semana as (dato = d y dato = F = wds dis = 1).

- balmac (bit Yaprogm, 7 ): Captura del nmero (balmac = 0 no se ha terminado de u capturar los dos nibbles del nmero, balmac = 1 almacena los dos nibbles del u nmero en el registro correspondiente). u
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 33 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Primera aproximacin o

Diagramas de ujo de la interrupcin o

dato = ESC ?

NO

proc_ac =1?

SI
procact

dato = 'F' ?

NO
lecano

wrt_ano =1?

SI
lcdtano

Lee_dato

0 --> wrt_ano 1 --> wds_ano

Sale

SI
00h --> Rprogm

NO NO
dato = 'P' ?

prgano 3

SI

NO
dato = 'A' ?

NO
lecmes

wrt_mes =1?

SI
lcdtmes

Lee_dato

0 --> wrt_mes 1 --> wds_mes

00h --> Yaprogm

SI
1 --> proc_ac

SI
1 --> wrt_ano

NO
dato = 'M' ?

Sale

Sale

NO
lecdia

wrt_dia =1?

SI
lcdtdia

Sale Sale

SI
1 --> wrt_mes 2

NO
Lee_dato

Sale

0 --> wrt_dia 1 --> wds_dia

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

34 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Primera aproximacin o

Diagrama de conexiones UART - DS1302


2

dato = 'D' ?

NO
lechora

wrt_hrs =1?

SI
lcdthor

Lee_dato

0 --> wrt_hrs 1 --> wds_hrs

Sale

SI
1 --> wrt_dia

NO
dato = 'H' ?

NO
lecmin

wrt_min =1?

SI
lcdtmin

Lee_dato

0 --> wrt_min 1 --> wds_min

Sale

Sale

SI
1 --> wrt_hrs

NO
dato = 'm' ?

NO
lecdis

wrt_dis =1?

SI
lcdtdis

Lee_dato

0 --> wrt_dis 1 --> wds_dis

Sale

Sale

SI
1 --> wrt_min

NO
dato = 'd' ?

NO

Sale

Sale

SI
1 --> wrt_dis

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

35 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Primera aproximacin o

Diagrama de conexiones UART - DS1302

3 prgano wds_ano =1?

NO
prgmes

wds_mes =1?

NO
prgdia

wds_dia =1?

NO
prghora

wds_hrs =1?

NO
prgmin

wds_min =1?

NO
prgdis

wds_dis =1?

SI

0 --> wds_dis

SI
0 --> wds_ano

SI
0 --> wds_mes

SI
0 --> wds_dia

SI
0 --> wds_hrs

SI
0 --> wds_min

NO

inisec

Esc_dato

Esc_dato

Esc_dato

Esc_dato

Esc_dato

Esc_dato

00h --> Rprogm

00h --> Yaprogm

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

36 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la subrutina: tr dato

Para llevar a cabo el eco a la Hyper Terminal se crea una subrutina: tr dato.

tr_dato

0 --> TXIF

Limpia la bandera de transmisin.

dato --> TXREG

Transmite el dato a la PC.

NO

TXIF = 1 ?

Ya termin la transmisin ?

SI
Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

37 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


Se involucran las banderas de la captura del nmero: u
bit MSB : Para almacenar los dos nibbles del nmero en el registro u correspondiente, balmac: Para seleccionar el nibble ms o menos signicativo del n mero. a u

Se denen los registros que controlan los datos de fecha y hora:


- rano: Almacena el dato del ao. n - rmes: Almacena el dato del mes. - rdia: Almacena el dato del d a. - rhora: Almacena el dato de las horas. - rminut: Almacena el dato de los minutos. - rdiasem: Almacena el dato de los d de la semena. as
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 38 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Subrutina: Lee dator


Para llevar a cabo la lectura de los nmeros se crea una subrutina de lectura: u Lee dator. Parmetros de Lee dator : a Tiene como entradas:
- dato: Asociada a la tecla presionada. - bit MSB : Permite diferenciar entre la entrada del nibble ms signicativo y menos a signicativo del nmero a capturar. u

Tiene como salidas:


- rgdato: Registro donde almacena los dos nibbles del nmero a capturar. u - balmac: Bandera para diferenciar entre un proceso no terminado de la captura de los nmeros y otra ya terminada para permitir almacenar el registro rgdato en el u registro correspondiente (rano, rmes, etc.).

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

39 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Subrutina: Lee dator

Funciones de Lee dator : Verica que el dato capturado corresponda a la tecla de un nmero. u Si el dato corresponde a un nmero lleva a cabo el eco a la Hyper Terminal. u Si la lectura es del primer nmero (el ms signicativo, bit MSB = 1 ), almacena u a ste en el nibble ms signicativo del registro rgdato, y limpia las banderas e a bit MSB y balmac. Si la lectura es del segundo nmero (el menos signicativo, bit MSB = 0 ), u incorpora ste al nibble menos signicativo del registro rgdato y prende la e bandera balmac (permite transferir el registro rgdato al registro correspondiente, debido a que se termin la captura de los nmeros). o u

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

40 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la subrutina: Lee dator

Lee_dator

Filtra la parte alta del cdigo ASCII del dato ledo.

dato .AND. F0h --> W

W .XOR. 30h --> W El dato corresponde al cdigo de un nmero ? Z=1?

NO

Sale

SI
Realiza el eco a la Hyper Terminal.
tr_dato

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

41 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la subrutina: Lee dator

Corresponde a la lectura del nmero ms significativo ?

bit_MSB =1?

NO
bitlsb 1 --> balmac Para que posteriormente el contenido de 'rgdato' se transmita al registro correspondiente.

SI
Inicializa el registro 'rgdato'. 00h --> rgdato

dato .AND. 0Fh --> W Filtra la parte baja del cdigo ASCII del dato ledo. El nmero deseado. Incorpora en el nibble alto del registro 'rgdato' el nmero ledo. dato .AND. 0Fh --> dato rgdato .OR. W --> rgdato SWAP(dato) --> rgdato Sale Indica proceso no terminado. 0 --> balmac

Filtra la parte baja del cdigo ASCII del dato ledo.

Incorpora en el nibble bajo del registro 'rgdato' el nmero ledo.

Indicar proceso no terminado.

0 --> bit_MSB

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

42 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

MACRO vf int
Para vericar que cada parmetro de la fecha (ao, mes, d del me y d de la a n a a semana) y de la hora (las horas y los minutos) introducidos por el usuario se encuentren en los intervalo vlidos, y en su caso ajustar stos, se crea una a e MACRO llamada vf int, la cual se ayuda de la subrutina sb vf it. Intervalo de cada parmetro de la fecha y la hora: a
- Ao: Del 00 a 99 . n - Mes: Del 01 a 12 . - D del mes: Del 01 a 31 . a - D de la semana: Del 01 a 07 . a - Las horas: Del 00 a 23 . - Los minutos: Del 00 a 59 .

Note que el intervalo vlido del mes, d del mes y d de la semana se inicia con a a a el valor 01 , mientras que el resto de los parmetros con 00 . a
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 43 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

MACRO vf int
Denicin de la MACRO: o
- vf int MACRO interna, rbit

Ejemplo de la forma de uso de la MACRO:


- vf int H12, H01

Parmetros de la macro: vf int a


Tiene como entrada, adems de sus argumentos: a
- rgdato: Registro donde se almacen los dos nibbles del n mero capturado. o u

Tiene como salida (si se llevo a cabo un ajuste):


- rgdato: Registro donde se almacenan los dos nibbles del nuevo n mero ajustado. u

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

44 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

MACRO vf int
Funciones de la macro vf int: En los casos pertinentes (mes, d del me y d de la semana) se verica que el a a dato capturado tenga como valor m nimo el 01 . Ajustando a 01 en caso contrario. Vericar que cada parmetro introducido por el usuario no sobrepase el valor a superior vlido y en su caso ajustarlo a ese mximo. a a
MACRO vf_int (interva, rbit)

interva --> int_sup

Establece el intervalo superior.

rbit --> bit_ban

Establece la bandera indicadora si se debe verificar que 01 es el intervalo inferior. Verifica que cada parmetro cumpla con el intervalo vlido.

sb_vf_it

FIN MACRO

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

45 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Subrutina: sb vf it

sb_vf_it

Se requiere verificar que rgdato > 0 ?

bit_ban<0> =1?

NO

SI
Es rgdato = 0 ? rgdato = 0 ?

NO

SI
Actualiza con el valor mnimo (01h). 01h --> rgdato Sale

NO

rgdato > int_sup ?

Es rgdato mayor al valor del intervalo superior ?

SI
Sale int_sup --> rgdato Actualiza con el valor mximo.

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

46 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


ISR

Respalda el acumulador, W.

W --> STORW

Respalda el STATUS register.

STATUS --> STRST proc_ac =1? 0 --> PIR1(RCIF)

SI
procact

Limpia bandera que genero la interrupcin.

dato = 'F' ?

NO
lecano

NO
RCREG --> dato

SI
tr_dato

Captura la tecla presionada.

Realiza el eco a la Hyper Terminal.

NO
Abortar todos los capturados? dato = ESC ?

dato = 'P' ?

Inicia proceso ? 3

prgano

NO
lecRpgr

SI
1 --> proc_ac Proceso activo.

SI
Limpia banderas controladoras de captura de los datos. Limpia banderas controladoras de escritura en el DS1302. 00h --> Rprogm

tr_dato

Realiza el eco a la Hyper Terminal.

00h --> Yaprogm outprl 4 4

Restablece el STATUS register.

STRST --> STATUS

Respalda el acumulador, W.

STORW --> W

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

47 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o

5 lecano Est en proceso la captura del ao? wrt_ano =1?

SI
lcdtano

NO
Lee_dator

Lectura de los nmeros.

Se inicia la captura del ao?

dato = 'A' ?

lecmes

NO

6 4

NO

SI
Habilita la captura de datos del ao. Para la captura del nmero ms significativo. Realiza el eco a la Hyper Terminal. 1 --> wrt_ano

balmac =1?

Ya termin la lectura de los nmeros ?

SI
rgdato --> rano 1 --> bit_MSB 0 --> wrt_ano
tr_dato

Actualiza registro que controla el valor del ao. Termina el proceso de captura de datos del ao. Datos listos para ser escritos en el DS1302. Indica proceso no terminado, para usarse en el siguiente proceso de captura.

1 --> wds_ano 4 0 --> balmac

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

48 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


6 lecmes Est en proceso la captura del mes? wrt_mes =1?

SI
lcdtmes

NO
Lee_dator

Lectura de los nmeros.

Se inicia la captura del mes?

dato = 'M' ?

lecdia

NO

7 4

NO

SI
Habilita la captura de datos del mes. Para la captura del nmero ms significativo. Realiza el eco a la Hyper Terminal. 1 --> wrt_mes

balmac =1?

Ya termin la lectura de los nmeros ?

SI
vf_int (H'12', H'01')

Verifica que el dato del mes se encuentre en el intervalo vlido. Actualiza registro que controla el valor del mes. Termina el proceso de captura de datos del mes. Datos listos para ser escritos en el DS1302. Indica proceso no terminado, para usarse en el siguiente proceso de captura.

1 --> bit_MSB rgdato --> rmes


tr_dato

0 --> wrt_mes 4 1 --> wds_mes

0 --> balmac

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

49 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


7 lecdia Est en proceso la captura del da? wrt_dia =1?

SI
lcdtdia

NO
Lee_dator

Lectura de los nmeros.

Se inicia la captura del da?

dato = 'D' ?

lechora

NO

8 4

NO

SI
Habilita la captura de datos del da. Para la captura del nmero ms significativo. Realiza el eco a la Hyper Terminal. 1 --> wrt_dia

balmac =1?

Ya termin la lectura de los nmeros ?

SI
vf_int (H'31', H'01')

Verifica que el dato del da se encuentre en el intervalo vlido. Actualiza registro que controla el valor del da. Termina el proceso de captura de datos del da. Datos listos para ser escritos en el DS1302. Indica proceso no terminado, para usarse en el siguiente proceso de captura.

1 --> bit_MSB rgdato --> rdia


tr_dato

0 --> wrt_dia 4 1 --> wds_dia

0 --> balmac

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

50 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


8 lechora Est en proceso la captura de las horas? wrt_hrs =1?

SI
lcdthor

NO
Lee_dator

Lectura de los nmeros.

Se inicia la captura de las horas?

dato = 'H' ?

lecmin

NO

9 4

NO

SI
Habilita la captura de datos de las horas. Para la captura del nmero ms significativo. Realiza el eco a la Hyper Terminal. 1 --> wrt_hrs

balmac =1?

Ya termin la lectura de los nmeros ?

SI
vf_int (H'23', H'00')

Verifica que el dato de las horas se encuentre en el intervalo vlido. Actualiza registro que controla el valor de las horas. Termina el proceso de captura de datos de las horas. Datos listos para ser escritos en el DS1302. Indica proceso no terminado, para usarse en el siguiente proceso de captura.

1 --> bit_MSB rgdato --> rhora


tr_dato

0 --> wrt_hrs 4 1 --> wds_hrs

0 --> balmac

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

51 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


9 lecmin Est en proceso la captura de los minutos? wrt_min =1?

SI
lcdtmin

NO
Lee_dator

Lectura de los nmeros.

Se inicia la captura de los minutos?

dato = 'm' ?

lecdis

NO

10 4

NO

SI
Habilita la captura de datos de los minutos. Para la captura del nmero ms significativo. Realiza el eco a la Hyper Terminal. 1 --> wrt_min

balmac =1?

Ya termin la lectura de los nmeros ?

SI
vf_int (H'59', H'00')

Verifica que el dato de los minutos se encuentre en el intervalo vlido. Actualiza registro que controla el valor de los minutos. Termina el proceso de captura de datos de los minutos. Datos listos para ser escritos en el DS1302. Indica proceso no terminado, para usarse en el siguiente proceso de captura.

1 --> bit_MSB rgdato --> rminut


tr_dato

0 --> wrt_min 4 1 --> wds_min

0 --> balmac

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

52 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Segunda aproximacin o

Diagramas de ujo de la interrupcin o


10 lecdis Est en proceso la captura de los das de la semana? wrt_dis =1?

SI
lcdtdis

NO
Lee_dator

Lectura de los nmeros.

Se inicia la captura de los das de la semana?

dato = 'd' ?

NO

4 4

NO

SI
Habilita la captura de datos de los das de la semana. Para la captura del nmero ms significativo. Realiza el eco a la Hyper Terminal. 1 --> wrt_dis

balmac =1?

Ya termin la lectura de los nmeros ?

SI
vf_int (H'07', H'01')

Verifica que el dato de los das de la semana se encuentre en el intervalo vlido. Actualiza registro que controla el valor de los das de la semana. Termina el proceso de captura de datos de los das de la semana. Datos listos para ser escritos en el DS1302. Indica proceso no terminado, para usarse en el siguiente proceso de captura.

1 --> bit_MSB rgdato --> rdiasem


tr_dato

0 --> wrt_dis 4 1 --> wds_dis

0 --> balmac

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

53 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: inreg

Para llevar a cabo la inversin de los ocho bits de un registro fuente a un registro o destino se crea la subrutina de inversin de bits o de reversin: inreg. o o

Parmetros de inreg: a Tiene como entrada:


- rgfuen: Registro origen al que se desea invertir sus bits.

Tiene como salida:


- rgdest: Registro fuente que almacena los bits ya invertidos.

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

54 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: inreg
Funciones de inreg: Lleva a cabo el intercambio de los bits (auxilindose de un contador, otrcont): a
MSB a7 a6 a5 a4 a3 a2 a1 LSB a0 rgfuen: registro fuente

a0 MSB

a1

a2

a3

a4

a5

a6

a7 LSB

rgdest: registro destino

Rota a la izquierda el registro fuente, para identicar el bit ms signicativo, y a rota a la derecha el registro destino, para inyectar el bit en la posicin ms o a signicativa.
MSB C rgfuen LSB

MSB C rgdest

LSB

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

55 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: inreg

inreg

00h --> otrcont

Limpia contador.

RotLeft(rgfuen) --> rgfuen

Rota a la izquierda para capturar el bit ms significativo. Rota a la derecha para inyectarlo al bit ms significativo.

RotDer(rgdest) --> rgdest

otrcont + 1 --> otrcont

Decrementa el contador.

NO

otrcont<3> =1?

Ya termin de invertir todos los bits ?

SI
Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

56 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

MACRO esc ctr


Para almacenar un dato en uno de los registros del dispositivo DS1302 se crea una MACRO llamada esc ctr , la cual se ayuda de las subrutinas inreg y wrtds. Denicin de la MACRO: o
- esc ctr MACRO control, registro

Ejemplo de la forma de uso de la MACRO:


- esc ctr B10001100, rano

Funciones de la macro esc ctr :


Utiliza como palabra de comando la constante, proporcionada en su argumento, para escribir en un registro particular el dato proporcionado por el argumento registro. Habilita el DS1302. Manda primero al DS1302 la palabra de comando y despus el dato a almacenar. e Antes de mandar el comando o el dato debe invertir los bits para que la informacin transmitida sea interpretada adecuadamente. o Al terminar deshabilita el DS1302.
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 57 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

MACRO esc ctr

MACRO esc_ctr (control, registro) Establece el comando con la constante del argumento. Establece el dato con el contenido del registro del argumento. Escribe dato (DataDS) en un registro (seleccionado por ComanDS) en el DS1302.

'control' --> ComanDS

registro --> DataDS

wrtds

FIN MACRO

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

58 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Pseudocdigo de la subrutina de escritura: wrtds o

1) Habilitar el DS1302. 2) Liberar el SSPBUF y limpiar bandera de fin de transferencia de datos. 3) Mandar la palabra de comando, una vez que se han invertidos sus bits, y esperar a que finalice la transferencia. 4) Liberar el SSPBUF y limpiar bandera de fin de transferencia de datos. 5) Mandar la palabra de dato, una vez que se han invertidos sus bits, y esperar a que finalice la transferencia. 6) Liberar el SSPBUF y deshabilitar el DS1302, terminando la subrutina.

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

59 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: wrtds
Tiene como parmetros de entrada: ComanDS y DataDS. wrtds #DEFINE RSTDS13 PORTC, 1

1 --> RSTDS13

Habilita el DS1302.

SSPBUF --> W

Libera el SSPBUF.

0 --> SSPIF

Limpiar bandera de fin de transferencia. Establece rgfuen con comando ComanDS.

ComanDS --> rgfuen

inreg

Realiza la reversin.

rgdest --> SSPBUF

Transmite comando al DS1302.

NO

SSPIF =1?

Ya termin la transmisin ?

SI
11
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 60 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: wrtds
11

SSPBUF --> W

Libera el SSPBUF.

0 --> SSPIF

Limpiar bandera de fin de transferencia. Establece rgfuen con dato DataDS.

DataDS --> rgfuen

inreg

Realiza la reversin.

rgdest --> SSPBUF

Transmite dato al DS1302.

NO

SSPIF =1?

Ya termin la transmisin ?

SI
SSPBUF --> W Libera el SSPBUF.

0 --> RSTDS13

Deshabilita el DS1302.

Sale
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 61 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Pseudocdigo de la subrutina de lectura: redtds o

1) Habilitar el DS1302. 2) Liberar el SSPBUF y limpiar bandera de fin de transferencia de datos. 3) Mandar la palabra de comando, una vez que se han invertidos sus bits, y esperar a que finalice la transferencia. 4) Liberar el SSPBUF y limpiar bandera de fin de transferencia de datos. 5) Inicia la transmisin escribiendo sobre SSPBUF y esperar a que finalice la transferencia. 6) Almacena el dato recibido, una vez que se han invertidos sus bits. 7) Deshabilitar el DS1302, terminando la subrutina.

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

62 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: redtds
Tiene como parmetros de entrada: ComanDS y DataDS. redtds #DEFINE RSTDS13 PORTC, 1

1 --> RSTDS13

Habilita el DS1302.

SSPBUF --> W

Libera el SSPBUF.

0 --> SSPIF

Limpiar bandera de fin de transferencia. Establece rgfuen con comando ComanDS.

ComanDS --> rgfuen

inreg

Realiza la reversin.

rgdest --> SSPBUF

Transmite comando al DS1302.

NO

SSPIF =1?

Ya termin la transmisin ?

SI
SSPBUF --> W Libera el SSPBUF.

12
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 63 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Subrutina: redtds
12

0 --> SSPIF NOP

Limpiar bandera de fin de transferencia.

W --> SSPBUF

Inicia la transmisin.

2 NOP's

NO

SSPIF =1?

Ya termin la transmisin ?

SI
SSPBUF --> rgfuen Captura el dato ledo.

inreg

Realiza la reversin.

rgdest --> DataDS

Almacena el dato ledo para ser procesado posteriormente.

0 --> RSTDS13

Deshabilita el DS1302.

Sale
Mauricio Lpez V. (Ingenier o a) Programacin UART - DS1302 . . . o Mayo, 2012 64 / 65

Trabajo a desarrollar: Programacin UART - DS1302 o

Diagramas de flujo del programa: Tercera aproximacin o

Diagramas de ujo de la interrupcin o


3 prgano wds_ano =1?

NO
prgmes

wds_mes =1?

NO
prgdia

wds_dia =1?

NO
prghora

wds_hrs =1?

NO
prgmin

15

SI
0 --> wds_ano

SI
0 --> wds_mes

SI
0 --> wds_dia

SI
0 --> wds_hrs

esc_ctr B'10001100', rano

esc_ctr B'10001000', rmes

esc_ctr B'10000110', rdia

esc_ctr B'10000100', rhora

15

wds_min =1?

NO
prgdis

wds_dis =1?

SI

0 --> wds_dis

SI
0 --> wds_min

NO

inisec

esc_ctr B'10001010', rdiasem

esc_ctr B'10000010', rminut

00h --> Rprogm

00h --> Yaprogm

Sale

Mauricio Lpez V. (Ingenier o a)

Programacin UART - DS1302 . . . o

Mayo, 2012

65 / 65

Potrebbero piacerti anche