Hola, estoy iniciandome en esto de programar los pics en C, en concreto estoy intentandolo con un pic 16f690, usando como entorno de trabajo mplab 7.60 y el hi-tech picc compiler.
Escribi un codigo en C bastante extenso que, posteriormente como era de esperar no funcionaba como deberia al compilarlo, asi que me estoy dedicando mejor a ir paso a paso para ir entendiendo como funciona a mas pequeño nivel para despues aplicar lo que vaya aprendiendo para depurar mi programa
el problema que tengo en concreto esque no consigo que el pic funcione con variables de programa, es decir, puedo programar cosas como "si la entrada tal esta a nivel alto la salida tal invierte su estado" pero con codigos como este no consigo nada
#include <stdio.h>
#include <htc.h>
void inicializa(void);
int seg;
/////////////////////////////
void main(void){
inicializa();
while(1){
if(RC1==1){
seg++;
while(RC1==1){
asm("NOP");}
}
if(seg>=3){
RB6=1;}
}}
////////////////////////////
void inicializa(void){
__CONFIG(0XCF4);
SCS=1; /*Config. oscilador interno*/
OSTS=0;
IRCF2=1;
IRCF1=1;
IRCF0=0;
ANSEL=0xFF; /*Config. Puertos como I/O*/
ANSELH=0xFF;
TRISA=0b00011000;
TRISB=0b00000000;
TRISC=0b00010010;
PORTA=0x00; /*Inicializacion Puertos*/
PORTB=0x00;
PORTC=0X00;
seg=0;
}
Es un codigo muy sencillo, si RC1 detecta un nivel alto incrementa una variable, si esa variable llega a valer 3 o mas se activa la salida RB6
Pero el programa no funciona y no se donde esta el error (pues el programa me compila y puedo programar el pic)
¿Veis a primera vista que fallos puedo estar cometiendo?
Gracias
Escribi un codigo en C bastante extenso que, posteriormente como era de esperar no funcionaba como deberia al compilarlo, asi que me estoy dedicando mejor a ir paso a paso para ir entendiendo como funciona a mas pequeño nivel para despues aplicar lo que vaya aprendiendo para depurar mi programa
el problema que tengo en concreto esque no consigo que el pic funcione con variables de programa, es decir, puedo programar cosas como "si la entrada tal esta a nivel alto la salida tal invierte su estado" pero con codigos como este no consigo nada
#include <stdio.h>
#include <htc.h>
void inicializa(void);
int seg;
/////////////////////////////
void main(void){
inicializa();
while(1){
if(RC1==1){
seg++;
while(RC1==1){
asm("NOP");}
}
if(seg>=3){
RB6=1;}
}}
////////////////////////////
void inicializa(void){
__CONFIG(0XCF4);
SCS=1; /*Config. oscilador interno*/
OSTS=0;
IRCF2=1;
IRCF1=1;
IRCF0=0;
ANSEL=0xFF; /*Config. Puertos como I/O*/
ANSELH=0xFF;
TRISA=0b00011000;
TRISB=0b00000000;
TRISC=0b00010010;
PORTA=0x00; /*Inicializacion Puertos*/
PORTB=0x00;
PORTC=0X00;
seg=0;
}
Es un codigo muy sencillo, si RC1 detecta un nivel alto incrementa una variable, si esa variable llega a valer 3 o mas se activa la salida RB6
Pero el programa no funciona y no se donde esta el error (pues el programa me compila y puedo programar el pic)
¿Veis a primera vista que fallos puedo estar cometiendo?
Gracias