Autor Tema: Ejemplitos en C para 16F648A  (Leído 610132 veces)

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

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Ejemplitos en C para 16F648A
« Respuesta #15 en: 14 de Agosto de 2005, 14:27:00 »
El programa de las luces del coche fantastico, seria mas facil rotando los bits del puerto en que esten los leds. Si estamos con el puerto B por ejemplo (y 8 leds).

Encendemos el led de rb0 y rotamos (<<Giño a la izquierda 7 veces, por ejemplo con un for, y luego a la derecha otras 7 (>>Giño y todo dentro de un buque (while(1)). Creo que así es mas sencillo y eficaz que ir encendiendo/apagando led a led con "output_bit".

Si alguien esta interesado subo el programa, pero weno, es una chorrada Payaso

Edito: woo, esta puesto arriba, posteamos a la vez jeje Avergonzado
Si juegas contra el mejor, pierdes como los demás.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #16 en: 14 de Agosto de 2005, 14:29:00 »
De aqui os podeis descargar la otra forma del programa coche fantastico


Kit!!!!!!super turbooo!!!jeje :wink:
« Última modificación: 25 de Mayo de 2006, 10:07:31 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Ejemplitos en C para 16F648A
« Respuesta #17 en: 14 de Agosto de 2005, 14:47:00 »
Hola:

Amigo vszener perdon por meter basic en la seccion C pero me interesaria ir comparando los ejemplos en basic y en C, yo tengo hecho un ejemplo en basic que es este:

I       var byte
cont    var word

TRISB=0

inicio:
        cont=1
        for i=1 to 7
            PORTB=cont
            pause 100
            cont=cont*2
        next I
        for i=1 to 7
            PORTB=cont
            pause 100
            cont=cont/2
        next I
        goto inicio
end

Es para hacer el juego de luces del auto fantastico.... con 8 leds conectados al puerto B...

La descripcion del programa es el siguiente:

Tiene un bucle infinito que es inicio: GOTO inicio...y para la secuencia de luces hice un bucle que generelos valores 1-2-4-8-16-32-64-128 eso lo hago multiplicando la variable cont que empieza en 1 y luego se va multiplicando *2 i asi obtengo los valores, luego estos valores los asigno al puerto B y voy obteniendo la secuencia con la intruccion PORTB=dato... como puedo hacerlo en C de esta manera...

Quiero ir aprendiendo de acuerdo a los ejemplos que yo he ido haciendo... Digo si no es mucha molestia...!

Y una preguntita mas:

xq en algunas ocaciones utilizas esto: #use standard_io(B)
y en otras esto...................................: #use fast_io(b)

Tenme un poco de paciencia porfis.....!!!!!!!!!!!!!! Sonrisa GiganteSonrisa GiganteSonrisa GiganteMuchas risasMuchas risasMuchas risas

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #18 en: 14 de Agosto de 2005, 16:17:00 »
La adaptacion del codigo en basic que escribiste en c es la siguiente:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     14/Agosto/05
//
//   Programa:   Coche Fantastico
//   Version:   2.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Barrido de led"s simulando la iluminacion del coche fantastico por el
//         puerto B. Adaptacion del codigo en basic de lordlafebre
//
//            RB0 -> 1º Led
//            RB1 -> 2º Led
//            RB2 -> 3º Led
//            RB3 -> 4º Led
//            RB4 -> 5º Led
//            RB5 -> 6º Led
//            RB6 -> 7º Led
//            RB7 -> 8º Led
//         En la variable cont se va almacenando los valores 1-2-4-8-16-32-64-128
//         que en binario corresponden a la secuencia 00000001-00000010-00000100...
//         son los led"s a iluminar, coincidiendo con la secuencia de iluminacion
//         del coche fantastico(version Ecuatoriana: auto fantastico)
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(B)               //puerto B como salida

///PROGRAMA
void main(void)
{
   int i,cont;                  //variables definidas
   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas
   
   do{                        //bucle...
      cont=1;                  //inicializar...
      i=1;                  //...variables
      
      do{                     //led"s on derecha
         output_b(cont);         //ilumino led correspondiente
         delay_ms(100);
         cont=cont*2;
         i++;               //incremento i
         }while(i<8);
         
      i=1;                  //reset valor i
      
      do{                     //led"s on izquierda
         output_b(cont);         //ilumino led correspondiente
         delay_ms(100);
         cont=cont/2;
         i++;               //incremento i
         }while(i<8);
         
      }while(TRUE);            //...infinito
}

He cambiado los dos bucles for que en basic estan escritos por dos while....el cambio la verdad lo he realizado porque con los bucles for me da un problema y no se de ke es!!!!jeje puede ser un bug del compilador al tratar la segunda asignacion del for o puede ser un bug en mi cabeza jeje(todo es posible).
Con respecto a tu pregunta de porque algunas veces pongo #use standard_io(B) y otras veces pongo #use fast_io(b) es simplemente segun la asignacion que le quiero dar al puerto en cuestion a tratar(en este caso el B), la #use standar_io() declara el puerto seleccionado como entrada y salida mientras que la otra debes configurar la accion especifica de cada pin del puerto(si tienen comparadores,interrupciones,etc), una cosita mas respecto a esta pregunta es que la asignacion #use fast_io() da problemas muchas veces y cuando vas a simular el programa ves que los puertos no responden como quisiera, por lo tanto recomendarte que uses la primera #use standard_io() aunque mirate el manual que lo explica mejor que yo jeje si tienes alguna duda ya sabes!!! :wink:
« Última modificación: 25 de Mayo de 2006, 10:12:47 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #19 en: 14 de Agosto de 2005, 16:27:00 »
Jeje al final era un bug de mi cabezita......ainssssss jeje aqui esta el codigo adaptado en c con las mismas sentencias que tu codigo en basic!!!!

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     14/Agosto/05
//
//   Programa:   Coche Fantastico
//   Version:   2.1
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Barrido de led"s simulando la iluminacion del coche fantastico por el
//         puerto B. Adaptacion del codigo en basic de lordlafebre
//
//            RB0 -> 1º Led
//            RB1 -> 2º Led
//            RB2 -> 3º Led
//            RB3 -> 4º Led
//            RB4 -> 5º Led
//            RB5 -> 6º Led
//            RB6 -> 7º Led
//            RB7 -> 8º Led
//         En la variable cont se va almacenando los valores 1-2-4-8-16-32-64-128
//         que en binario corresponden a la secuencia 00000001-00000010-00000100...
//         son los led"s a iluminar, coincidiendo con la secuencia de iluminacion
//         del coche fantastico(version Ecuatoriana: auto fantastico)
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(B)               //puerto B como salida

///PROGRAMA
void main(void)
{
   int i,cont;                  //variables definidas
   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas
   
   do{                        //bucle...
      cont=1;                  //inicializar...
      
      for(i=1;i<8;i++){         //led"s on derecha
         output_b(cont);         //ilumino led correspondiente
         delay_ms(100);
         cont=cont*2;
         }
      
      for(i=1;i<8;i++){
         output_b(cont);         //ilumino led correspondiente
         delay_ms(100);
         cont=cont/2;
         }
         
      }while(TRUE);            //...infinito
}

Miratelo y me rpeguntas lo que no entiendas okis???? :wink:
« Última modificación: 25 de Mayo de 2006, 10:10:30 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Ejemplitos en C para 16F648A
« Respuesta #20 en: 14 de Agosto de 2005, 22:27:00 »
Hola:

Vamos bien, con estos ejemplos voy aprendiendo rapidoconosco los comandos de C++ (for,while,switch....).... aqui tengo otro ejemplo de luces que a diferencia del otro que iva de derecha a izquierda y viceversa ahora este juego de luces empieza desde los extremos al centro y del centro a los extremos, son solo cuatro valores que almaceno en un vector y con un bucle for me muevo en las posiciones del mismo y asigno el valor al puerto B

I       var byte
leds    var byte[5]

TRISB=0

leds[1]=%10000001
leds[2]=%01000010
leds[3]=%00100100
leds[4]=%00011000

Leds=1
inicio:
        for i=1 to 4
            PORTB=leds
            pause 100
        next I
        for i=4 to 1 step-1
            PORTB=leds
            pause 100
        next i
        goto inicio
end

Si estoy incomodando o causando molestias pidiendo que pases el codigo a C pos este es el ultimo pedido.... ji ji ji Sonrisa Gigante

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #21 en: 15 de Agosto de 2005, 04:40:00 »
Al final voy a tener que dejar de lado mis ejemplos para adaptar los tuyos!!!jeje es broma, pero puedes intentarlo migrar tus ejemplos en basic a c y preguntar las dudas...pero vamos para mi no es ninguna molestia asi programo mas jeje aqui tienes la adaptacion en c de tu codigo, decir, mas bien recordar, que todos los programas se pueden programar de mil formas diferentes....pero vamos de momento me voy a limitar a traducir linea por linea de basic a c jeje aqui eta el ejemplito!!!!por cierto queda muy bonito la secuencia de luces:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     15/Agosto/05
//
//   Programa:   Juego de luces
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Iluminacion de juego de luces fuera-dentro y viceversa por el puerto B.
//         Adaptacion a c por vszener del codigo en basic de lordlafebre.
//
//            RB0 -> 1º Led
//            RB1 -> 2º Led
//            RB2 -> 3º Led
//            RB3 -> 4º Led
//            RB4 -> 5º Led
//            RB5 -> 6º Led
//            RB6 -> 7º Led
//            RB7 -> 8º Led
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(B)               //puerto B

///PROGRAMA
void main(void)
{
   signed char i;      //variable indice
   int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s      
                  
   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas
   
   do{                        //bucle...
      
      for(i=0;i<4;i++){         //led"s on fuera-dentro
         output_b(leds[ i ]);      //ilumino led"s correspondientes
         delay_ms(100);
         }
      for(i=3;i>-1;i--){         //led"s on dentro-fuera
         output_b(leds[ i ]);      //ilumino led"s correspondientes
         delay_ms(100);
         }
         
      }while(TRUE);            //...infinito
}

Despacito pero sin pausa!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #22 en: 15 de Agosto de 2005, 04:52:00 »
Aqui la direccion para descargarse los archivos c, hex y dsn del ejemplo anterior: juego de luces


Suerte!!! :wink:
« Última modificación: 25 de Mayo de 2006, 10:09:00 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #23 en: 15 de Agosto de 2005, 06:11:00 »
Bien aqui la nueva entrega de programitas en c jeje!!!, esta vez no voy a poner un programa nuevo, sino la recopilacion de dos que ya hemos realizado, me explico la idea es que con el programa del coche fantastico y el programa este ultimo del juego de luces....¿porque no realizar el pic los dos?es decir, con un switch si esta cerrado que ejecute un programa y si esta abierto realice el otro...para ello debemos hacernos nuestra libreria(nuestro include fichero.h)y alli definir nuestras funciones(digo hacer librerias porque no vamos a programar otra vez lo que ya hemos hecho!!!): aqui la libreria:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"04      
//                     14/Agosto/05
//
//   Programa:   Coche Fantastico
//   Version:   2.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Barrido de led"s simulando la iluminacion del coche fantastico por el
//         puerto B. Adaptacion del codigo en basic de lordlafebre
//
//            RB0 -> 1º Led
//            RB1 -> 2º Led
//            RB2 -> 3º Led
//            RB3 -> 4º Led
//            RB4 -> 5º Led
//            RB5 -> 6º Led
//            RB6 -> 7º Led
//            RB7 -> 8º Led
//         En la variable cont se va almacenando los valores 1-2-4-8-16-32-64-128
//         que en binario corresponden a la secuencia 00000001-00000010-00000100...
//         son los led"s a iluminar, coincidiendo con la secuencia de iluminacion
//         del coche fantastico(version Ecuatoriana: auto fantastico)
//////////////////////////////////////////////////////////////////////////////////
#use delay (clock=4000000)         //Fosc=4Mhz,define funcion delay
///FUNCION COCHE FANTASTICO
void kit(void)
{
   int i,cont;                  //variables definidas
   
   cont=1;                  //inicializar...
   for(i=1;i<8;i++){         //led"s on derecha
      output_b(cont);         //ilumino led correspondiente
      delay_ms(100);
      cont=cont*2;
      }
   for(i=1;i<8;i++){
      output_b(cont);         //ilumino led correspondiente
      delay_ms(100);
      cont=cont/2;
      }
}

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     15/Agosto/05
//
//   Programa:   Juego de luces
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Iluminacion de juego de luces fuera dentro por el puerto B.
//         Adaptacion a c por vszener del codigo en basic de lordlafebre.
//
//            RB0 -> 1º Led
//            RB1 -> 2º Led
//            RB2 -> 3º Led
//            RB3 -> 4º Led
//            RB4 -> 5º Led
//            RB5 -> 6º Led
//            RB6 -> 7º Led
//            RB7 -> 8º Led
//////////////////////////////////////////////////////////////////////////////////

///FUNCION JUEGO_LUCES
void juego_luces(void)
{
   signed char i;      //variable indice
   int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s      
                  
   for(i=0;i<4;i++){         //led"s on fuera-dentro
      output_b(leds[ i ]);      //ilumino led"s correspondientes
      delay_ms(100);
      }
   for(i=3;i>-1;i--){         //led"s on dentro-fuera
      output_b(leds[ i ]);      //ilumino led"s correspondientes
      delay_ms(100);
      }
}
la guardamos con el nombre de vs_lib_luces.h
Y aqui el programa principal:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     15/Agosto/05
//
//   Programa:   Luces
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Programa que consiste en que si por el pin A0 del porta lee un "0" logico
//         es decir, esta en low, se ejecuta la iluminacion del coche fantastico
//         por el portb, en cambio si por el pin A0 del porta se recibe un estado alto
//         un "1" logico(high), se ejecuta por el portb la iluminacion de encender les"s
//         de fuera-dentro y viceversa. Tener en cuenta que hay que poner la
//         directiva NOLVP para que el pin B4 sea de salida
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar
#include <vs_lib_luces.h>         //nuestra libreria para las funciones kit(),juego_luces()          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use standard_io(B)
#use standard_io(A)

///PROGRAMA
void main(void)
{
   set_tris_a(0xFF);            //porta como entrada   
   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas
   
   do{                     //bucle...
      if(!input(PIN_A0))      //¿switch cerrado?
         kit();            //SI ->ejecuta coche fantastico(kit)
      else
         juego_luces();      //NO ->ejecuta juego luces
      }while(TRUE);         //...infinito      
}

Yo trabajo en el MPlab y hago los siguientes pasos(eso si como compilador el ccs): realizo un nuevo proyecto con el dispositivo programado y en source files agrego el programa principal: vs_luces.c despues en headers files agrego nuestra libreria: vs_lib_luces.h compilo y woala! ya tengo el hex listo para simular!!!Giño

PD: SUbire los archivos lo antes que pueda
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #24 en: 15 de Agosto de 2005, 06:28:00 »
Aqui os podeis descargar los archivos .c, .h y el .hex....que pena que solo pueda subir tres archivos no hay un cuarto para el dsn(proteus) ainsss bueno montarlo vosotros no??jeje os vale el mismo del coche fantastico y el de juego de luces añadiendo un swicht por en porta...bueno con sus respectivas cositas(la resistencia de 10k conectada al power va al pin A0 y el swicht va al pin A0 y a tierra(GND)):
        
       º  POWER
        |
        -
        -  res 10k
        -
        |
A0 -----------swicth------GND

vale??????jeje :wink:
« Última modificación: 25 de Mayo de 2006, 10:14:41 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #25 en: 16 de Agosto de 2005, 07:30:00 »
El ejemplito de hoy se basa en hacer un contador ascendente del 0 al 9 y volver  a empezar, para ello trabajaremos con el periferico 7segmentos de catodo comun, aqui el codigo:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"04      
//                     14/Agosto/05
//
//   Programa:   Contador ascendente 0-9
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Contador del 0 al 9 cada 0,5s y vuelta a empezar. Tener en cuenta
//         que hay que poner la directiva NOLVP para que el pin B4 sea de salida
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(B)

///PROGRAMA
void main(void)
{
   char i=0;   //contador para tabla 7 seg
   int tab7seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};   //7seg hex 0-9
   
   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas

   do{                        //bucle...
      output_b(tab7seg[ i ]);      //muestra por portb digito 7 segmentos
      delay_ms(500);
      i++;                  //incremento contador para visualizar siguiente digito
      if(i>9)                  //¿ya se ha mostrado el digito 9?
      {
         i=0;               //SI -> vuelve a empezar(digito 0)
      }                                       
      }while(TRUE);            //...infinito         
}

Hasta la proxima entrega!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #26 en: 16 de Agosto de 2005, 07:36:00 »
Aqui os podeis descargar los archivos del ejemplito: contador ascendente:


Suerte!!! :wink:
« Última modificación: 25 de Mayo de 2006, 10:16:04 por vszener »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: Ejemplitos en C para 16F648A
« Respuesta #27 en: 16 de Agosto de 2005, 23:37:00 »
ufff amigo mio Rebotado Grande vszener Rebotado la verdad es que realmete eres muy bueno...

solo una pregunta

cual seria una buena metodologia para ir aprendiendo a escribir en C???

bueno en realidad que decir... eres esencial en este foro

despide nuevamente
-==XooTRAooX==-

apsss se me olvidaba... te envio un privado espero lo leas pronto

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #28 en: 17 de Agosto de 2005, 03:35:00 »
GRacias por lod e grande!!!pero soy un NOVATO simplemente jeje...haber metodologia si te digo la verdad yo aprendi a programar por mi cuenta el c adaptado a los pic"s (ya sabia programar en c y c++) lo unico que hice fue buscarme un compilador medio en condiciones(ccs) que la verdad esta bastante documentado tanto en librerias como en funciones y empezar a trastear con el...lo recomendable es que tengas siempre a mano la ayuda del compilador(alli estara las funciones que realizar para los pic"s) y por aqui pusieron un .pdf con la ayuda traducida al español(bastante buena por cierto) aqui los enlaces:

http://miarroba.com/foros/ver.php?foroid=46840&temaid=4023657

Y bueno programar y programar!!!jeje por eso aqui abri este post, para que la gente que empieza como yo tenga ejemplos de referencias.....o eso intento jeje suertee!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Ejemplitos en C para 16F648A
« Respuesta #29 en: 17 de Agosto de 2005, 03:38:00 »
Bien el ejemplito de hoy es igual que el anterior, es decir un contador descendente 9-0 y vuelta a empezar.....digo que es igual en tema de codigo, solamente cambia algun que otro comando.......aqui esta:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"04      
//                     14/Agosto/05
//
//   Programa:   Contador descendente 9-0
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.20      Simulador:    Proteus 6.7sp3
//
//   Notas: Contador del 9 al 0 cada 0,5s y vuelta a empezar. Tener en cuenta
//         que hay que poner la directiva NOLVP para que el pin B4 sea de salida
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(B)

///PROGRAMA
void main(void)
{
   char i=9;   //contador para tabla 7 seg(apunta al digito 9 de tab7seg)
   int tab7seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};   //7seg hex 0-9
   
   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas

   do{                        //bucle...
      output_b(tab7seg[ i ]);      //muestra por portb digito 7 segmentos
      delay_ms(500);
      i--;                  //decremento contador para visualizar siguiente digito
      if(i==-1)               //¿ya se ha mostrado el digito 0?
      {
         i=9;               //SI -> vuelve a empezar(digito 9)
      }                                       
      }while(TRUE);            //...infinito         
}

Bueno...ya sabemos contar de 0 al 9 y del 9 al 0 por separado.......Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte