elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
08 Septiembre 2008, 18:14  



+  Foro de elhacker.net
|-+  Informática
| |-+  Hardware
| | |-+  Electrónica (Moderadores: BADBYTE-K, skapunky)
| | | |-+  Introduccion a la programacion de PICS en lenguaje C (CCS)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 5 6 7 Ir Abajo Imprimir
Autor Tema: Introduccion a la programacion de PICS en lenguaje C (CCS)  (Leído 22026 veces)
alejandrogenaro

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #15 en: 15 Agosto 2007, 18:08 »

gracias por responder MARCO solo preguntaba por si alguien sabia y esque me habian regalado el micro con todo ,documentacion del micro,programador y software solo que nunca supe como empezar....pero bueno....actualmente manejo el pic16f877a primero programe en picbasic pro que es facil de programar solo que no se puede usar punto flotante, luego en mikro C pero con la version demo la cual no te deja usar punto flotante y hasta hace 3 dias que encontre este foro y baje el CCS C ahora quiero programar en CCS nomas que no he podido hechar a andar ningun programa ya intente los que pusiste y nada.. me marca errores y no se ni que onda de pura casualidad no tendras un tutorial del CCS de como crear un proyecto paso a paso que me puedas facilitar?.......      GRACIAS
En línea
cristian77

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #16 en: 20 Agosto 2007, 18:23 »

Halgien sabe donde conseguir el proagrama iar dspic 1.3 por que no entro en su pagina para bajar la demo.
En línea
MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #17 en: 21 Agosto 2007, 20:14 »

Aqui esta otro programa en este caso es la visualizacion de dos display por el portb

////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////Practica 3 ///////////////////////////////////////////
////////Visualiza un conteo por el PORTB a travez de dos display de 8 seg////////
//////////////////////////  By MARCO_RECARGADO///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////


#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT

int conteo=0;

#use fast_io(A)
#use fast_io(B)
#use fast_io(C)                     ///   con esta instruccion evitamos que
#use fast_io(D)                     ///   se este configurando cada vez que usamos
#use fast_io(E)                     ///   alguna instruccion de entrada o salida

#byte porta = 5
#byte portb = 6
#byte portc = 7                     /// se definen direcciones de memoria
#byte portd = 8
#byte porte = 9

////////////////////////////////////////////////////////////////////////////////////
//////////////////////inicio del programa principal/////////////////////////////
///////////////////////////////////////////////////////////////////////////////////


void main(void)
{
  set_tris_b(0x00);
  while(true)                        //bucle infinito
{
 conteo++;

 if((conteo&0x0f)>9)            // aqui observamos si el primer display llego a 10
                                          // para solo comparar los primeros 4 bit hacemos una
                                          // operacion and con 0x0f

conteo=conteo+10;            // hacemos que los 4 bits mas significativos  incrementen
conteo=conteo&0xf0; 
}
 if(conteo>99) {conteo=0;}      // verificamos que la cuenta se haga de 0 a 99
 
 else{ portb=conteo; delay_ms(400);}
}                                   //fin de ciclo while
}                                   //fin de programa


aqui esta la conexion en proteus


y por supuesto el archivo de proteus

http://rapidshare.com/files/50382626/Contador.DSN.html
 

disculpen la demora voy lento pero seguro




Cristian77 ese programa lo puedes bajar del emule pero yo te recomendaria mas el entorno de MPLAB que tienen el compilador para Dspic  para C.


« Última modificación: 16 Enero 2008, 23:42 por MARCO_RECARGADO » En línea

"Cuando crei aprender a vivir, aprendía a morir",Lenoardo Da vinci
blackmar

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #18 en: 22 Agosto 2007, 07:54 »

hola soy nuevo en el foro, y queria preguntarles si hay algun manual del ccs en castellano. Me interece por programar pic en C dado q estoy queriendo empezar a hacer un programa para el manejo de una sd-card y e visto programas realizados en c y me llamo la atencion puesto q solo habia programado pis en asembler.
programar en c ya sabia pero esto de usarlo en pic para mi es nuevo.
Pd: hasta hora muy bueno el foro   
En línea
cristian77

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #19 en: 28 Agosto 2007, 21:50 »

Para controlar  lcd en ccs como lo hago para escribir en la posicion 16 con desplasamiento a la derecha.
O mejor dicho como hago la configuracion del lcd para escribir cualquier parte del lcd  en ccs.
Y tambien para escribir numeros del adc y que se vean por lcd
si me pueden ayudar.
En línea
MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #20 en: 11 Septiembre 2007, 21:16 »

Disculpen mi demora pero estuve de vacaciones y no pude conectarme en los lugares que estuve pero aqui tienen a peticion de todos como escribir en LCD


////////////////////////////////////////////////////////////////////////////////
//////////////               Practica 2                   //////////////////////
//////////////      practica que escribe en una LCD       //////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////           By MARCO RECARGADO               //////////////////////
////////////////////////////////////////////////////////////////////////////////

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#include <lcd.c>  // Librería para el manejo del lcd para ver las conexiones
                  // abran el archivo C:\Archivos de programa\PICC\Drivers\lcd.c
                  // y ahi les muestra.
                 
////////////////////////////////////////////////////////////////////////////////
//     D0  enable
//     D1  rs
//     D2  rw
//     D4  D4
//     D5  D5
//     D6  D6
//     D7  D7
////////////////////////////////////////////////////////////////////////////////



void main(void)
{
lcd_init();  // Antes de usar el lcd,hay que inicializarlo
lcd_putc("HOLA MUNDO");    // Escribes en la lcd
}   // fin de programa






para poder meter un valor de una variable hay que escribir lo siguiente

printf(lcd_putc," %d volts  ",variable_adc);

y con esto escribes el valor de tu variable tenemos que tener cuidado en el tipo de
variable pues este ejemplo es para un tipo entero s ifuera para un tipo float tendria que ser %f y para varios mas

espero les sirva de ayuda

no se como dirigirlo a alguna celda en especifico pero voy a investigarlo
y en cuanto tenga la respuesta lo publico.
hasta pronto


« Última modificación: 11 Septiembre 2007, 21:24 por MARCO_RECARGADO » En línea

"Cuando crei aprender a vivir, aprendía a morir",Lenoardo Da vinci
blackmar

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #21 en: 13 Septiembre 2007, 07:55 »

me gusto la practica de lcd y aprendi bocha y hice un agregado al programa original para q entre todos entendamos un poco mas, creo q haciendo una buena rutina en c se puede manejar por espacios el display...

////////////////////////////////////////////////////////////////////////////////
//////////////               Practica 2                   //////////////////////
//////////////      practica que escribe en una LCD       //////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////           By MARCO RECARGADO               //////////////////////
////////////////////////////////////////////////////////////////////////////////

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#include <lcd.c>  // Librería para el manejo del lcd para ver las conexiones
                  // abran el archivo C:\Archivos de programa\PICC\Drivers\lcd.c
                  // y ahi les muestra.
                 
////////////////////////////////////////////////////////////////////////////////
//     D0  enable
//     D1  rs
//     D2  rw
//     D4  D4
//     D5  D5
//     D6  D6
//     D7  D7
////////////////////////////////////////////////////////////////////////////////

int i;

void main(void)
{
lcd_init();  // Antes de usar el lcd,hay que inicializarlo
while (1){
lcd_gotoxy(5,1);
lcd_putc("Martin");    // Escribes en la lcd
delay_ms(50);
for(i=0;i<8;++i){


lcd_putc("\fM\n");
delay_ms(30);

lcd_putc("\f a\n");
delay_ms(30);

lcd_putc("\f  t\n");
delay_ms(30);

lcd_putc("\f   i\n");
delay_ms(30);

lcd_putc("\f    n\n");
delay_ms(30);
}}
}   // fin de programa
En línea
MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #22 en: 18 Septiembre 2007, 15:52 »

Hola pues en esta ocasion la practica consiste en leer un reloj de tiempo real.
con ayuda de una libreria

////////////////////////////////////////////////////////////////////////////////
////////////ESTE PROGRAMA UTILZA EL CIRCUITO DS1307 PARA MOSTRAR LA ////////////
//////////HORA EN TIEMPO REAL A TRAVEZ DE UNOS DISPLAY´S DE 7 SEGMENTOS/////////
//////////EL PROGRAMA PARA SIMULARLO EN PROTEUS SE LLAMA RELOJ TIEMPO REAL//////
////////////////////////BY MARCO RECARGADO//////////////////////////////////////

#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#use i2c(Master, SDA=PIN_C4, SCL=PIN_C3)
#include <ds1307.c>

int32 tiempo_real=0;
long dato_1=0;
long dato_2=0;
long dato_3=0;
long dato_4=0;
long dato_5=0;
long dato_6=0;

#use fast_io(A)
#use fast_io(B)
//#use fast_io(C)                     ///   con esta instruccion evitamos que
#use fast_io(D)                     ///   se este configurando cada vez que usamos
#use fast_io(E)                     ///   alguna instruccion de entrada o salida


#byte portc = 7                     /// se definen direcciones de memoria
#byte portd = 8


#bit portd0 = 0x08.0
#bit portd1 = 0x08.1
#bit portd2 = 0x08.2
#bit portd3 = 0x08.3
#bit portd4 = 0x08.4
#bit portd5 = 0x08.5
#bit portd6 = 0x08.6
#bit portd7 = 0x08.7

#bit portc0 = 0x07.0
#bit portc1 = 0x07.1
#bit portc2 = 0x07.2
#bit portc3 = 0x07.3
#bit portc4 = 0x07.4
#bit portc5 = 0x07.5
#bit portc6 = 0x07.6
#bit portc7 = 0x07.7


#bit dato_6a = dato_6.0
#bit dato_6b = dato_6.1
#bit dato_6c = dato_6.2
#bit dato_6d = dato_6.3

#bit dato_5a = dato_5.0
#bit dato_5b = dato_5.1
#bit dato_5c = dato_5.2
#bit dato_5d = dato_5.3

#bit dato_4a = dato_4.0
#bit dato_4b = dato_4.1
#bit dato_4c = dato_4.2
#bit dato_4d = dato_4.3

#bit dato_3a = dato_3.0
#bit dato_3b = dato_3.1
#bit dato_3c = dato_3.2
#bit dato_3d = dato_3.3


#bit dato_2a = dato_2.0
#bit dato_2b = dato_2.1
#bit dato_2c = dato_2.2
#bit dato_2d = dato_2.3

#bit dato_1a = dato_1.0
#bit dato_1b = dato_1.1
#bit dato_1c = dato_1.2
#bit dato_1d = dato_1.3

byte sec;
byte min;
byte hrs;
byte day;
byte month;
byte yr;
byte dow;


////////////////////////////////////////////////////////////////////////////////
////////funcion que manda el a desplagar informacion en los displays////////////
/////Tomese en cuenta que las conexiones de los puertos son las siguientes//////
//                               pc0=a                                        //
//                               pc1=b                                        //
//                               pc6=d                                        //
//                               pc7=c                                        //
//                               pd1=digito 6                                 //
//                               pd4=digito 5                                 //
//                               pd0=digito 4                                 //
//                               pd7=digito 3                                 //
//                               pd5=digito 2                                 //
//                               pd6=digito 1                                 //
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

void desplegar()

{

portd1=0;                       
portd4=0;
portd0=0;                        /// se inihiben los displays
portd7=0;
portd5=0;
portd6=0;


portc0=dato_6a;
portc7=dato_6b;
portc1=dato_6c;
portc6=dato_6d;



portd1=1;
portd1=0;


portc0=dato_5a;
portc7=dato_5b;
portc1=dato_5c;
portc6=dato_5d;
portd4=1;
portd4=0;


portc0=dato_4a;
portc7=dato_4b;
portc1=dato_4c;
portc6=dato_4d;
portd0=1;
portd0=0;


portc0=dato_3a;
portc7=dato_3b;
portc1=dato_3c;
portc6=dato_3d;
portd7=1;
portd7=0;


portc0=dato_2a;
portc7=dato_2b;
portc1=dato_2c;
portc6=dato_2d;
portd5=1;
portd5=0;


portc0=dato_1a;
portc7=dato_1b;
portc1=dato_1c;
portc6=dato_1d;
portd6=1;
portd6=0;

}
////////////////////////////////////////////////////////////////////////////////
//////////////////////Comienzo de la funcion principal//////////////////////////
////////////////////////////////////////////////////////////////////////////////
void main()
{

   ds1307_init();                           ///se inicializa el ds1307
   
   set_tris_a(0xff);
   set_tris_d(0x00);
   set_tris_b(0x00);
   set_tris_c(0x04);
   set_tris_e(0x01);
   port_b_pullups(true);
 
  dato_1=8;
  dato_2=8;
  dato_3=8; 
  dato_4=8;
  dato_5=8; 
  dato_6=8; 
  desplegar();
 
  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55 (9:49:00 am)
  ds1307_set_date_time(24,4,7,2,9,49,00);   /// se escribe ne le displositivo
 
  while(1)
  {
 
    delay_ms(1000);
   
  ds1307_get_date(day,month,yr,dow);        /// se obtiene la fecha 
  ds1307_get_time(hrs,min,sec);             /// se obtiene la hora
   
   
  ////////////////////bin2bcd(sec) funcion para pasar de binario(hasta 99) a bcd
 
  ////////////////////bcd2bin(sec) funcion para pasar de bcd(hasta 99) a binario
 
  sec=bin2bcd(sec);                         
  min=bin2bcd(min);                         
  hrs=bin2bcd(hrs);     
 
  dato_1=0x0f&sec;
  dato_2=swap(0xf0&sec);
  dato_3=0x0f&min;
  dato_4=swap(0xf0&min);
  dato_5=0x0f&hrs;
  dato_6=swap(0xf0&hrs);
  desplegar();
       
  }
}
/////////////////////////////  fin de programa  /////////////////////////////////////////////







si tienen alguna duda escribanla y tratare de contestarla lo mas pronto posible, tambien si quieren algun programa en especifico aqui entre todos trataremos de hayar la solucion, espero sus comentarios hasta pronto
« Última modificación: 18 Septiembre 2007, 15:58 por MARCO_RECARGADO » En línea

"Cuando crei aprender a vivir, aprendía a morir",Lenoardo Da vinci
-Xenon-

Desconectado Desconectado

Mensajes: 501


Spectrum 128k


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #23 en: 20 Septiembre 2007, 10:41 »



sabes algun enlace a algun buen tutorial para iniciarse en c para pic's?

tus programas de ejemplo los veo muy utiles pero si esto pretende ser una iniciacion para los que no sabemos, podrias dar algunas pistas de como empezaste tu? que manuales leiste, etc.. referencias para poder entender tus codigos de ejemplo

sabes algo del protocolo i2c? y como manejarlo con c para pic's?

gracias un saludo
En línea

Cuando el ingenio se queda pequeño,
No basta con poner empeño,
Solo el talento consigue el diseño
MARCO_RECARGADO

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #24 en: 21 Septiembre 2007, 16:12 »

Por tu comentario creo que voy muy rapido. El proposito de este tutorial es que cualquiera que no sepa sobre la programacion de pics en lenguaje c aprende con estas practicas, pero ya deben tener un conocimiento sobre pics al menos en ensamblador.En dado caso que no lo tengan pues las practicas que ponga en c por muy sencillas que esten no se podran comprender.

El mejor tutorial que conozco para iniciarse en C con los PICS lo encontre en un foro de electronica, no se si este bien poner el link del foro pues pareceria que le hago publicidad, si quieres el link mandame un mensaje privado y te lo paso, de hecho es el mejor foro con respecto a pics que encontre en español. Aunque en lo personal me gustaria que trataramos de hacerlo todo aqui.

Ahora yo empece a programar pics en ensamblador (en lo que a mi respecta es lo primer paso para pics) y despues segui con lenguaje C. Pero ya tenia algunos años de experiencia en ensamblador, aun asi puedes empezar a programar en C sin tener conocimientos de pics. El primer consejo para empezar es leer el manual del pic que quieres porgramar en www.microchip.com puedes bajar los manuales de cualquier pic ahora si el ingles no es lo tuyo en la red andan circulando varias guias del PIC16F84A que es uno de los pics mas basicos ademas de que es del que hay mas informacion o si lo deseas puedes ver el manual en español pero del PIC16F877 que esta al principo de este tema. Eso es basico sin leer esos manuales no podras entender mucho, aun en ensamblador.

Con respecto a el protocolo i2c es muy facil implementarlo en C. voy a hacer un programa de ejemplo.

PD Espero haberte ayudado hasta pronto
En línea

"Cuando crei aprender a vivir, aprendía a morir",Lenoardo Da vinci
-Xenon-

Desconectado Desconectado

Mensajes: 501


Spectrum 128k


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #25 en: 21 Septiembre 2007, 23:27 »


gracias!, me has ayudado bastante, si puedes pasarme el link por privado o en publico como quieras, te lo agradeceria

gracias por compartir tu trabajo, un saludo
En línea

Cuando el ingenio se queda pequeño,
No basta con poner empeño,
Solo el talento consigue el diseño
skapunky
Electronik
Moderador
*****
Desconectado Desconectado

Mensajes: 1.146


www.killtrojan.es


Ver Perfil WWW
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #26 en: 28 Septiembre 2007, 02:09 »

Muy buenas aportaciones, quiza algun dia ponga yo algun tuto e programas basicos en asm para electrónica.

PD: Le pondre chincheta temporal mientras tenga un minimo de actividad. Marco, buen trabajo, espero que sigas por aqui.

Saludos.
En línea

Descarga Killtrojan Kit Reparación: aquí

Descarga Killtrojan USB Antivirus : aquí

lu8emw

Desconectado Desconectado

Mensajes: 264


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #27 en: 03 Octubre 2007, 22:41 »

MARCO_RECARGADO te felicito vas muy bien. Uso tus ejemplos  para ir aprendiendo un poco c, ya que usualmente manejaba un poquito de basic que se me hace mas facil...pero nunca esta de mas. Te hago una pregunta: Tienes algun ejemplo en c de lectura de codigos por IR? Es decir para interpretar los controles remotos de infrarrojo, ya que la mayoria que me encontre son para alguno en especifico como la norma rc5 de phillips o la de sony..pero tambien vi un proyecto de un dimmer digital que diseño un croata, que es muy reducido y este  "aprende" los codigos de infrarrojos que le mandemos al receptor. Lo que hace es reconocer el codigo y guardarlo en la memoria de un 16f629. Lo que no puedo lograr comprender es como "interpretar" los codigos, ya que con el tema de los tiempos entre señal y señal se me hace un garabato horrible que no logro comprender. Si tienes algo pare3cido no dudes en comentarlo. Un saludo y sigue asi.
En línea
cristian77

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #28 en: 04 Noviembre 2007, 16:53 »

Marco yo me consegui el css 4.058 pcwhd para dspic dime donde consigo ejemplos para programar dspic con el css ya encontre con el microCdspic.
En línea
EL Malicioso

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
« Respuesta #29 en: 14 Noviembre 2007, 04:32 »

Hola Marco_Recargado, Te agradezco tus ganas de enseñar y compartir, aunque no digo nada nuevo, siempre es bueno remarcarlo.
Yo programaba en ASM para los 8085 y probé el PIC 16F873. Ahora quiero meterle con CSS porque me quemè la cabeza para algunos proyectos grandes.
Aca va mi pregunta:
Cuando en unos de los ejemplos (16F84) ponès lo sgte

#byte PORTB = 6              //declaramos a la variable PORTB

1-asignas la dccion del puerto B a tu gusto? o es la dccion qeu la datasheet del pic establece para este modelo?
2-el 6  está en decimal o en hexa? (en este caso, si el nro es 6 en decimal, en hexa es lo mismo, pero quiero ver si la sintaxis obliga a poner 0x06 por ejemplo)
3-eso ya no està definido cuando pones #include<16F84>  ?
4-para acceder al bit 3 del puertoB deberia acceder a la dccion de memoria  6*8+3=51? o hay alguna manera ya optimizada en el CSS (soy nuevo enel CSS :-[ )

y Gracias por el aporte!!!
En línea
Páginas: 1 [2] 3 4 5 6 7 Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC