pic Jul. 2016 | Page 68

Tiempo Total = 178 * 128 * 1 µs = 9984 µs = 9’98 ms Mediante el programa principal comprobamos que el valor del contador es 20 (200 ms). Si es así el LED es conmutado, encendiéndolo o apagándolo según su estado anterior. No tenemos en cuenta el WatchDog, por lo que conviene deshabilitarlo, y nos son indiferentes los valores del W en todo momento, por lo que nos es igual guardar su valor o no al saltar a la rutina de interrupción. LIST P = 16F84 ;Indicamos el modelo de PIC a utilizar ; Definición de registros portb TRISB estado intcon opcion tmr0 EQU EQU EQU EQU EQU EQU 0x06 0X06 0X03 0x0B 0x81 0x01 ; ; ; ; ; ; Puerto B y TRISB en banco 1 La dirección del registro de estado es la 0x03 Registro controlador de interrupciones Registro OPTION Registro del Timer0 (TMR0) ; Definición de bits banco EQU Z t0if EQU EQU 0X02 0x02 t0ie EQU 0x05 0X05 ; Bit del registro de estado correspondiente ; al banco de datos. En ESTADO ;Bit indicador de que el registro W está a cero.ESTADO ; Bit de INTCON que indica que se produjo ; interrupción por desbordamiento del timer0 ; Bit de INTCON que habilita o no la interrupción ; por desbordamiento del timer0 ; Definición de constantes w f EQU EQU 0 1 ; Destino de operación = w ; Destino de operación = registro ; Definición de variables contador EQU 0X0C ; Contador ; Comienzo del programa. ORG 0X00 ; Cubrimos el vector de reset GOTO inicio ; Saltamos a la primera dirección tras ; el vector de interrupción ORG 0x04 ; Cubrimos el vector de interrupción GOTO RSI ; Y saltamos a la rutina de servicio de interrupción ; ************************ Inicialización de variables ************************* ORG 0X05 inicio BSF estado,banco MOVLW 0x06 MOVWF opcion ; Seleccionamos el banco 1 ; En binario 0000 0110 ; Ponemos el predivisor a 128 66