TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ECHA en 29 de Abril de 2011, 11:34:51
-
buenas, he realizado un pequeño programa que permita enviar por infrarrojo 5 comandos diferentes pero al compilarlo me da error y no entiendo por que??? si me pueden ayudar lo agradecería mucho
#include <16f877a.h>
#fuses XT
#FUSES NOWDT
#FUSES NOPROTECT
#use delay(clock=4000000)
#define IR_CHUP 0x59A616E9
#define IR_CHDW 0x59A615EA
#define IR_VOLUP 0x59A614EB
#define IR_VOLDW 0x59A613EC
#define IR_POWER 0x59A610EF
void ir_send(int32 code);
Void main()
{
setup_ccp1(CCP_PWM);
set_pwm1_duty(0);
setup_timer_2(T2_DIV_BY_1,26,1);
while (true)
{
if(input(PIN_D0))
ir_send(IR_CHUP);
while (input(PIN_D0))
{
delay_us(50000);
set_pwm1_duty(13);
delay_us(9000);
set_pwm1_duty(0);
delay_us(2250);
}
if(input(PIN_D1))
ir_send(IR_CHDW);
while (input(PIN_D1))
{
delay_us(50000);
set_pwm1_duty(13);
delay_us(9000);
set_pwm1_duty(0);
delay_us(2250);
}
if(input(PIN_D2))
ir_send(IR_VOLUP);
while (input(PIN_D2))
{
delay_us(50000);
set_pwm1_duty(13);
delay_us(9000);
set_pwm1_duty(0);
delay_us(2250);
}
if(input(PIN_D3))
ir_send(IR_VOLDW);
while (input(PIN_D3))
{
delay_us(50000);
set_pwm1_duty(13);
delay_us(9000);
set_pwm1_duty(0);
delay_us(2250);
}
if(input(PIN_D4))
ir_send(IR_POWER);
while (input(PIN_D4))
{
delay_us(50000);
set_pwm1_duty(13);
delay_us(9000);
set_pwm1_duty(0);
delay_us(2250);
}
}
void ir_send(unsigned int32 code)
{
unsigned char i = 0;
disable_interrupts(GLOBAL);
// Envío el START
set_pwm1_duty(13);
delay_us(9000);
set_pwm1_duty(0);
delay_us(4500);
// Voy desgranando el código
while (i < 32) {
#bit first=code.31
// Transmitimos un 1
if (first) {
set_pwm1_duty(13);
delay_us(560);
set_pwm1_duty(0);
delay_us(1690);
}
// Transmitimos un 0
else {
set_pwm1_duty(13);
delay_us(560);
set_pwm1_duty(0);
delay_us(560);
}
code <<= 1;
i++;
}
// Bit de parada
set_pwm1_duty(13);
delay_us(560);
set_pwm1_duty(0);
enable_interrupts(GLOBAL);
}
Estos son mis errores:
Executing: "C:\Program files\Picc\CCSC.exe" +FM "test.c" #__DEBUG=1 +ICD +DF +LN +T +A +M +Z +Y=9 +EA #__16F628A=TRUE
***
Error 51 "test.c" Line 75(1,5): A numeric expression must appear here
***
Error 12 "test.c" Line 92(7,10): Undefined identifier
***
Error 51 "test.c" Line 100(7,11): A numeric expression must appear here
***
Error 12 "test.c" Line 107(12,16): Undefined identifier code
4 Errors, 0 Warnings.
-
Hola ECHA, te hace falta cerrar la llave de la función main() { }
Saludos!
-
siiii gracias no me di cuenta
-
Hola ECHA, me alegra que lo solucionaras. Como cometario te quería preguntar si te has dado cuenta que en la primera línea de error que muestras hace referencia a un PIC16F628A y el el encabezado de tu código figura un PIC16F877A?
Saludos!
-
Hola ECHA, me alegra que lo solucionaras. Como cometario te quería preguntar si te has dado cuenta que en la primera línea de error que muestras hace referencia a un PIC16F628A y el el encabezado de tu código figura un PIC16F877A?
Saludos!
no me di cuenta con razon no me daba la simulación dejame seguir probando...yo coloco el pic 16f877a pero me toma ese nose porque???
-
En que IDE estás compilando el programa, Mplab o CCS?
Saludos!
-
En que IDE estás compilando el programa, Mplab o CCS?
Saludos!
Saludos,
disculpa por no contestarte el mismo día...en el mplab donde hago las simulaciones con el analizador logico...le di el pograma a un compañero para que lo corriera en mplab y mostraba el pic correcto, no tengo idea por que el mio genera ese detalle.
-
Hola ECHA, si trabajas en Mplab, posiblemente te falta configurar el PIC. Menú -> Configure -> Select Device... -> Device: PIC16F877A
Saludos!
-
Hola ECHA, si trabajas en Mplab, posiblemente te falta configurar el PIC. Menú -> Configure -> Select Device... -> Device: PIC16F877A
Saludos!
Listo gracias me funciono...ahora me falta decodificar las teclas del control
#define IR_CHUP 0x59A616E9
#define IR_CHDW 0x59A615EA
#define IR_VOLUP 0x59A614EB
#define IR_VOLDW 0x59A613EC
#define IR_POWER 0x59A610EF
yo coloque estos valores de manera aleatoria segun el protocolo nec...tengo un osciloscopio pero no logro ver correctamente los pulsos.