TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: d4n13l4 en 25 de Noviembre de 2010, 22:01:04
-
Hola
tengo una duda, segun vi no me acuerdo si en asm o en basic habia una funcion que uno le ponia pause 500 y mantenia la señal en alto por 500ms pero mi programa esta en C como puedo hacer esto?
mi idea es que tengo una señal que sale del 16f877a en alto y quiero que este en alta esa señal por X segundos.
Saludos
-
Depende de que compilador estés usando, para Hi-Tech seria __delay_ms(x) o __delay_us(x) pero antes debes configurar la velocidad del cristal, para CCS creo que es delayms(x)
Saludos!
-
podes usar interrupciones de timer tambien para no tener al procesador ocupado esperando.
saludos!!
-
Hola
si estoy usando CCS, tengo definido el oscilador de 4MHz
este es mi codigo
#include <16F877a.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
///////////////////////Principio del programa//////////////////////////////////
void main(void)
{
int dato=0;//declaracion de variables
set_tris_b(0b00000000);//puerto b como salida
set_tris_c(0b11111111); //RC7/Rx entrada, RC6/Tx salida
set_tris_c(0b10000000);
output_b(0b00000000); //pone en ceros todo el puerto b
while(TRUE)//Ciclo
{
if(kbhit())//si ha llegado un dato
{
dato=getc(); //Lee el dato recibido
putc(dato); //retorno
if (dato==0x31)//si el dato es 1
{
output_high(PIN_B0);
}
if (dato==0x32)//si el dato es 2
{
output_low(PIN_B0);
}
}
}
}
mi idea es que cuando aprete el 1 se mantenga el valor alto por Xsegs
probe con el delay_ms pero no bajo el valor despues de Xsegs
Saludos
-
Claro, no va a bajar debido a que es solamente un retraso, luego del retraso debes volver a ponerlo en bajo, solo que como dijo gera, esta opcion mantiene al procesador ocupado mientras dure ese tiempo, para hacerlo como tu quieres debes usar alguno de los timers.
Saludos!
-
aaa cierto ahi puse que se bajara despues del tiempo y me funciono como queria
gracias
Saludos