Autor Tema: Microcursillo en C  (Leído 178972 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado zurdo

  • PIC10
  • *
  • Mensajes: 9
Re: Microcursillo en C
« Respuesta #480 en: 27 de Noviembre de 2007, 23:25:06 »
ok disculpen, la instruccion kbhit() la coloque para probar si asi la solucionaba pero no estoy seguro que sea la correcta.

el dato lo estoy recibiendo por el RS-232 y el circuito que lo genera es un registro de desplazamiento 74165 y una circuiteria extra para generar el bit de start y de stop con unas compuertas, el dato creo que lo estoy generando bien y le coloco la misma frecuencia que la del RS-232 del pic.
por ejemplo si le introduzco la secuencia 11000110 entonces al mandar a escribir en la pantalla obtengo el caracter EC y asi con otros con y sin la instruccion kbhit()
y si declaro a num como integer pues escribo un numero en la pantalla que tampoco corresponde al introducido.
 

Desconectado zurdo

  • PIC10
  • *
  • Mensajes: 9
Re: Microcursillo en C
« Respuesta #481 en: 27 de Noviembre de 2007, 23:30:03 »
adjunto la simulacion en proteus porque me parece que una imagen habla mas que mil palabras. gracias por su ayuda... :mrgreen:

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Microcursillo en C
« Respuesta #482 en: 28 de Noviembre de 2007, 03:56:25 »
Ten en cuenta que al PIC le estan llegando 0 y 1 individuales que tendrás que ir guardando y luego unir para formar un caracter y poder representarlo en la LCD.

Pon el programa completo para poder simularlo.

PD. Acabo de ver que lo único que quieres es representarlos en la LCD bit a bit.
« Última modificación: 28 de Noviembre de 2007, 04:11:49 por pocher »

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Microcursillo en C
« Respuesta #483 en: 28 de Noviembre de 2007, 13:50:22 »
Esta tarde que tenía mas tiempo me lo he estado mirando más detenidamente.

Hay varias cosas que no entiendo. Los valores que le llegan al pin C7 son valores de tensiones (0V y 5V) no son bits, ni bytes. Entonces, ¿para qué quieres emplear la comunicación RS232? Lo estás enfocando mal, si lo único que quieres es que cuando hagas la carga en paralelo del registro 74165 leer la entrada RC7 y después mandarsela a la LCD, pués haces num=input(pin_C7) ... y olvídate de toda la comunicación RS232.

Otra cosa, esas puertas que tienes por ahí no sé para qué sirven, para generar el bit de Start y Stop creo que no. Ya me dirás algo.

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Microcursillo en C
« Respuesta #484 en: 28 de Noviembre de 2007, 13:55:19 »
Otra cosa, si quieres ver en la LCD el contenido del 74165, poco a poco, no le metas en el reloj la frecuencia que tienes de 9,6KHz, métele 1Hz por ejemplo.

Desconectado Tho0oR

  • PIC10
  • *
  • Mensajes: 18
Re: Microcursillo en C
« Respuesta #485 en: 24 de Enero de 2008, 20:23:13 »
Muy Buenas!!!



Este cursillo sige en pie??

Es fantastico!! yo soy un principiante, pero me lo agrego a favoritos y lo que pueda participar, participo.

Me esta ayudando mucho en mi aprendizaje, sois unos fenomenos!!!


Unos saludos a todos!!

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Microcursillo en C
« Respuesta #486 en: 28 de Enero de 2008, 15:15:56 »
Por supuesto que sigue en pie. Solo tenés que hacer preguntas sobre algunas dudas o problemas que tengaas y alguién te las va a responder.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Tho0oR

  • PIC10
  • *
  • Mensajes: 18
Re: Microcursillo en C
« Respuesta #487 en: 29 de Enero de 2008, 08:52:23 »
Hola!!

Estoy muy interesado en un programa que hizo Nocturno sobre un teclado matricial 4x3 creo recordar!

Era brillante la forma de pensar, de como leer un teclado con una sola entrada! Para ello empleaba 12 pulsadores distribuidos a forma de teclado, y en cada linea y columna una resistencia de distinto valor, de forma que la tension en la entrada del pia, dependia de que tecla hubieras pulsado. El convertidor AD hacie el resto.

Como me parece brillante esa forma de pensar, me gustaria ver el ejemplo, porque me lo enseñaron pero no lo consigo en ningun sitio.

por cierto Nocturno, tienes pagina web?


Un saludo a todos!!


Desconectado Tho0oR

  • PIC10
  • *
  • Mensajes: 18
Re: Microcursillo en C
« Respuesta #489 en: 29 de Enero de 2008, 20:27:42 »
gracias nocturno, eres un crack! :-)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Microcursillo en C
« Respuesta #490 en: 29 de Enero de 2008, 21:50:12 »
 :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Microcursillo en C
« Respuesta #491 en: 30 de Enero de 2008, 10:10:01 »
Nocturno alias RedPic  :mrgreen:

Desconectado dawaherjesus

  • PIC12
  • **
  • Mensajes: 59
Re: Microcursillo en C
« Respuesta #492 en: 10 de Febrero de 2008, 01:17:44 »
amigos como hago para seleccionar un pin en especifico del PIC y dale una configuración distinta a los demás por decirles quiero que el pin 3 de portb como salida y los demas como entrada o algo por el estilo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Microcursillo en C
« Respuesta #493 en: 10 de Febrero de 2008, 02:31:21 »
Para establecer la dirección de un pin (entrada o salida) se utiliza el registro TRIS del micro. En este registro hay una equivalencia de cada bit con cada pin del puerto. Cuando en el TRIS un bit vale 0, el pin correspondiente estará configurado como salida; por el contrario, si hay un 1, el pin será entrada.

Así, si haces lo siguiente, el pin3 de portb será salida y los demás entradas:
set_tris_b(0b11110111);

Además, en CCS hay una forma más rápida de hacerlo, puesto que si no cambias la configuración por defecto, cada vez que hagas una escritura o lectura en el puerto, el compilador establecerá automáticamente el TRIS que corresponda.

De esta manera, si haces esto, también conseguirás el resultado que buscas:

x=input_b(); // leemos el puerto entero, y se autoconfigura como entradas
output_low(PIN_B3); // escribimos en el pin 3, y se autoconfigura como salida

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: Microcursillo en C
« Respuesta #494 en: 10 de Febrero de 2008, 02:33:36 »
Hola, que tal a todos. Algunos que me conocen en el foro, saben que programo en ASM, peor depsues de ver todo lo qeu se podia hacer con la seri 18f, y despue de ver todo lo que se necesitaba en ASM para hacer funcionar esos pics, tome la desicion de comenzar a tocar el lenguaje C para pics, el compilador con el cual estoy comenzando mi sprimeros pasos es el CCS 3.249. Y como no podia ser de otra manera habia que comenza con algo facil, simple y ameno. El parpadeo de un led, al cual le agregue una condicion con el PIN RA0 del PORTA, y bueno aca esta el resultado de eso, claro con la ayuda de el_guitre que me asesoro "on-line". Ahora me tendra a MI dandoles lata por que ahora tendre que pensar en C y dejar el ASM por un momento

Código: C
  1. #include <16f877A.h>
  2. #fuses   XT,NOWDT,PUT,NODEBUG,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
  3. #use  delay(clock=4000000)    
  4. #use  fast_io(b)
  5. #use  fast_io(a)
  6. #zero_ram         //pone a "0" todos los registros internos que son usados como
  7.                   //variables
  8.  
  9.  
  10. void main()
  11.    {
  12.  
  13.    set_tris_b(0x00);                //configuro el puerto B como salida
  14.    set_tris_a(0b00001);             //configura el RA0=in, RA1-RA5=out
  15.    output_b(0x00);                  //pongo en cero las salidas del portb
  16.  
  17.      
  18.       while(true)            
  19.          {                          
  20.          while(!input(PIN_A0))      //pregunto si presione RA0=0?      
  21.             {                       //si, entonces enciendo RB1  
  22.             output_high(PIN_B1);      
  23.             }
  24.          output_low(PIN_B1);        //no, apago RB1, y RB0 esta
  25.          delay_ms(1000);            //encendido y apagado cada 1s
  26.          output_toggle(PIN_B0);
  27.          }        
  28.    }

P.D: Si la memoria no me falla, CCS tiene librerias para manejar LCD y teclado matricial, mi duda es si se pueden usar el LCD y el teclado en el mismo portB, ya que en asm yo lo hago asi, el lcd lo tengo conectado en la parte alta del puerto y el detecto las pulsadas en el teclado por interrupcion (cambio de -estado en RB7-RB4) asi me permite usar los dos dispositivos en un solo puerto. No se si la librerias que hizo aitopes puede hacer eso o tendre que hacer mi adaptaciones del asm de esas librerias al C  :D

P.D2: la version que estoy usando es la mas estable? ya que no quiero romperme el cerebro por problema de compilador  :mrgreen:

P.D3: Manolo, paras en linea? ya que solo una vez charle por el MSN con tigo  :mrgreen:.