12.5 SLEEP
El 16F628 cuenta con una función que le permite operar en un modo de muy bajo consumo, por ejemplo en el caso de
un sistema con alimentación de energía solar ó pilas. Si se tiene una aplicación en la cual el microcontrolador no desempeña ninguna
función hasta la ocurrencia de alguna interrupción, puede abatirse el consumo promedio del circuito a niveles cercanos a 0 ma (1 uA).
La función de SLEEP se habilita con la instrucción del mismo nombre. A partir de su ejecución, los circuitos del oscilador cesan de
funcionar, siendo de esta forma el consumo de corriente casi cero. Solamente la ocurrencia de alguna interrupción externa en el pin
RB0/INT, la interrupción por algún cambio en los niveles de las entradas en el puerto B, la interrupción proveniente de la EEPROM,
ó bien un reset en el pin MCLR del 16F628 puede restaurar la operación normal del circuito. Antes de entrar al estado de SLEEP,
debe de inhibirse la operación del WDT para evitar que éste reactive al circuito a través de su reset automático.
12.6 CODE PROTECT
El microcontrolador 16F628 cuenta con esta opción para evitar la copia del código del programa contenido en la
memoria FLASH del chip. Si usted desea proteger su programa entonces deberá añadir en la línea de configuración el comando
_CP_ON_. También es importante señalar que un chip que ha sido protegido, no puede ser leído, pero sí puede ser borrado y
reprogramado. Si desea proteger únicamente los datos de la memoria EEPROM, entonces se usa el comando _CPD_ON_
13. Puertos digitales :
El sistema 16F628 cuenta con dos puertos digitales, el puerto A, con 8 bits disponibles y el puerto B con 8 bits
disponibles. Sin embargo, en el EDUPIC, por su diseño de su hardware, el puerto A cuenta con solo 5 bits disponibles. Ambos
puertos son bidireccionales, ésto es, pueden programarse como entradas o como salidas, de acuerdo a unos registros de dirección de
datos, llamados "TRIS", en el caso del puerto A es "TRISA" y del puerto B es "TRISB". En la tarjeta EDUPIC, le han sido
conectados entradas con 4 microswitches para el puerto A y salidas de 8 LEDS para el puerto B, así como un relevador conectado al
pin RA0. La asignación de funciones en cada uno de los bits, se muestra en la siguiente tabla.
PUERTO
PUERTO A
RA0
RA1
RA2
RA3
RA4
PUERTO B
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
Antes de poder escribir y leer de los puertos, es necesario primero programar qué bits serán entradas y salidas, usando
las siguientes instrucciones:
PUERTOA
BSF
BCF
MOVLW
MOVWF
PUERTOB
BSF
BCF
MOVLW
MOVWF
PIN EN HEADER 16x
PIN 1
PIN 3
PIN 5
PIN 7
PIN 9
PIN 2
PIN 4
PIN 6
PIN 8
PIN 10
PIN 12
PIN 14
PIN 16
STATUS,RP0
STATUS,RP1
0x1E
TRISA
STATUS,RP0
STATUS,RP1
0x00
TRISB
EDUPIC 16F628 Punto Flotante, S.A. 2010
13
FUNCION
ACTIVA/DESACTIVA RELEVADOR
MICROSWITCH A1, CONTROL LCD
MICROSWITCH A2, CONTROL LCD
MICROSWITCH A3
MICROSWITCH A4
LED B0, TECLADO Y1
LED B1, TECLADO Y2
LED B2, TECLADO Y3
LED B3, TECLADO Y4
LED B4, TECLADO X1
LED B5, TECLADO X2
LED B6, TECLADO X3
LED B7, TECLADO X4
;ELIJE EL BANCO 1 DE REGISTROS ESPECIALES
;RA0=SALIDA, RA1..RA4=ENTRADAS
;PROGRAMA LA DIRECCIÓN DE LOS BITS
;ELIGE EL BANCO 1 DE REGISTRO ESPECIALES
;RB0..RB7=SALIDAS