SE – uC: PIC16F84A – Práctica #10

Requisitos del Programa

Realizar un programa que entre en modo SLEEP y se despierte cada vez que el WDT genere una interrupción, el tiempo para despertar el MCU dependerá del valor de tres bits del PORTA [2:0] utilizando un dipswitch y aumente una cuenta que se mostrara por el PORTB.

Planeación

Primero definiré los puertos de entrada y salida:

Entradas: PORTA [2:0]

Salidas: PORTB

Lo primero es configurar el WDT en el OPTION_REG:

OPTION_REG = 1000 1000 + 0000 0 RA2 RA1 RA0 = 0x88 + RA2-RA0

Para dormir el MCU se utiliza la instrucción SLEEP y se despertara automáticamente cuando el WDT se desborde.

Los tiempos pre-establecidos del WDT por la pre-escala son de 18ms [1:1] hasta 2.3s [1:128].

Diagrama de Flujo

Código Fuente

;--------------------------------------------------------------
;	NOMBRE DEL PROGRAMA: Practica #10
;		
;	DESCRIPCION: 	MODO SLEEP Y WAKE UP
;
;	POR:			Omar Gurrola
;		
;	FECHA:			8/11/06
;--------------------------------------------------------------
;	Configuracion para el GRABADOR

	__CONFIG	_CP_OFF & _WDT_ON & _PWRTE_ON & _HS_OSC
	
;_CP_ON / _OFF		Proteccion del Codigo
;_PWRTE_ON / _OFF	Reset mediante Power-Up Timer
;_WDT_ON / _OFF		WatchDog
;_LP_OSC			Oscilador de bajo Consumo (35Khz a 200Khz)
;_XT_OSC			Oscilador de Cristal (100khz a 4Mhz
;_HS_OSC			Oscilador de Alta velocidad (4Mhz a 20Mhz)
;_RC_OSC			Oscilador Resistencia-Capacitor ()
;--------------------------------------------------------------
;	Definiciones y Declaracion del Micro
	LIST	P=16F84A		;Procesador utilizado
	INCLUDE	<P16F84A.INC>	;Definicion de algunos operandos
;--------------------------------------------------------------
;	Declaracion de Constantes, Variables y Base

	RADIX	HEX		;Base Hexadecimal
	
	#DEFINE	BANK_0	BCF	STATUS,RP0	;Ir al banco 0
	#DEFINE	BANK_1	BSF	STATUS,RP0	;Ir al Banco 1
;--------------------------------------------------------------
;	Vectores de Interrupcion
	ORG	0			;Ensamblar en la Dir 0
	GOTO	INICIO	
	ORG 5			;Ensamblar en la Dir 5
;--------------------------------------------------------------
;	PROGRAMA
;--------------------------------------------------------------
INICIO
	BANK_1
	MOVLW	0XFF
	MOVWF	TRISA
	CLRF	TRISB
	BANK_0
	CLRF	PORTB
CICLO
	MOVLW	0X07
	ANDWF	PORTA,W
	ADDLW	0X88
	BANK_1
	MOVWF	OPTION_REG
	BANK_0
	SLEEP
	INCF	PORTB,F
	GOTO	CICLO

	END				;Fin del programa

Galería

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: