Anda di halaman 1dari 6

Cmo utilizar los registros SFR?

Supongamos que usted ha comprado ya un microcontrolador y que tiene una buena idea de cmo utilizarlo... La lista de los registros SFR as como de sus bits es muy larga. Cada uno controla algn proceso en el microcontrolador. En general, parece como una gran tabla de control con un gran nmero de instrumentos e interruptores. Ahora est preocupado de cmo conseguir aprender acerca de todos ellos? Es poco probable, pero no se preocupe, Usted no tiene que hacerlo! Los microcontroladores son tan potentes que se parecen a los supermercados: ofrecen tantas cosas a bajos precios y a usted solo le toca elegir las que necesita. Por eso, seleccione el campo en que est interesado y examine slo lo que necesita. Cuando entienda completamente el funcionamiento de hardware, examine los registros SFR encargados de controlarlo (normalmente son unos pocos). Como todos los dispositivos tienen un tipo de sistema de control el microcontrolador tiene sus palancas con las que usted debe estar familiarizado para ser capaz de utilizarlos correctamente. Por supuesto, estamos hablando de los registros SFR desde los que el proceso de programacin se inicia y en los que el mismo termina.

3.2 PRINCIPALES REGISTROS SFR


El siguiente texto describe los principales registros SFR del microcontrolador PIC16F887. Los bits de cada registro controlan los circuitos diferentes dentro del chip, as que no es posible clasificarlos en grupos especiales. Por esta razn, se describen junto con los procesos que controlan.

Registro STATUS

Leyenda: R/W - Bit de lectura/escritura, R - Bit de solo lectura, (0) - Despus del reinicio, el bit se pone a cero, (1) - Despus del reinicio, el bit se pone a uno, (X) - Despus del reinicio, el estado de bit es desconocido El registro STATUS contiene:el estado aritmtico de datos en el registro W, el estado RESET, los bits para seleccionar el banco para los datos de la memoria.

IRP - Registro de seleccin de Banco (usado para direccionamiento indirecto) o o


1 - Bancos 0 y 1 son activos (localidades de memoria 00h-FFh) 0 - Bancos 2 y 3 son activos (localidades de memoria 100h-1FFh)

RP1,RP0 - Registro de seleccin de banco (usado para direccionamiento directo).


RP1 0 RP0 0 BANCO ACTIVO Banco 0

0 1 1

1 0 1

Banco 1 Banco 2 Banco 3

o o o o o o o o

TO - Time-out bit (bit de salida del temporizador perro guardin)


1 - Despus de encender el microcontrolador, despus de ejecutarse la instruccin CLRWDT que reinicia al WDT (temporizador perro guardin) o despus de ejecutarse la instruccin SLEEP que pone al microcontrolador en el modo de bajo consumo. 0 - Despus de acabarse el tiempo del WDT.

PD - Power-down bit (bit de apagado)


1 - Despus de encender el microcontrolador, despus de ejecutar la instruccin CLRWDT que reinicia al WDT. 0 - Despus de ejecutarse la instruccin SLEEP que pone al microcontrolador en el modo de bajo consumo.

Z - Zero bit (bit cero)


1 - El resultado de una operacin lgica o aritmtica es 0. 0 - TEl resultado de una operacin lgica o aritmtica es distinto de 0.

DC - Digit carry/borrow bit (bit de acarreo/prstamo de dgito) cambia al sumar o al restar si ocurre un desbordamiento o un prstamo en el resultado.
1 - Hubo acarreo del cuarto bit de orden bajo (nibble bajo) en el resultado. 0 - No hubo acarreo del cuarto bit de orden bajo (nibble bajo) en el resultado.

C - Carry/Borrow bit (bit de acarreo/prstamo) cambia al sumar o al restar si ocurre un desbordamiento o un prstamo en el resultado, o sea si el resultado es mayor de 255 o menor de 0. o o
1 - Ocurri acarreo en el bit ms significativo (MSB) del resultado. 0 - No ocurri acarreo en el bit ms significativo (MSB) del resultado.

Registro OPTION_REG

Leyenda: R/W - Bit de lectura/escritura, (1) Despus del reinicio, el bit se pone a uno

El registro OPTION_REG contiene varios bits de control para configurar el pre - escalador del Timer0/WDT, el temporizador Timer0, la interrupcin externa y las resistencias pull-up en el puerto PORTB.

o o

RBPU - Port B Pull up Enable bit (resistencia Pull Up Puerto B)


1 - Desactivadas 0 - Activadas

INTEDG - Interrupt Edge Select bit (bit selector de flanco activo de la interrupcin externa)
o o
1 - Interrupcin por flanco ascendente en el RB0/INT 0 - Interrupcin por flanco descendente en el RB0/INT

T0CS - TMR0 Clock Source Select bit (bit selector de tipo de reloj para el Timer0)
o o
1 - Pulsos introducidos a travs del TOCKI (contador) 0 - Pulsos de reloj internos Fosc/4 (temporizador)

T0SE - TMR0 Source Edge Select bit (bit selector de tipo de flanco en TOCKI) selecciona el flanco (ascendente o descendente) contado por el temporizador Timer0 por el pin RA4/T0CKI.
o o
1 - Incrementa en flanco descendente en el pin TOCKI. 0 - Incrementa en flanco ascendente en el pin TOCKI.

PSA - Prescaler Assignment bit asigna el pre-escalador (hay slo uno) al temporizador o al WDT.
o
1 - Pre - escalador se le asigna al WDT

o 0 - Pre - escalador se le asigna al temporizador Timer0. PS2, PS1, PS0 Prescaler Rate Select bits (bit selector del valor del divisor de frecuencia)
El valor del divisor de frecuencia se selecciona al combinar estos tres bits. Como se muestra en la siguiente tabla, el valor del divisor de frecuencia se le asigna al temporizador Timer0 o al temporizador perro guardin (WDT).
PS2 0 0 0 0 1 1 1 PS1 0 0 1 1 0 1 1 PS0 0 1 0 1 1 0 1 TMR0 1:2 1:4 1:8 1:16 1:64 1:128 1:256 WDT 1:1 1:2 1:4 1:8 1:32 1:64 1:128

Para conseguir el valor del divisor de frecuencia 1:1 cuando el temporizador Timer0 cuenta pulsos, el preescalador debe ser asignado al WDT. En consecuencia, el temporizador Timer0 no utiliza el pre-escalador, sino que cuenta directamente los pulsos generados por el oscilador, lo que era el objetivo.

Vamos a hacerlo en mikroBasic...

' Si el comando CLRWDT no se ejecuta, el WDT va a reiniciar al microcontrolador cada 32.768 ' uS (f=4 MHz) OPTION_REG = %00001111 ' Pre-escalador est asignado al WDT (1:128) asm CLRWDT ' Comando en ensamblador para reiniciar al WDT end asm ... ' El tiempo entre estos dos comandos CLRWDT no debe exceder 32.768 microsegundos (128x256) CLRWDT ' Comando en ensamblador para reiniciar al WDT

... ... ' El tiempo entre estos dos comandos CLRWDT no debe exceder 32.768 microsegundos (128x256) CLRWDT ' Comando en ensamblador para reiniciar al WDT ...

REGISTROS DEL SISTEMA DE DESARROLLO


Al llegar la peticin de interrupcin, no significa que una interrupcin ocurrir automticamente, puesto que debe ser habilitada por el usuario (por el programa) tambin. Por esta razn, hay bits especiales utilizados para habilitar o deshabilitar interrupciones. Es fcil de reconocerlos por las letras IE contenidas en sus nombres (Interrupt Enable - Interrupcin habilitada). Adems, cada interrupcin se asocia con otro bit denominado bandera que indica que una peticin de interrupcin ha llegado sin verificar si est habilitada. Asimismo, se reconocen con facilidad por las dos ltimas letras contenidas en sus nombres - IF (Interrupt Flag - Bandera de interrupcin).

Como hemos visto, toda la idea es muy simple y eficiente. Al llegar la peticin de interrupcin, primero el bit de bandera se pone a uno. Si el bit IE apropiado est a cero (0), esta condicin ser ignorada completamente. De lo contrario, ocurre una interrupcin. Si varias fuentes de interrupcin estn habilitadas, es necesario detectar la activa antes de que la rutina de interrupcin se ponga a ejecutar. La deteccin de la fuente se realiza al comprobar los bits de las banderas.

Cabe destacar que los bits de cada bandera no se ponen a cero automticamente, sino por el software, mientras que la ejecucin de la rutina de interrupcin contina ejecutndose. Si no hacemos caso a este detalle, ocurrir otra interrupcin inmediatamente despus de volver al programa principal, aunque no hay ms peticiones de ejecucin. Simplemente, la bandera, as como el bit IE, se quedan en uno.

Todas las fuentes de interrupcin tpicas para el microcontrolador PIC16F887 se muestran en la siguiente pgina. Fjese en lo siguiente:

El bit GIE habilita/deshabilita simultneamente las interrupciones no enmascaradas. El PEIE habilita/deshabilita las interrupciones no enmascaradas de perifricos. Esto no se refiere al temporizador Timer0 y a las fuentes de interrupcin del puerto PORTB. Para habilitar una interrupcin causada por el cambio del estado lgico en el puerto PORTB, es necesario

habilitarla para cada bit por separado. En este caso, los bits del registro IOCB se comportan como los bits IE de control.

Anda mungkin juga menyukai