;
;					EJEMPLO 28
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo MicroPIC Trainer y Micro'PIC I/O
;
;El módulo conversor ADC. Regulación en alterna. Disparo con retraso de 90º
;
;Los dispositivos PIC16F87X disponen de un convertidor A/D de 10 bits de resolución y 5 u 8 
;canales de entrada analógica. La tensión de referencia determina la resolución por bit:
;(Res. = Vref/1024). Con 5 Vref=4.8 mV/Bit; con 2.5 Vref=2.4 mV/Bit
;
;El ángulo de disparo del optotriac de la tarjeta Micro'PIC I/O puede variarse y con ello
;la potencia aplicada a la carga (lámpara). Una vez sincronizada la alterna en su paso por
;0, el disparo del TRIAC se puede retrasar entre 0 (máxima potencia) y 10 mS (mínima 
;potencia).
;
;Este simple ejemplo pretende aplicar la mitad de la potencia a la carga, retrasando el
;ángulo de disparo del Triac en 5mS (90º) desde el cruce por cero. RB0/INT detecta dicho 
;cruce y RB1 controla el disparo del OptoTriac.

		List	p=16F873	;Tipo de procesador
		include	"P16F873.INC"	;Definiciones de registros internos

Delay		equ	.5000		;Retraso de 5 ms (se aplica la mitad de potencia)
					;con un ángulo de disparo de 90º

		org	0x00		;Vector de Reset
		goto	Inicio

		org	0x04		;Vector de interrupción

Inter		bcf	PORTB,1		;Triac Off
		bcf	INTCON,INTF	;Restaurar flag RBO/INTE
		bcf	PIR1,TMR1IF	;Restaurar flag del TMR1
		movlw	low ~Delay
		movwf	TMR1L
		movlw	high ~Delay
		movwf	TMR1H
Delay_Loop	btfss	PIR1,TMR1IF	;Temprización para el ángulo de disparo (5mS=90º)
		goto	Delay_Loop	
		bsf	PORTB,1		;Triac On
		retfie

;Programa principal

Inicio	       	clrf	PORTB
		bsf	STATUS,RP0	;Selecciona banco 1
		movlw	b'11111101'
		movwf	TRISB		;RB0/INT entrada, RB1 salida
		movlw	b'11001111'
		movwf	OPTION_REG	;Preescaler de 128 asociado al WDT
		bcf	STATUS,RP0	;Selecciona banco 0
		
		clrf	T1CON
		bsf	T1CON,TMR1ON	;TMR1 en On
		
		movlw	b'10010000'
		movwf	INTCON		;Habilita interrupción RBO/INT

Loop		clrwdt
		goto	Loop

	

		end			;Fin del programa fuente
