TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: nomakon en 25 de Octubre de 2010, 12:30:16
-
#include <12F629.h> //pic que vamos a utilizar
//#device adc=8 //conversor Analogico/digital patilla 8
#FUSES NOWDT //El perro encerrado en la caseta
#FUSES INTRC_IO //reloj interno del pic
#FUSES NOCPD //No EE proteccion
#FUSES NOPROTECT //El codigo libre de leer
#FUSES NOMCLR //No Master Clear
#FUSES PUT //Espera un tiempo al encenderse para
//que se estabilice la tension
#FUSES BROWNOUT //Reset cuando baja la tension a niveles no seguros
//#FUSES IESO //y eso es mi amiga y no baila
//#FUSES FCMEN //Habilita el modo a prueba de fallos del reloj
#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5
#use delay(clock=4000000) //Necesario para usar delay_ms
void main()
{
//setup_adc_ports(NO_ANALOGS|VSS_VDD); //desactivamos los puertos ADC
//setup_adc(ADC_OFF); //apagamos el conversor ADC
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); //activamos timer0 como interno
setup_timer_1(T1_DISABLED); //deshabilitamos
//setup_timer_2(T2_DISABLED,0,1); //lo mismo
setup_comparator(NC_NC); //las comparaciones son odiosas
setup_vref(FALSE); //voltaje referencia, no
if (GP0 == 0)
{
output_high(GP5);
}
else
{
delay_ms(2000);
output_low(GP5);
}
}
-
para leer el estado de un pin en ccs se usa la función input(pin_XX)
en lugar de
...
if (GP0==0)
...
debes usar
...
if (input(GP0)==0)
...
además de colocar tu if dentro de un ciclo infinito (while), para que se ejecute constantemente, sino solo se ejecuta una sola vez cuando arranca el pic.
-
Listo lo he puesto en un while y se activa cuando GP0 esta activo pero no respeta los (ms) antes de activarse.
Soy nuevo en esto =(
void main()
{
//setup_adc_ports(NO_ANALOGS|VSS_VDD); //desactivamos los puertos ADC
//setup_adc(ADC_OFF); //apagamos el conversor ADC
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); //activamos timer0 como interno
setup_timer_1(T1_DISABLED); //deshabilitamos
//setup_timer_2(T2_DISABLED,0,1); //lo mismo
setup_comparator(NC_NC); //las comparaciones son odiosas
setup_vref(FALSE); //voltaje referencia, no
while(1)
{
if (input(GP0)==1)
{
delay_ms(50000);
output_high(GP5);
}
else
{
output_low(GP5);
}
}
}