;**********************************************************************
list p=12f675 ;directiva list para definir procesador
#include <P12F675.inc> ;definicion de registros de proposito especifico
;(SFRs)
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
;La directiva '__CONFIG' se usa para colocar datos de configuracion
;dentro del archivo .asm.
;Las etiquetas que siguen a la directiva se encuentran en el archivo
;.inc respectivo. Buscar en la hoja de datos respectiva para informacion
;adicional de la palabra de configuracion
;***** Definicion de Variables
w_temp EQU 0x20 ; variable usada para salvar contexto
status_temp EQU 0x21 ; variable usada para salvar contexto
;**********************************************************************
ORG 0x000 ; Vector de Reset
goto main ; ir al inicio del programa
ORG 0x004 ;posicion del vector de interrupcion
movwf w_temp ; salvar el contenido actual de W
movf STATUS,w ;
movwf status_temp ; salvar el contenido actual de STATUS
;La rutina de interrupcion puede ir a continuacion o se puede realizar una
;llamada a la rutina usando call
movf status_temp,w ; recuperar el valor de STATUS
movwf STATUS ; antes de la interrupcion
swapf w_temp,f
swapf w_temp,w ; recuperar el valor de W
retfie ;retornar de la interrupcion
main
call 0x3FF ; Obtiene el valor de calibracion de fabrica
bsf STATUS,RP0 ; vamos al banco 1
movwf OSCCAL ; Actualizamos el valor del oscilador
bcf STATUS,RP0 ; vamos al banco 0
;el programa principal va a continuacion
;iniciamos las posiciones de la EEPROM
ORG 0x2100 ; Pocision de la EEPROM interna
DE 1,2,3,4 ; define las primeras cuatro posiciones de la
; EEPROM como 1,2,3 y 4
END ; directiva 'fin del programa'