                                                       

;************************************************************
;* Carlos Alberto Henao                                     *
;* Interrupcin por desborde del timer0 con el pic 16f877   *
;* Foro tcnico de microcontroladores "todopic"		    *
;* 13 de julio del 2009 Pereira - Colombia                  *
;************************************************************


;******************** Declaracin de registros especiales *********************************

tmr0		equ		01h
status		equ		03h
porta		equ		05h
portb		equ		06h
portc		equ		07h
portd		equ		08h
porte		equ		09h
intcon		equ		0bh

option_reg	equ		81h
trisa		equ		85h
trisb		equ		86h
trisc		equ		87h
trisd		equ		88h
trise		equ		89h
adcon1		equ		9fh

;******************* registros de usuario *************************************************

cuenta		equ		20h


list p = 16f877

;***************** va a empezar el programa ***********************************************

	org	00
	goto	inicio
	
	org	04
	goto	inter


;**************** Rutina de manejo de interrupcin ****************************************

inter	btfsc	intcon,2	; pregunto si hubo interrupcin por timer0
	goto	timer0
	retfie

timer0	incf	portb,1		; incremento el puerto b en 1
	clrf	timer0		; inicializo de nuevo el timer para tiempo mximo
	bcf	intcon,2	; borro el flag 
	retfie			; retorno al pcl+1


;*************** rutina de principal (main) ***********************************************

inicio	bcf	status,6
	bsf	status,5	; banco 1
	movlw	b'11111111'
	movwf	trisa
	movwf	trisc
	movwf	trisd
	movwf	trise		; puerto A, C,D,E como entradas digitales
	movlw	b'00000000'
	movwf	trisb		; puerto B como salidas digitales
	movlw	b'11010111'
	movwf	option_reg	; configuro el timer a un predivisor de frecuancia de 1:256
	movlw	b'00000110'
	movwf	adcon1		; configuro puerto A Y E como entradas digitales	
	bcf	status,5	; banco 0
	clrf	porta
	clrf	portb
	clrf	portc
	clrf	portd
	clrf	porte		; limpio todo los puertos
	movlw	b'10100000'
	movwf	intcon		; habilito la interrupcion global y por desborde del timer0
				; ya estamos listos solo falta cargar el valor correspondiente
				; en el registro tmro

	clrf	tmr0 		; limpio el timer para que me produsca un mximo valor de 
				; tiempo
nada	goto	nada		; bucle infinito esperando a que ocurra la interrupcin
	end
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                                                   	             	                                                                                                                                                                                                                                                                                                                                                                                                   
     
         
                                                                                                                                                                                                                                                                                   	               q                         sd      d                                                                                                                                                                   
		
	 