Autor Tema: Necesitó ayuda con dec c++ ,no anda el compilador gráfico  (Leído 1906 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Maxi22g

  • PIC10
  • *
  • Mensajes: 2
Necesitó ayuda con dec c++ ,no anda el compilador gráfico
« en: 10 de Febrero de 2016, 16:09:21 »
.q hago
« Última modificación: 12 de Febrero de 2016, 14:47:04 por Maxi22g »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Programa c en.mplab x
« Respuesta #1 en: 10 de Febrero de 2016, 18:23:30 »
Hola, yo creo que un compañero tuyo estuvo por aca con el mismo "problema".

Como es tan facil le di el codigo. El tema esta en que aca no proveemos codigos asi por asi, sino que ayudamos en los problemas que tengas con TU codigo.

Te dejo el mismo hilo que le respondi a el:

http://www.todopic.com.ar/foros/index.php?topic=45843.0

Desconectado Maxi22g

  • PIC10
  • *
  • Mensajes: 2
Necesitó ayuda con dec c++ ,no anda el compilador gráfico
« Respuesta #2 en: 12 de Febrero de 2016, 14:11:07 »

.
« Última modificación: 12 de Febrero de 2016, 14:48:34 por Maxi22g »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Necesitó ayuda con dec c++ ,no anda el compilador gráfico
« Respuesta #3 en: 12 de Febrero de 2016, 14:53:21 »
Es interesante como estan modificando los mensajes para que no sepan de que se trata (incluso tu ocmpañero de clase "Seon" pidio que borraran el mensaje con el mismo problema, a dodne apunta el link que pase antes), hasta el titulo cambiaron. No hagan eso por que perjudican a cualquiera que necesite la informacion.
Si tienen otro problema y que no tiene relacion con este, por favor creen un nuevo post en la seccion adecuada.

El problema se trataba de esto:


Citar
Resulta que para el colegio necesito hacer este codigo, usamos el mplab x con el compilador xc8 de lenguaje C y el PIC es el 16F84A. Aqui el problema:

Se necesita construir un contador de 1 digito de 0 a 9. Para eso se desea conectar un PIC16F84A a un display de 7 segmentos. Cada vez que se recibe un cambio de 0 a 1 en RA2 se desea que el display incremente su valor en 1 y si llega a 9 debera volver a 0 nuevamente en forma repetitiva. La señal recibida en RA2 es enviada en otro equipo y solo cada cambio de 0 a 1 debe ser considerado para incrementar la numeracion. El display esta conectado asi y debe mostrar un numero en el display: a=RB0 b=RB1 c=RB2 d=RB3 e=RB4 f=RB5 g=RB6

Respuesta:

Citar
Código: C
  1. // PIC16F84A Configuration Bit Settings
  2.  
  3. // 'C' source line config statements
  4.  
  5. #include <xc.h>
  6.  
  7. // #pragma config statements should precede project file includes.
  8. // Use project enums instead of #define for ON and OFF.
  9.  
  10. // CONFIG
  11. #pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
  12. #pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
  13. #pragma config PWRTE = OFF      // Power-up Timer Enable bit (Power-up Timer is disabled)
  14. #pragma config CP = OFF         // Code Protection bit (Code protection disabled)
  15.  
  16. short int       contador=0;
  17. short int       tabla[10] = {   0b0000000,      // Numero 0
  18.                         0b0000000,      // Numero 1
  19.                         0b0000000,      // 2
  20.                         0b0000000,      // 3
  21.                         0b0000000,      // 4
  22.                         0b0000000,      // 5
  23.                         0b0000000,      // 6
  24.                         0b0000000,      // 7
  25.                         0b0000000,      // 8
  26.                         0b0000000};     // 9
  27.  
  28.  
  29. void main() {
  30.  
  31.         // Aca la configuracion de los puertos,TRIS, etc
  32.         TRISA = 0xFF;           // Puerto A como entradas
  33.         TRISB = 0;              // Puerto B como salidas
  34.         PORTB = tabla[0];       // Que el display comienze con el valor de 0
  35.  
  36.         while(1)                // Loop principal
  37.         {
  38.                 if(PORTAbits.RA2)                               // RA2 en 1?
  39.                 {
  40.                         delay_ms(10);                           // Espero, antirebote
  41.                         contador++;                             // Aumento el numero en 1
  42.                         if(contador==10) { contador=0; }        // Si se paso a 10, lo pongo en 0
  43.                         PORTB = tabla[contador];                // Muestro el valor nuevo
  44.                         while(PORTAbits.RA2);                   // Espero que suelte el boton (asi no cuenta varias veces
  45.                 }
  46.         }
  47. }

En donde dice tabla,, ahi tenes para cada numero tenes que ponerle un 1 o un 0 para que se encienda el segmento de cada led.. Supongamos que tenes el 7 segmento de catodo comun
Para el 0 deberias encender los segmentos: abcdef
Segun te dieron especificado: a=RB0 b=RB1 c=RB2 d=RB3 e=RB4 f=RB5 g=RB6

Entonces el primer valor es:

0b0111111,   // Numero 0

Recorda que RB0 es el de la derecha, es decir Rb7 Rb6 Rb5 Rb4 Rb3 Rb2 Rb1 Rb0.
« Última modificación: 12 de Febrero de 2016, 14:55:36 por KILLERJC »