Anda di halaman 1dari 4

Mrelberni Video: https://www.youtube.com/watch?

v=dPgIfvA8Nm0

Optoacoplador MOC3021 y tiristor triac BTA08 600B con PIC16F88

Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0 pgina 1


Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0

Se deja el cdigo realizado en el vdeo con el CCS, pero antes se quiere comentar la imagen
anterior que corresponde al circuito del vdeo, en el se aprecia que el pin de reset RA5 est
conectado mediante la resistencia de 4,7K al positivo o a 5V, tal como se ve en el circuito real en el
vdeo.

Resulta que lastimosamente se cometi un error involuntario al dibujar el esquema del


circuito, en el se puede ver que el pin RA5 est conectado al negativo o tierra, esto no es correcto,
ya que si se deja as el PIC16F88 entrara constantemente en reset, no permitiendo ejecutar el
programa realizado que si est correcto.

Se pide mil disculpas por este fallo, lo correcto en el esquema es que el pin RA5 debe ir
conectado mediante la resistencia de 4,7K al positivo o 5V.

A continuacin el cdigo del programa, divido en dos partes, la cabecera y el programa


principal, escrito para poder copiarlo y pegarlo, y con una imagen tal como se ve en el CCS.

Cdigo de la cabecera: led.h


#include <16F88.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES PUT //Power Up Timer
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(oscillator=4000000) //cristal interno a 4Mhz

imagen del cdigo de cabecera en el CCS

Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0 pgina 2


Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0

Cdigo del programa principal: led.c

#include <led.h> //cabecera


#use fast_io(b) //para utilizar set_tris_b

int8 i=0; //variable auxiliar para obtener poco mas de 4 segundos

#INT_TIMER1
void TIMER1_isr(void) //funcin de interrupcin del timer1 para
{ //obtener los intervalos de tiempo en los

set_timer1(1000); //que el pin RB0 del PIC16F88 cambia de estado

if(i==5){ //cuando i tome el valor de 5


output_toggle(pin_b0); //aqu se cambia el estado del pin RB0
i=0; //se pone i nuevamente a 0
}

i++; //en cada interrupcin i aumenta en una unidad

}//fin de la funcin de interrupcin

void main() //programa principal


{

Set_tris_b(0x00); //todo el puerto b como salidas digitales


output_b(0x00); //todos los pines del puerto b se ponen a 0v

setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); //interrupcin por desborde


//del timer1

enable_interrupts(INT_TIMER1); //aqu sehabilita interrupcin del timer1


enable_interrupts(GLOBAL); //y las interrupciones globales

setup_oscillator(OSC_4MHZ|OSC_INTRC); //se usa el oscilador interno del


//PIC16F88, programado a 4Mhz

set_timer1(1000); //carga inicial del timer1


delay_ms(2000); //pausa inicial de 2s, no necesaria

while(TRUE) //ciclo principal del programa


{
//TODO: User Code //en este ejemplo solo trabaja la interrupcin
//del timer1, en este ciclo no se program nada
}

}//fin del programa

Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0 pgina 3


Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0

imagen del cdigo principal en el CCS:

Atte: mrelberni

Mrelberni Video: https://www.youtube.com/watch?v=dPgIfvA8Nm0 pgina 4

Anda mungkin juga menyukai