Nuevo en programación con MikroC

#21
pues... no le veo fallo asi a vista rapida, ahora tampoco puedo ver el datasheet del 18f4550 estoy en el pc del trabajo y tengo muy limitados los accesos. Cuando llegue a casa lo revisaré un poco mejor.
De todos modos piensa que en el simulador el cristal no hace nada ahi, tienes que entrar en las propiedades del pic y poner ahi la velocidad (48000000)

Un saludo y hasta luego
 
#22
visto, creo que faltaba configurar los puertos como digitales.
te pongo el codigo modificado

Código:
void configurar_puertos();
bit i;

void main()
{
configurar_puertos();
PORTB=0x00;

while(1)
  {
    if ( RA0_bit == 1)
    PORTB=0x01;
  }
}
void configurar_puertos()
{
   ADCON0=0x00;      //sin puertos analógicos
   ADCON1=0x3F;
   
   TRISB=0x00;
   TRISA=0xFF;
}
Para el circuito te recomiendo ponerle una resistencia al led (+- 330) y aumentar la resistencia del reset (-+10k)

Un saludo
 
#23
Hola tannke gracias por la ayuda, en el circuito simulado configure la velocidad del micro y cambie los valores de los resistores del reset y del led, en el codigo configure las salidas/entradas digitales pero ahora cuando presiono el boton enciende pero ya no se apaga cuando lo dejo de presionar. Armado en circuito real si no aterrizo RA0 a tierra se queda encendido desde el principio y con solo desconectarla (quitarla de tierra) y aunque no la ponga a Vcc se enciende el led.
 
#24
Primero un fallo mio, donde dige resistencia de reset quise decir resistencia de pull-down.

Ahora vayamos por partes, el que solo se encienda y no se apague es normal, es lo que está programado, en el programa solo le decimos que se encienda. Si tu lo que quieres es que cuando presionemos se encienda y cuando lo soltemos se apague, tendras que agregarle por ejemplo un else, te pongo 2 maneras que funcionarían:

con if/else:
Código:
while(1)
  {
    if ( RA0_bit == 1)
        PORTB=0x01;
    else
        PORTB=0x00;
  }
otra manera mas sencilla:
Código:
while(1)
  {
    RB0_bit = RA0_bit;
  }
Lo segundo que te está pasando, lo de no poner la resistencia pull-down (aterrizar RA0 a tierra) también es normal, no le estas dando ningun nivel lógico, "lo tienes conectado a una antena que te está cogiendo ruido y dando cualquier nivel en esa entrada".

Espero te sea util, un saludo
 
#25
Muchas gracias tannke, es verdd no habia puesto la instruccion para apagar, y estuve investigando sobre las resistencias de pull-down pero la verdad no se si conectan fisicamente o se programan, segun yo se programan pero no se como hacerlo, no se si puedas ayudarme en esto, y por ultimo quisiera pedirte un gran favor y si no te molesta me podrias dar tu correo para futuras dudas.
Gracias y un saludo¡¡
 
#26
Bueno en tu circuito la resistencia pull-down es la que tienes en el pin 2 que va a masa, su función es mantener la linea en nivel lógico bajo hasta que aprietas el pulsador y la pones a nivel alto (5v).

Sobre el tema de programarlas por soft PULL-DOWN no es posible (almenos con los pic que conozco) preo sí puedes hacer PULL-UP a todas las entradas del puerto B.

En el pic 4550 esto se hace con el registro INTCON2 bit7 (RBPU), si lo pones a 1 las resistencias estan deshabilitadas(estado por defecto), si lo pones a 0 las habilitas.

Un saludo.
 
#29
soy nuevo con mikroc, alguien me puede decir como hago para ver el valor que van teniendo las variables dentro del programa en c a medida que lo hago correr con F8
 
#30
en la pestaña de depuración (normalmente a la derecha) hay un recuadro que pone "Select variable from list", ahi buscas tu variable (puedes escribirla), cuando la tengas, le das a "Add" arriba, es un + verde. Ahora ya te aparecera en el listado de abajo donte te pone el nombre, valor (puedes seleccionar como visualizaro char, bin, hex...) y direccion.

Un saludo
 
Última edición:
#32
Revisa la hoja de datos del PIC que estas programando, recuerda que muchos PIC (la mayoria hoy en dia) tienen módulos internos para trabajo especial y que algunos de estos comparten sus pines... Con eso supongo que el PORTA tiene por defecto el módulo ADC asociado a sus pines y trabajan como entradas análogas... entonces para que sean digitales lo debes configurar en el registro/s respectivo/s... Busca en el foro, que estos temas ya se han hablado bastante.

Saludos
 
#33
hola soy nueva en el mundo del microcontrolador y quisiera que me ayuden en un programa del alfabeto que muestre en un display alfanumero con el pic16f877 con el programa del mikroC y estoy un poco perdida en ese tema quisiera que me ayuden
 
#34
Buenas, pero qué significa un poco perdida?

Sabes algo de programación en C o ASM al menos?

Entendés el funcionamiento de un display alfanumérico?

Deberías hacer alguna rutina de retardo para que cada letra se vea un par de segundos..o minutos..

Con tan poca información es dificil en qué ayudarte.

En el programa live wire hay un ejemplo, de cómo manejar los 16 bits para ir formando las letras, supongo que si definis eso en el programa es cuestión de hacer las 28 letras y listo...
 

Adjuntos

Última edición:
#36
ok, recién empezando a estudiar el lenguaje digamos.

Bueno, basicamente por qué querés usar ese PIC?

Digamos que vas a usar ese PIC..como ya te dije para 1 sólo display alfanumérico necesitas 16 puertos del PIC o una especie de multiplexor, o decodificador, que no se si existe.

O tal vez lo puedas ir diseñando con decodificadores para 7 segmentos y compuertas lógicas, para ahorrar algunos puertos del PIC
 
#38
Yo sabría guiarte un poco en assembler, no tanto en C

Mi idea sería declarar las 28 letras como bits en 2 registros, uno para puerto B y otro para el C

Mandar de a 1 letra a los puertos y mantenerlos así digamos 5 segundos...apagar y mandar la siguiente letra ... y asi
 
#40
Esto seria una opción , es un video donde explica a groso modo como programar un pic con mikroC en los ejemplos que muestra hace referencia a encender o apagar leds pero en tu caso tendrías que saber que "leds" te formarían las letras en el display y asi encender o apagar los que sea necesario.
te dejo el link si te interesa
 

Temas similares

Arriba