Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: MARCO_RECARGADO en 26 Julio 2007, 17:47 pm



Título: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 26 Julio 2007, 17:47 pm
hola pues hace como un año aprendi a programar los micros PIC en lenguaje C pero ultimamente no los he retomado ya por lo que voy a empezar a programar de nuevo  Y que mejor que publicar todos los programas que pueda en el foro y compartirlo con todos.

Asi que comencemos. En primer lugar que es CCS es un software que te permite programar microcontroladores PIC en lenguaje C. para mayor informacion aqui tienen el link

www.ccsinfo.com

En inicio vamos a poner que herramientas necesitamos para poder trabajar.

CCS compiler     (el antes mencionado)
Proteus              (software para poder simular los pics)
Winpic800         
    ó                   (programadores de pics muy bueno)
epicwin             

y por supuesto un quemador de pics en el programa winpic800 vienen  links de varios quemadores.


 en el siguiente post les mandare los links de donde pueden descargar los programas con su respectiva medicina. y el diagrama del hardware que yo tengo
hasta pronto




Título: Re: Empezando con CCS
Publicado por: MARCO_RECARGADO en 26 Julio 2007, 18:32 pm
Empecemos con los links de descarga

Epicwin (pagina oficial software freeware)
http://www.melabs.com/support/progsoft.htm

winpic800  (pagina oficial software freeware)
http://www.winpic800.com/

los otros programas los tengo que subir a algun servidor cual me recomiendan?
el rapidshare es bueno pero no tedeja bajar los archivos enseguida despues de que haz descargado un archivo. cual si te deja?


Título: Re: Empezando con CCS
Publicado por: MARCO_RECARGADO en 26 Julio 2007, 20:14 pm
Las versiones mas recientes con sus respectivas medicinas.


PICC COMPILER CCS

Megaupload
CCS 4.104 (http://www.megaupload.com/?d=B0UJMBPW)


Badongo
CCS 4.104 (http://www.badongo.com/es/file/19748202)


Filefactory
CCS 4.104 (http://www.filefactory.com/file/a1932d8/n/CCS_4.104.rar)



PROTEUS 7.6 SP0


Megaupload
CCS 4.104 (http://www.megaupload.com/?d=BD0INHJ7)


Badongo
CCS 4.104 (http://www.badongo.com/es/file/19748625)


Filefactory
CCS 4.104 (http://www.filefactory.com/file/a1935a2/n/Proteus_7.6_sp0.zip)


Para instalarlo solo tienen que leer el archivo dond vienen las instrucciones de comom instalar saludos


Actualizado 4/febrero/2010


Título: Re: Empezando con CCS
Publicado por: MARCO_RECARGADO en 27 Julio 2007, 23:05 pm
Vamos poniendo mas orden a este post en esta sección iran todas las practicas que hemos hecho.

Practica 1 Parpadeo de LEDS  (http://foro.elhacker.net/index.php/topic,174021.msg824964.html#msg824964)

Practica 2 Informacion de Puerto B a Puerto A  (http://foro.elhacker.net/index.php/topic,174021.msg833331.html#msg833331)

 Practica 3 contador con dos display  (http://foro.elhacker.net/index.php/topic,174021.msg844004.html#msg844004)

 Practica 4 Mensaje en LCD "HOLA MUNDO"  (http://foro.elhacker.net/electronica/introduccion_a_la_programacion_de_pics_en_lenguaje_c_ccs-t174021.0.html;msg857910#msg857910)

 Practica 5 leyendo reloj de tiempo real DS1307 y escribir en display de 7 segmentos  (http://foro.elhacker.net/electronica/introduccion_a_la_programacion_de_pics_en_lenguaje_c_ccs-t174021.0.html;msg861704#msg861704)

 Practica 6 ADC a Puerto B  (http://foro.elhacker.net/index.php/topic,174021.msg934861.html#msg934861)

 Practica 7 ADC a 3 displays de 7 segmentos  (http://foro.elhacker.net/index.php/topic,174021.msg972288.html#msg972288)

 Practica 8 DS1307 a LCD  (http://foro.elhacker.net/electronica/introduccion_a_la_programacion_de_pics_en_lenguaje_c_ccs-t174021.0.html;msg1021521#msg1021521)

 Practica 9 comunicacion RS232 con virtual terminal  (http://foro.elhacker.net/electronica/introduccion_a_la_programacion_de_pics_en_lenguaje_c_ccs-t174021.0.html;msg1125126#msg1125126)


 Practica 10 contador por interrupcion (http://foro.elhacker.net/electronica/introduccion_a_la_programacion_de_pics_en_lenguaje_c_ccs-t174021.0.html;msg1153542#msg1153542)



Título: Re: Empezando con CCS
Publicado por: MARCO_RECARGADO en 27 Julio 2007, 23:06 pm
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///          Practica 1 :     Parpadeo de LED´S    con PIC16F84A       ///
///          para el   foro.elhacker.net     by Marco                           ///
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////



///////////////////////////// DIRECTIVAS DE PREPROCESADO //////////////////////

///   libreria para el manejo del pic16f84a
#include <16F84A.h>

///   declara  la frecuencia del cristal
#use delay(clock=8000000)

///configura los fusibles
/// HS es la configuraricion del oscilador la cual indica High speed es decir
/// frecuencias altas esto es a partir de 8 Mhz.
/// NOWDT deshabilita el Watch Dog Timer
/// NOPUT deshabilita le reseteo de power up timer
/// NOPROTECT deshabilita la proteccion del codigo del pic.
#fuses HS,NOWDT,NOPUT,NOPROTECT

///  asignamos a variable port_b el espacio memoria 0x06 que es la dir de port_b
#byte port_b=0x06

//////////////////////////GLOBALES//////////////////////////////////////////////
///         Estos parámetros son visibles desde todo el código                ///
///                    por eso se les llama globales                                    ///
///          Al ser constantes,lo más práctico es declararlas aquí.           ///
////////////////////////////////////////////////////////////////////////////////////

int contador;

////////////////////////// Principal  //////////////////////////////////////////

void main()
{       

/// declaramos el puerto B como salidas
set_tris_b(0);

/// lo igualamos con cero para que tengamos un valor inicial de lo contrario
/// no sabriamos con que valor iniciaria al comienzo de nuestro programa
port_b=0;

/// bucle infinito para que las instrucciones que tiene siempre se ejecuten
while (true)

{               

/// activa todos los pins del puerto B
/// otra instruccion que podemos poner es contador=255 las dos son lo mismo
contador=0xff;     
port_b=contador;

/// Retardo de 1000 milisegundos es decir 1 segundo
delay_ms(1000);

//// apaga todos los pins del puerto B}
contador=0x00;
port_b=contador;

/// Retardo de 1000 milisegundos es decir 1 segundo
delay_ms(1000);

} /// fin de bucle while
} /// fin de funcion principal main


aqui los archivos para PICC y Proteus

(http://img141.imageshack.us/img141/888/dibujoct3.jpg)


Título: Re: Empezando con CCS
Publicado por: lu8emw en 30 Julio 2007, 06:00 am
Hola marco... Yo nunca programe en c... me sera dificil? ya me baje el compilador, el proteus medio que le agarre la mano hace un tiempo... Te agradezco por lo que haces por el foro, nunca esta de mas seguir aprendiendo. Un saludo.


Título: Re: Empezando con CCS
Publicado por: MARCO_RECARGADO en 30 Julio 2007, 15:50 pm
El lengujae c no es un lenguaje de programacion dificil es relativamente rapido de aprender. Yo empece programando en ensamblador, es bueno porque tienes el control del PIC total pero hay cosas que es mejor hacerlas en c puesto que en ensamblador seria demasiado tedioso como el manejo de una pantalla LCD en la cual el CCS ya tiene una libreria determinada. Estoy haciendo el tutorial de manera que sea lo mas comprensible para los que quieren empezar a programar estos micros en C.  Pero tambien se vale preguntar.


Título: Re: Empezando con CCS
Publicado por: skapunky en 31 Julio 2007, 02:33 am
Buena aportación. Poca gente comparte las cosas que hace, y a veces por muy sencillas que puedan parece ya no se toma uno la molestia de colgarlas. Aunque sean racticas sencillitas mas de 1 quiza ahora le aclare dudas o le ayude.

Nota: Intenta poner mas info en un mensaje. Si por ejemplo fuera el caso de que posteas algo por la mañana y otra cosa por la tarde y no han habido respuesta, edita el post con el boton "Modificar"

Saludos.


Título: Re: Introduccion a al programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 31 Julio 2007, 21:22 pm
gracias lo acabo de hacer, parece que no muchos conocen el programa CCS y obviamente mi titulo no les va a decir nada, espero que con esto tenga mas afluencia, disculpen si ahorita dejo el post esta semana pero es que tengo que salir por cuestiones de trabajo a otro lugar y no voy a tener tiempo pero en cuanto regrese les pongo las demas practicas


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 8 Agosto 2007, 17:01 pm
Perdon por la tardanza pero mi trabajo no me ha dejado hacer mucho les dejo otra practica para que sigan practicando el ccs


/////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////            Practica 2          /////////////////////////////////
//   Esta practica pasa la informacion que hay en el puerto B y la pasa        //
//                                           al puerto A                                               //
///////////////////////// 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 fast_io(B)             ///   con esta instruccion evitamos que
                                   ///   se este configurando cada vez que usamos 
#use fast_io(C)            ///   alguna instruccion de entrada o salida
                                         
#byte portb = 6            //    se definen las direcciones de memoria
#byte portc = 7



void main(void)
{
while(true)                       // Bucle infinito
{
   set_tris_b(0xff);            // se configura el puerto A como entrada
   set_tris_c(0x00);          // se configura el puerto B como salida
   port_b_pullups(true);    // activa las resistencias de pull-up
   portc=portb;
   
}
}                                    // fin de programa










y por supuesto la simulacion en proteus
http://img405.imageshack.us/my.php?image=practica1dz2.swf



Si tienen alguna duda con respecto a los programas por favor haganmelo saber, tal vez no les conteste enseguida pero lo voy a hacer lo mas rapido que pueda hasta pronto


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: GrTk en 8 Agosto 2007, 23:57 pm
si sirve de algo, manejo bastante bien la programacion en ASM de la linea motorola


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 9 Agosto 2007, 17:22 pm
Yo tambien manejo un poco de ensamblador de motorola pero es de la serie 68HC11 , ahorita estoy empezando a programar en C este micro uso el software de IMAGECRAFT podriamos empezar un posts para este micro en lenguaje c o en ensamblador, no lo he hecho porque tengo poco tiempo para dedicarle a escribir posts, pero seria un gran aporte, si tu quieres podriamos ponerlo es mas podriamos hacerlo con pics en asm tambien motorola en asm y c. Veremos que sale, me emociona mucho estos temas hasta pronto


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: alejandrogenaro en 13 Agosto 2007, 05:31 am
que tal salu2 para los de este foro ,como se daran cuanta soy nuevo en este foro solo una pregunta se que esta pregunta esta fura del tema del foro pero hay va...alguien sabe como programar el micro MC68HC908GP32 de motorola en code warrior ya que he tenido este micro por mucho tiempo y no se ni que onda..pues gracias por su atencion....


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 13 Agosto 2007, 14:02 pm
Está muy bueno eso de los pic,

me gustaría conseguir este libro de PIC en PDF, miren el índice y flipan.

Bueno, si lo consiguen en PDF mejor que mejor, aún no lo he encontrado, tampoco asm para pic 16f84.

¿Hay alguien que tenga o un manual sobre las instrucciones del asm para aprender a programar para PIC?

Un cordial saludos.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 15 Agosto 2007, 16:14 pm
Hola Alejandro desafortunadamente yo no me he metido con esa serie de motorola pero estoy seguro que si buscas en el foro hay quien si lo sabe programar.


Para meta no hay nada mejor para aprender a manejar los pics que el datasheet de los mismos. en la pagina de microchip estan sus datasheets claro si el ingles no es lo tuyo tienes un gran inconveniente.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: alejandrogenaro en 15 Agosto 2007, 18:08 pm
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


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: cristian77 en 20 Agosto 2007, 18:23 pm
Halgien sabe donde conseguir el proagrama iar dspic 1.3 por que no entro en su pagina para bajar la demo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 21 Agosto 2007, 20:14 pm
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
(http://www.ims.wa-fe.com/pic.php?u=102fTwSi&i=579)

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.




Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: blackmar en 22 Agosto 2007, 07:54 am
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   


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: cristian77 en 28 Agosto 2007, 21:50 pm
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.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 11 Septiembre 2007, 21:16 pm
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

(http://www.imagenes.wa-fe.com/uploads/55e5657775.bmp)




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




Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: blackmar en 13 Septiembre 2007, 07:55 am
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


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 18 Septiembre 2007, 15:52 pm
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  /////////////////////////////////////////////



(http://www.imagenes.wa-fe.com/uploads/dab12ba7df.bmp)



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


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: -Xenon- en 20 Septiembre 2007, 10:41 am


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


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 21 Septiembre 2007, 16:12 pm
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


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: -Xenon- en 21 Septiembre 2007, 23:27 pm

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


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 28 Septiembre 2007, 02:09 am
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.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lu8emw en 3 Octubre 2007, 22:41 pm
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.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: cristian77 en 4 Noviembre 2007, 16:53 pm
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.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: EL Malicioso en 14 Noviembre 2007, 04:32 am
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!!!


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: EL Malicioso en 14 Noviembre 2007, 05:56 am
Hola Marcos Recargado,  estoy estudiando tus post, pero en el ejemplo de 2 displays de 7 segmentos, no entiendo como es la lògica.
No puedo ver el Proteus pero ¿como se hace el multiplexado de los displays. Sino, como se haria con CSS? ¿estas usando un conversor de binario a bcd no? no puedo seguir el pedazo de codigo donde suma 10 a count.
Cualquier dato que puedas darme de seguro q me va a ayudar enormemente
Graicas por el aguante!!


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 16 Noviembre 2007, 20:21 pm
Perdon por este enorme receso pero no habia podido entrar al foro, porque mi computadora se me habia quemado y por tanto no podia grabar mis pics y bla bla bla.
Citar
1-asignas la dccion del puerto B a tu gusto? o es la dccion qeu la datasheet del pic establece para este modelo?
La direccion del puertoB ya esta dada por la misma arquitectura del micro puedes abrir la el archivo donde se encuentra la libreria del 16f877.h la ruta generalmente es esta
C:\Archivos de programa\PICC\Devices ahi veras que el mismo programa ya tiene definidos el nombre de los parametros del pic.

y la instruccion
 
Citar
#byte PORTB = 6              //declaramos a la variable PORTB

solo que asocio la variable PORTB a la direccion 0x06

Citar
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)

el programa lo asocia por default como decimal sin embargo te da la direccion  pero si tu pusieras 54 la direccion a la que te referirias no seria la 0x54 sino a 0x36

Citar
3-eso ya no està definido cuando pones #include<16F84>  ?

En efecto tienes razon cuando se pone la libreria ahi ya tienes definido varios parametros, pero no con el mismo nombre que yo les asigno en este caso por ejemplo tiene definido

#define PIN_A0  40
#define PIN_A1  41
#define PIN_A2  42
#define PIN_A3  43
#define PIN_A4  44
#define PIN_A5  45

sin embargo para comodidad mia le pongo variables con los que yo lo relaciono mas inmediatamente

Citar
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  )

bueno con lo anterior puedes ver que se tiene acceso a un solo bit en especifico y no tienes que declararlo te recomiendo nuevamente leer la libreria y si te gusta de esa forma pues usarlos asi.

por ejemplo para encender el bit 5 del puerto a tendiras que hacer lo sigueinte
PIN_A5=1;


espero haber resuelto tus dudas.
y perdonen nuevamente la demora de mis respuestas las estare contestando en el transcurso de la sigueinte semana


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 16 Noviembre 2007, 20:39 pm

Citar
Hola Marcos Recargado,  estoy estudiando tus post, pero en el ejemplo de 2 displays de 7 segmentos, no entiendo como es la lògica.
No puedo ver el Proteus pero ¿como se hace el multiplexado de los displays. Sino, como se haria con CSS? ¿estas usando un conversor de binario a bcd no? no puedo seguir el pedazo de codigo donde suma 10 a count


mira los displays van a un decodificador bcd las terminales portb0-portb3 estan a un decodificador y las terminales portb4-portb7 al otro decodificador

vamos viendo paso a paso que se esta haciendo

Citar
conteo=conteo+1;
 

 en este segmento obviamente estoy incrementando en uno a la variable contador

Citar
if((conteo&0x0f)>9)
en este estoy haciendo una operacion logica AND de la variable conteo con el numero 0x0f ¿y que diablos obtengo de esto? facil que yo seleccione mi parte baja de lo que contiene esta variable es decir si mi variable conteo=0b1111 0101 que es igual a conteo=0xf5 al hacer esta operacion yo tengo como resultado conteo=0x05 es decir anule la parte alta ya una vez hecho esto la compara con si es mayor a 9 si es mayor a 9 significa que estoy en el 10 pero en hexadecimal seria 0x0A y ese no es el valor que quiero sino quiero este 0x10

Citar
{  conteo=conteo+10; conteo=conteo&0xf0;  }

por eso a la hora de que es mayor a nuevo yo le sumo 10 para que me de el numero hexadecimal que deseo

 if(conteo>99) {conteo=0;}
por ultimo si ya llego a 99 lo reseteo porque recuerda que esta varialbe como fue declarada de tipo int es una variable que puede llegar hasta 255.
Espero haberte ayudado


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Janmego en 17 Noviembre 2007, 20:23 pm
Muchas gracias MARCO por tomarte el tiempo para hacer todo esto, estoy comenzando con este tema de los pic y todo esto, y bueno quería aprovechar y hacer una consulta.

Bueno es que tengo que hacer un "contador de energía", el circuito seria una fuente AC en serie con una inductancia y con la respectiva resistencia de carga, hasta ahora lo que se es como tomar los datos de voltaje y corriente (con ADC de la fuente y la inductancia respectivamente) pero el problema esta en hallar el angulo de desfase entre las señales pues como sabemos la ecuación seria V*I*cos(angulo)

Cualquier ayuda que me pudieras ofrecer estaría muy agradecido

Suerte


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: chundo en 26 Noviembre 2007, 20:19 pm
Hola! estoy tratando de programar PIC's en C pero ps la vvd no le entiendo muy bien, creo que necesito leer mas, lo que quiero hacer es un lector de codigos infrarojos y asi poder activar algo... mi problema es que no se como hacer el programa para leer frecuencias y diferenciar los 1 y 0 de la misma, si me pueden ayudar se los agradeceria.


Título: Re: Empezando con CCS
Publicado por: Meta en 7 Enero 2008, 19:28 pm


PROTEUS 7
http://rapidshare.com/files/41610138/Proteus_VSM_7.1_SP4_FULL_inc_crack.zip.html


Leí que está ya el PROTEUS 7.2 con Service Pack 3. ¿Alguien lo puede conseguir en rapidshare?

Han mejroado rendimiento e incluido nuevos componentes como nuevas funciones.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 15 Enero 2008, 16:25 pm
De hecho la version que esta es la 7.2 SP5 pero esa no la he podido conseguir hasta ahora la unica que he podido conseguir es la 7.2 SP2 pero tiene algunos problemas porque de la nada se resetea y si no haz guardado tu trabajo es una gran lata, deja checar si ya hay por la web quien la tenga y la subo en la semana hasta pronto


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: epale en 15 Enero 2008, 17:43 pm
hola a todos.. y aprobecho para felicitar a marco_recargado por tan brillante iniciatiba soy nuevo y como quiero colavorar con ustedes les puedo pasar un demo del proteus 7 la nueva version solo mandenme un correo personal yse los envio...... ;D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 16 Enero 2008, 15:39 pm
De hecho la version que esta es la 7.2 SP5 pero esa no la he podido conseguir hasta ahora la unica que he podido conseguir es la 7.2 SP2 pero tiene algunos problemas porque de la nada se resetea y si no haz guardado tu trabajo es una gran lata, deja checar si ya hay por la web quien la tenga y la subo en la semana hasta pronto


Que yo sepa está solo hasta el 7.2 SP3.

http://www.ieeproteus.com/noticias.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 16 Enero 2008, 16:53 pm
Hola MARCO_RECARGADO muchas gracias por tus explicaciones! me estan sireviendo para empezar...
Te hago una consulta, de que manera se activa el clock interno del pic 16F877, ya que tengo un programa que simula bien pero en la placa que tengo no anda y estoy desconfiando que sea a causa del cristal, por lo que me sugirieron que lo hiciera probando con el clock interno, para verificar.

Saludos
MarcoPolo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 16 Enero 2008, 19:59 pm
MARCO...solo bastaba con no definir

#use delay (clock=4000000)     //Oscilador a 4Mhz
???? Es asi?? y solo el Pic utiliza su oscilador RC interno??

Necesitaria que me dijeras que biblioteca del micro debo agragar para manejar el CAD del 16F877, ya que me fije en los Drivers que tiene el CCS y no logro descifrar cual es...asi mismo necesitaria si podes q postearas cuales son las sentencias que debo poner para que el conversor se inicialize  y luego tome datos...

GRACIAS!!
MarcoPolo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 16 Enero 2008, 21:22 pm
El RC es es externo, si utilizas un cristal, es un XT, RC es una Resistencia y condensador par escapar y más económico.

Aquí no es para preguntar duda sobre pic, estas cosas es en otro tema.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 16 Enero 2008, 23:09 pm
Meta :    Si tienes las version 7.2 veras que si le das actualizar a proteus menciona que ya se tiene el service pack 5


MarcoPolo : El PIC16f877 no tiene reloj interno, tal vez el que mencionas sea el PIC16F887 y curiosamente me he dado a la tarea de trabajar con el, pero he tenido problemas para hecharlo andar al 100%, la primer pregunta que me surge es conque porgramador  estas trabajando?. Ya checaste que el MCLR este a 5v, en los  fusibles checaste que este deshailitado el Brown on reset o el LVP que me dices del Wacht dog timer, esos son los principales problemas que tengo cuando estoy iniciando con un pic.


y por fin lo prometido es deuda:

http://rapidshare.com/files/55370578/proteus_7.2.rar.html

esta version en mi computadora me ha estado dando problemas espero que a ustedes les sirva


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 16 Enero 2008, 23:46 pm
Muchas gracias, esto deberías ponerlos en el primer post.

Al actualizar, me da problemas de la no se que KEY
que yo sepa esa licencia ya la tengo puesta.

Al ejecutar el archivo este llamado Disable update check.reg creo que metí la pata.

Vete al regedit a esta dirección y me das el tuyo,
Código:
[HKEY_LOCAL_MACHINE\SOFTWARE\Labcenter Electronics\Proteus Professional\7]
"UpdateFrequency"=dword:00000003


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 17 Enero 2008, 20:19 pm
El proteus que he pasado tiene ese problema, no se puede actualizar, vere si hay medicina para ello


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 18 Enero 2008, 02:05 am
El proteus que he pasado tiene ese problema, no se puede actualizar, vere si hay medicina para ello

Ok, ese espero, ahora tengo otro problema, siempre se me cierra.

EDIT:
Voy a desinstalar el 7.2 SP0 que se me cierra siempre y no puedo trabajar. Al final es mejor el 7.1 SP4 que sólo da problemas en pequeña cosas, pero no se cierra. Lo digo para que lo sepas. Aún así gracias por conseguirlo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: epale en 18 Enero 2008, 19:10 pm
 ;D hola a todos quiero hacer un programa en c para usar el conversor analogico digital del pic 16f877a pero no se por donde empezar; estaba buscando una libreria y no consgui nada si alguien me puede ayudar... se lo agradeceria ;D.....


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 19 Enero 2008, 06:52 am
En esta Web encuentras de todo y ejemplos.

http://www.todopic.com.ar/foros


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: epale en 21 Enero 2008, 20:07 pm
gracias meta.... pude hacer el programa para el conversor analogo digital del pic 16f877





•   //programa que usa el conversor analogo digital del pic 16f877//
/////                                                         //
////                                                          ///
////      by  EPALE                                      ///
///////////////////////////////////////////////////////////////////


#include <16F877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(B)             ///   con esta instruccion evitamos que
                           ///   se este configurando cada vez que usamos 
#use fast_io(a)            ///   alguna instruccion de entrada o salida
#use fast_io(c)
#byte portb = 6            //    se definen las direcciones de memoria
#byte porta = 5
#byte portc = 7
#DEFINE LED DELAY_MS(100)     // se define el tiempo de retardo para ahorrar memoria



void main() {

uno:
set_tris_a(0xff);           // se configura el puerto A como entrada
set_tris_c(0x00);          // se configura el puerto B como salida
set_tris_b(0x00);          // activa las resistencias de pull-up
   
     

SETUP_ADC(ADC_CLOCK_INTERNAL);      // configuras esto para que el a/d funcione con un reloj interno del micro
SETUP_ADC_PORTS(AN0);                   // aca determianr que el puerto RA0 será analógico
SET_ADC_CHANNEL(0);                          // con esto fijas el canal con el qeu trabajas, en este caso 0 por el RA0

 

output_b(READ_ADC());                          // lee el canal analogico seleccionado anteriormente, y lo uestra el en puerto b
LED;
goto uno;}





Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: epale en 21 Enero 2008, 20:15 pm
espero que le ayude a alguien...

marco recargado poque no hacemos un programa que funcione con una interfaz usb; lo propongo como proyecto para todos los usuarios de este foro la idea es que cada uno coloque su grano de arena.
haaa y cualquier error de mi programa CAD aganmelo saber de todas maneras yo lo simule en proteus,lo que pasa es que no se como coiar la imagen

hasta la proxima.......................................


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 22 Enero 2008, 19:44 pm
Hola! alguno tiene algun ejemplo de manejo de I2C para la memoria 24LC256 que funcione? tambien utilizo el RTC del micro, basicamente necesito loggear datos junto con la hora en la que fueron tomados.Si alguno puede darme una mano se lo agrdezco!!!
Saludos
MarcoPolo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 24 Enero 2008, 12:42 pm
Basicamente les cuento q saque ejemplos de todos lados pero no logro que simule bien...a ver si me dan una mano...
solo intento cargar un valor en una posicion de memoria y luego mostrarlo por el LCD...
Otra pregunta, como hago para escribir en la posicion 150 de un dispositivo mapeado con la direccion0 es decir con A0 A1 A2 todas a gnd de la 24LC256, y como hago para meter otro valor en la posicion 200 de un dispositivo mapeado con la direccion 6 por ejemplo...eso es algo que no logro entender, no se como debo manejarme, me podran dar una mano?

#include <16f877.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT,NOLVP,NOBROWNOUT
#include <lcd.c>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <24256.c>               
#USE delay(clock=4000000)




void main(void)
{

   int dir=0;
   char dato[5]="ANDA";
   lcd_init();                 //inicializa lcd
   init_ext_eeprom();          //inicializa eeprom

   lcd_gotoxy(1,1);
   lcd_putc("Escribe mem.");
   delay_ms(1000);

   write_ext_eeprom(dir,dato); //escribo en memoria

   lcd_gotoxy(1,1);
   lcd_putc("Fin escritura" );
   delay_ms(1000);

   lcd_gotoxy(1,1);
   lcd_putc("Lee mem.    " );
   delay_ms(1000);

   lcd_gotoxy(1,1);
   printf(lcd_putc,"dir=%d dato=%s",dir,read_ext_eeprom(dato) );


}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 24 Enero 2008, 12:44 pm
MarcoRecargado como hago para cargar el archivo de proteus asi pueden ver como simula??

Saludos!
MarcoPolo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 24 Enero 2008, 16:30 pm
Al simularlo en el proteus me tira esto

[PIC16ADC]PC=0x02AF.ADC conversion clock period(5e-7)is possibly invalid for device clock frecuency.
I2CMEM: Stop detected part way throrugh receiving data byte. Write operation aborted.
Simulation is noit running in real time due to excessive CPU load.

Que es lo que hago mal??

Gracias por la paciencia

MarcosPolo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MarcoPolo en 27 Enero 2008, 16:47 pm
Bueno muchachos les comento que aun no entiendo porque simula mal el programita ese para acceder grabar y leer una 24LC256, pero lo grabe en el micro y anda, gracias a DIOS! , asi que debe ser solamente algún problema que debo tener con el Isis Professional...
Lo probe sacando los datos que grababa por el rs232.

Saludos y gracias!


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 28 Enero 2008, 23:46 pm
Hola marcopolo disculpa si me he tardado pero ultimamente por fortuna he tenido muchisimo trabajo, por que no pruebas utilizando un reloj de tiempo real para tu aplicacion como el DS1307. lo primero que voy a hacer sera el ejemplo adicional al que "EPALE"  nos ha obsequiado.Pero lo hare mañana.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 17 Febrero 2008, 11:16 am
Por cierto, ya salió el Proteus 7.2 SP6
¿alguien lo tiene para descargar?


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 22 Febrero 2008, 01:00 am
Ahora si la version que si funciona de proteus 7.2 sp2

http://rapidshare.de/files/38639767/PROTEUS_7.2.rar.html

va calada va garantizada,  el bonito regalo para el amigo para la amiga para el novio.


esta version ya la probe y funciona correctamente lo tengo desde hace 2 semanas saludos


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: davo122 en 24 Febrero 2008, 04:11 am
Que onda MARCO_RECARGADO, pues en serio muchas gracias, pues habemos muchos que no estamos metiendo en esto de la programacion, mi problema es que hay muchos codigos en internet de progrmaas muy utiles, la cosa es que no manejo ensamblador, solo C, y la verdad se me hace mas facil de aprender y entender, pero pues quien sabe.
Oye, tengo una duda muy grande, sabes como usar el Pwm de los pics (16f873a o 16f877a)  para el control de la velocidad de un motor?, por mas que he estado investigando, no encuentro nada, y lo que encuentro esta en en ensamblador. Te agradeceria mucho me pudieras ayudar, y si alguien mas se anima a echarme la mano igualmente se le agradece mucho.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 24 Febrero 2008, 12:13 pm
PWM, busca datos sobre el driver L293B y L293D, para motores DC y PAP (paso a paso).



Muchas gracias por el proteus, lo voy a probar.

Que sepas que existe la versión, más corregida y con más PIC y AVR nuevos incluidos con el Proteus 7.2 SP6

A parte de esto, ¿Hay más versiones nuevas del CCS COMPILER?

Muchas gracias amigo, eres muy altruista.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 27 Febrero 2008, 00:44 am
Pues la version mas nueva de CCS es la 4.068 pero yo tengo la version 4.065 no difiere practicamente una de la otra salvo que soporta como 3 o 4 chips mas, y lo mismo pasa con la version que tengo posteada pero de todos modos para los amantes de las actualizaciones ahi va, tambien va garantizada puesto que yo lo tengo desde hace un mes.


CCS 4.065 (http://www.rapidshare.com/files/95209337/PCWHD__4.065.zip.htm)


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 27 Febrero 2008, 08:58 am
Muchas gracias, el otro era el 4.13 y este que me diste es el 4.65.

Bueno, por ahora van las actualizaciones y yo te aviso con el tiempo.

Proteus 7.2 SP6
CCS 4.68


Muchas gracias de nuevo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Jum_Spain en 10 Marzo 2008, 12:46 pm
Yo tambien estoy a la espera de que aparezca la version 7.2 sp6 del proteus ya que trae algo muy interesante para mi y es la inclusion de la emulacion de 2 chips que tenian : el pic12f683 y el 18f4550 (este ultimo en la version sp2 no viene el otro fijo que es novedad en la sp6).

 Por ese motivo si alguien tiene la descarga, agradeceria que me lo indicara.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 18 Marzo 2008, 01:22 am
tardé un tiempo en hacer esto en ASM.

http://es.youtube.com/watch?v=lB9TyErcVU4


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 18 Marzo 2008, 03:59 am
Jum_Spain  en el proteus 7.2 con sp2 si viene el pic18f4550, y lo se porque yo he estado trabajando en ello. saludos.

Muy buen video Meta te felicito


Título: Practica 5 DAC a displays de 7 segmentos
Publicado por: MARCO_RECARGADO en 18 Marzo 2008, 08:30 am
despues de mil años la tierra prometida.


#include <16F877A.h>
#use delay(clock=8000000)
#fuses NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOPROTECT,HS,NOWRT,NODEBUG



#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



#bit porte0 = 0x09.0


int canal0=0;
int unidades=0;
int decenas=0;
int centenas=0;

void main ()
{
set_tris_b(0b00000000);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b11111111);

SETUP_ADC(ADC_CLOCK_INTERNAL);   // declaramos que el reloj del adc sera     
                                                               interno

setup_adc_ports(all_analog);                 // todos los canales analogicos habilitados
SET_ADC_CHANNEL(0);                        // seleccionamos canal 0

DISABLE_INTERRUPTS(global);

while(1)
{
 
canal0= READ_ADC();                        // retardo para esperar que el adc termine
                                                        // conversion fabricante menciona que al
                                                        // menos 50 microsegundos
delay_ms(1);

centenas=canal0/100;
decenas=(canal0 - (centenas*100))/10;
unidades=(canal0 - (centenas*100) - (decenas*10));

portb=centenas;
portc=decenas;
portd=unidades;
delay_ms(100);
}


}


(http://img301.¡mageshack.us/my.php?image=dibujoqv0.jpg)
http://rapidshare.com/files/100399663/ADC-DISPLAYS.rar.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 7 Abril 2008, 04:20 am
Hola chekndo por el internet encontre que ya salio la version 4.071 del CCS y quisiera saber si algien lo tiene o por lo menos el 4.068 me ayudaria muchisimo y tambien el proteus 7.2 SP6 si por hay algien q lo tenga y lo pueda postaer se le agredeciria.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: nestormontoya en 22 Abril 2008, 00:16 am
Hola a todos,

Estoy interesado en crear un proyecto que permita leer un dato analogo por el convertidor AD y luego enviarlo al PC por el puerto USB utilizando el PIC 16C765.

De antemano les agradezco cualquier ayuda que me puedan dar al respecto.


Gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Diego1_ en 24 Abril 2008, 00:23 am
recien empiezo y no se como bajar los programas ,,,el ccs y el compilador....y el simulador
alguien podria decirme


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 3 Mayo 2008, 01:51 am
Hola que tal, espero y me puedan ayudar estoy tratando de hacer el reloj de tiempo real que posteo ya MARCO_RECARGADO, solo que quisiera ver si me pueden ayudar para poder cambiar de los display's de 7 segmentos por un LCD y si me pudieran pasar la libreria DS1307.c porque no la tengo en el ccs de antemano gracias espero pronta respuesta urge porque es un trabajo final para entregar dentro de 18 dias por todo muchas gracias. :P


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: montero2210 en 5 Mayo 2008, 23:32 pm
Hola a todos!!!

Tengo un problemilla y no se resolverlo a ver si ustedes que veo que teneis bastante experiencia me podeis ayudar.

Estoy intentando hacer que con el pic16f84, se encienda como el coche fantastico una serie de leds. Hasta hay todo correcto y funcionando. Mi problema viene que le he añadido un pulsador para que cuando yo lo pulse el led que este encendido parpadee durante un tiempo, y no se como leer la pulsacion del pulsador.

Gracias de antemano!!!!


Título: libreria de DS1307
Publicado por: MARCO_RECARGADO en 6 Mayo 2008, 00:24 am
http://www.garcia-cuervo.com/picmania.garcia-cuervo.net/Proyectos_AUX_RTC.php

de aqui es la libreria del DS1307 que yo uso, es del maestro REDPIC del foro todopic, espero todavia te sirva M@ndo31


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 6 Mayo 2008, 05:50 am
Gracias MaARCO_RECARGADO si me sirve esa libreria...

 pero otra cosita podrias ayudarme a poder pasar de los displays de 7 segmentos a un lcd el proyecto que tu posteaste del reloj en tiempo real es que en verdad me urge gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: spurs21 en 9 Mayo 2008, 18:48 pm
Para quienes querian el Proteus 7.2 sp6  ;) aka esta:

Setup: http://rapidshare.com/files/112201132/setup72_SP6.exe.html

crack: http://mihd.net/92jfnp7

funcionando al 100  ;D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: universitarioEIA en 10 Mayo 2008, 04:22 am
yo estoy programando el DS1307 en PICC compiler. Ya lo probe en proteus y ya muestra todo (fecha y hora) en un lcd. estoy haciendo una maquina dobladora de perfiles, y necesito que el DS1307 me guarde el numero de piezas construidas al mes. como hago para guardar este dato?


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: flameboyr3 en 16 Mayo 2008, 18:45 pm
hasta ahora me quiero iniciiar en el mundo de pic programados con LENGUAJE C bien , he estado leyendo varias tutoriales y manueles de como progrmaar y creo que es hora de empezar asi que, descarge los instaladores de ccs y elplugin para MPLAB,  asi que quiero programar directamente desde ccs pero no se como se crea qel proyecto para empezar a programaar, ose como saco mi nuevo documento para empezar a programar si es como en el mplab que se debe crea r un proyecto y luego un .asm y unirlos , que pena peo ese es mi trabo para empezr ayudenme como empiezo

ademas he leido que se puede enlazar con el proteus para simularlo ¿como se hace eso?

ademas la ultima pregunta  ?se puede simular paso a paso con el ccs¿ y como llego ha hacer tal cosa

gracias amigo y espero una prontarespuesta para segir con estas clases


flameboy


Título: respuesta
Publicado por: MARCO_RECARGADO en 18 Mayo 2008, 07:54 am
Publicado por: universitarioEIA 
Insertar Cita
yo estoy programando el DS1307 en PICC compiler. Ya lo probe en proteus y ya muestra todo (fecha y hora) en un lcd. estoy haciendo una maquina dobladora de perfiles, y necesito que el DS1307 me guarde el numero de piezas construidas al mes. como hago para guardar este dato?


El DS1307 no puede guardar tantos datos creo que su memoria interna es apenas de 68 bytes entre los cuales ocupa para la fecha y hora, por lo que no seria viable para tu proyecto lo mejor seria guardarlo en la memoria eeprom del pic o en su defecto en una memoria eeprom externa la 24c256 podria ser una buena opcion.




Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 18 Mayo 2008, 08:14 am
Publicado por: flameboyr3 
Insertar Cita
hasta ahora me quiero iniciiar en el mundo de pic programados con LENGUAJE C bien , he estado leyendo varias tutoriales y manueles de como progrmaar y creo que es hora de empezar asi que, descarge los instaladores de ccs y elplugin para MPLAB,  asi que quiero programar directamente desde ccs pero no se como se crea qel proyecto para empezar a programaar, ose como saco mi nuevo documento para empezar a programar si es como en el mplab que se debe crea r un proyecto y luego un .asm y unirlos , que pena peo ese es mi trabo para empezr ayudenme como empiezo

ademas he leido que se puede enlazar con el proteus para simularlo ¿como se hace eso?

ademas la ultima pregunta  ?se puede simular paso a paso con el ccs¿ y como llego ha hacer tal cosa

gracias amigo y espero una prontarespuesta para segir con estas clases


flameboy





el ccs es amas amigable que el mplab para crear tu proyecto solo tienes que hacer lo siguiente.

abrir el ccs 
dar click a   NEW despues  a SOURCE FILE y listo puedes empezara hacer tu programa,no se te olvide anexarle a tu programa la extension *.C 

ejemplo:

miprograma.C


con respecto a sincronizar proteus con ccs no se como hacerlo, yo solo he utilizado proteus para simular los programas que hago en ccs,

CCS creo que lo unico que puede hacer es ejecutar el programa paso a paso para que sepas que va haciendo tu programa y puedas depurarlo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: flameboyr3 en 18 Mayo 2008, 16:50 pm
maroco muchas gracias
en este3 momento estoy haciendo mi primer programa y tengo una duda mas, en mplab yo puedo disponer de cadauno de mis registros puertas ydemas , como puedo ver el estado de esto registros que yo cree para la simulacion paso a paso

ven es que me da pena molestar tanto
es que no consigo un tutorial donde se pueda ver una simulacion paso a paso desde ccs como para entender un poco mas. si tu lo tienes, te agradaceria para no molestar tanto


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 22 Mayo 2008, 02:36 am
Hi!!!
        Quisiera ver si me pueden ayudar, estoy programando un PIC16F628A y trato de configurar los puestos analogicos digital con las instruciones de
setup_adc(), setup_adc_ports(), etc y el ccs me marca una serie de errores relacionados con todas las instrucciones del adc, los erroes son los siguentes:

 Undefined identifier setup_adc_ports
 Undefined identifier setup_adc
 Undefined identifier setup_adc_channel
 Undefined identifier read_adc

No se si se necesite una libreria especial para este tipo de pic ya que con el 16F627A tbm marca los mismos errores o se nececte definir algo antes de incluirlas.

Espero y me puedan ayudar ya que es para utilizarlo en un proyecto final.
    De antemano GRACIAS. ;D


Título: 16f84 + ccs + proteus + rs232 + lcd
Publicado por: rober_gv en 22 Mayo 2008, 22:29 pm
Es una mala combinacion, tengo un problema con la simulación en proteus de un programa que me funciona grabado en el PIC. Envio caracteres desde el teclado del ordenador a un LCD en 4bit atraves del puerto rs 232. El problema esta en el puerto ya que la visualización en el LCD funciona. Me imagino que me falta algun retardo como los que hay que poner en .asm para que simule bien. Alguna idea???
 
                                       :rolleyes:


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: mvelez en 23 Mayo 2008, 04:30 am
Hola soy nuevo en el foro y quisiera saber si alguien me podria ayudar sobre como utilizar en timer1 en CCS, para un proyecto en el cual necesito leer una señal IR de un control remoto. gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 26 Mayo 2008, 03:22 am
Que tal mi duda es sobre como se configuran las interrupciones se que se pueden hacer por el timer 0 y timer 1 y se que hay interrupciones externas, lo que deseo hacer para el proyecto que tengo es que cuando haya una interrupcion externa el pic deje de estar en modo sleep y a tienda lo que tiene programado para despues volver a sleep, pero pues si pueden explicarme un poco de interrupciones y no solo de la interrupcion externa seria de gran ayuda, para aprender.

   Gracias ;D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: mvelez en 26 Mayo 2008, 22:06 pm
hola este programa que hice no me lee bien la frecuencias del protocolo NEC y por eso cada vez que oprimo una misma tecla del control, me muestra numeros diferentes por el I2C. no se si es que tenga que usar un receptor infrarrojo (estoy usando el SFH 5110-40 de 40kHz, este se encuntra en RB0) distinto o si es problema del programa. si alguin me pudira ayudar se lo agradeceria. gracias.


#INCLUDE <16F877A.h>
#INCLUDE <MATH.H>
#USE delay(clock=20000000)
#FUSES HS,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP
#USE I2C(master,SDA=PIN_C4,SCL=PIN_C3,slow)
#BYTE PORT_B= 6
#BYTE PORT_C= 7

LONG     TT,T,TTI;
INT1     START=0,DAT[32],HAYDAT;
INT      CDAT,I,CONTROL,CONT,AUX;

VOID LIMPIAR(VOID)
{
 FOR(I=0;I<32;I++)
 {
    DAT=0;
 }
  CDAT=0;
}

#INT_EXT
VOID LEER()
{
   TT = GET_TIMER1();
   T = TT-TTI;
   TTI= TT;
 
  IF(START==1)
   {
      IF(T>1375 && T<1420)
      {
      DAT[CDAT]=1;
      CDAT++;
      }
      IF(T>686 && T<708)
      {
      DAT[CDAT]=0;
      CDAT++;
      }
      IF(CDAT==32)
      {
         HAYDAT=1;
      }
   }
   IF(T>8375 && T<8500)
   {
      START=1;
      LIMPIAR();
   }
}

VOID CONVERTIR()
{
   FOR(CONT=16;CONT<=23;CONT++)
   {
      IF(DAT[CONT]==1)
      {
         AUX=POW(2,CONT-16);
         CONTROL=AUX+CONTROL;
      }
   }
}

VOID MAIN()
{
SET_TRIS_B(0B11111111);
SET_TRIS_C(0B11100111);
EXT_INT_EDGE(H_TO_L);     // Configuro captura de 1er flanco de subida
ENABLE_INTERRUPTS(INT_EXT); // Habilito las interrupciones necesarias
ENABLE_INTERRUPTS(GLOBAL);
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8);
START=0;
HAYDAT=0;
LIMPIAR();


WHILE(TRUE)
{
   IF(HAYDAT==1)
   {
      HAYDAT=0;
      CONVERTIR();
      I2C_START();
      I2C_WRITE(0X40);
      I2C_WRITE(CONTROL);
      I2C_STOP();
   }

}

}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Hellhole en 3 Junio 2008, 19:03 pm
Para hacer un contador asdencente y descendente en ensamblador, que te valla contando asta 10 en un display de 7 segmentos de 0-9 y que ademas cuando llegue al nueve hacer que se encienda un led rojo y mientras no llegue a nueve este encendido uno verde. Estaria bien esto?

SENAB          BTFSC       PORTA,1;Explora porta si cambia salto incondicional a INC
                   GOTO         INC
                   BTFSC        PORTA,2 ;Idem, pero con DEC             
                   GOTO         DEC
INC             ADDWF       AUXILIAR ;suma 1 a auxiliar
                   CLRF          PORTB     ;borra el portb
                   MOVLW       AUXILIAR; mueve auxiliar a W
                   MOVWF       PORTB    ;W a portb
                   BTFSC        B'01110011' ;si en el diplay marca 9 salto a LEDR
                   GOTO         LEDR
DEC             SUBWF       AUXILIAR  ;resta 1 a auxiliar
                   CLRF          PORTB       ;borra el portb
                   MOVLW      AUXILIAR   ;mueve auxiliar a W
                   MOVWF      PORTB       ;mueve W al portb
                   BTFSC       B'01111111' ;si marca 8 en el display salto a LEDV
                   GOTO        LEDV
LEDR            BSF          PORTA,0    ; enciende led rojo apaga led verde
                   CLRF         PORTA,3
                   GOTO        INICIO
LEDV            BSF          PORTA,3   ;enciende led verde apaga led rojo.
                   CLRF         PORTA,0
                   GOTO        INICIO
                   END


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 4 Junio 2008, 04:19 am
Hola a todos!!!

Tengo un problemilla y no se resolverlo a ver si ustedes que veo que teneis bastante experiencia me podeis ayudar.

Estoy intentando hacer que con el pic16f84, se encienda como el coche fantastico una serie de leds. Hasta hay todo correcto y funcionando. Mi problema viene que le he añadido un pulsador para que cuando yo lo pulse el led que este encendido parpadee durante un tiempo, y no se como leer la pulsacion del pulsador.

Gracias de antemano!!!!



primero debes de saber que pin quieres yo te recomendaria el portb por tener resistencias de pull up

primero tienes que configurar el porb como entrada

set_tris_b(0xff);

ahora testeas el puerto si es cero o uno dependiendo de lo que desees

if(pin_b0==0)   
{

y aqui metes todo lo que desees hacer cuando se pulse el boton

}


dato


Título: Practica 6 Reloj de tiempo real con LCD
Publicado por: MARCO_RECARGADO en 4 Junio 2008, 04:50 am
Gracias MaARCO_RECARGADO si me sirve esa libreria...

 pero otra cosita podrias ayudarme a poder pasar de los displays de 7 segmentos a un lcd el proyecto que tu posteaste del reloj en tiempo real es que en verdad me urge gracias


claro este es el programa

P.D. Contesto tan rapido como me lo permite mi trabajo disculpa





////////////////////////////////////////////////////////////////////////////////
////////////ESTE PROGRAMA UTILZA EL CIRCUITO DS1307 PARA MOSTRAR LA ////////////
//////////HORA EN TIEMPO REAL A TRAVEZ DE UN UNA LCD DE 2 POR 16 CARACTERES/////
//////////////////////////PARA FORO ELHACKER.NET////////////////////////////////

#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 <ds1307.c>
#include <lcd.c>


#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

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


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

   ds1307_init(0);                          ///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);
 
 
  lcd_init();                               /// inicializamos lcd
 
 
 
  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55 (9:49:00 am)
 
  ds1307_set_date_time(8,11,7,2,9,49,00);   /// se escribe en el displositivo
                                            /// el tiempo deseado
  while(1)
  {
 
    delay_ms(100);
   
  ds1307_get_date(day,month,yr,dow);        /// se obtiene la fecha 
  ds1307_get_time(hrs,min,sec);             /// se obtiene la hora
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%02d:%02d:%02d          ",hrs,min,sec);   ///se despliegan los datos
 
  lcd_gotoxy(1,1);
  lcd_putc("WWW.ELHACKER.NET");
       
  }
}

(http://img519.imageshack.us/img519/7518/dibujoqi9.th.jpg)




archivos de simulacion

http://rapidshare.com/files/119934508/reloj_tiempo_real_con_lcd.DSN.html
http://rapidshare.com/files/119934581/RELOJ_TIEMPO_REAL_CON_LCD.c.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 4 Junio 2008, 04:55 am
Hi!!!
        Quisiera ver si me pueden ayudar, estoy programando un PIC16F628A y trato de configurar los puestos analogicos digital con las instruciones de
setup_adc(), setup_adc_ports(), etc y el ccs me marca una serie de errores relacionados con todas las instrucciones del adc, los erroes son los siguentes:

 Undefined identifier setup_adc_ports
 Undefined identifier setup_adc
 Undefined identifier setup_adc_channel
 Undefined identifier read_adc

No se si se necesite una libreria especial para este tipo de pic ya que con el 16F627A tbm marca los mismos errores o se nececte definir algo antes de incluirlas.

Espero y me puedan ayudar ya que es para utilizarlo en un proyecto final.
    De antemano GRACIAS. ;D










sera porque en la libreria del ccs no tiene declarado que el pic tiene puertos anologos?









//////// Standard Header file for the PIC16F628A device ////////////////
#device PIC16F628A
#nolist
//////// Program memory: 2048x14  Data RAM: 223  Stack: 8
//////// I/O: 16   Analog Pins: 0
//////// Data EEPROM: 128
//////// C Scratch area: 77   ID Location: 2000
//////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,NOPUT,PUT,PROTECT,NOPROTECT
//////// Fuses: BROWNOUT,NOBROWNOUT,NOMCLR,MCLR,NOLVP,LVP,INTRC,RC_IO
//////// Fuses: INTRC_IO,RC,NOCPD,CPD
////////
////////////////////////////////////////////////////////////////// I/O
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
//                         PORT_x_PULLUPS(), INPUT(),
//                         OUTPUT_LOW(), OUTPUT_HIGH(),
//                         OUTPUT_FLOAT(), OUTPUT_BIT()
// Constants used to identify pins in the above are:

#define PIN_A0  40
#define PIN_A1  41
#define PIN_A2  42
#define PIN_A3  43
#define PIN_A4  44
#define PIN_A5  45
#define PIN_A6  46
#define PIN_A7  47

#define PIN_B0  48
#define PIN_B1  49
#define PIN_B2  50
#define PIN_B3  51
#define PIN_B4  52
#define PIN_B5  53
#define PIN_B6  54
#define PIN_B7  55

////////////////////////////////////////////////////////////////// Useful defines
#define FALSE 0
#define TRUE 1

#define BYTE int8
#define BOOLEAN int1

#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts

////////////////////////////////////////////////////////////////// Control
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants returned from RESTART_CAUSE() are:
#define WDT_FROM_SLEEP  3     
#define WDT_TIMEOUT     11   
#define MCLR_FROM_SLEEP 19   
#define MCLR_FROM_RUN   27   
#define NORMAL_POWER_UP 25   
#define BROWNOUT_RESTART 26   


////////////////////////////////////////////////////////////////// Timer 0
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER_0(),
//                              SET_TIMER0() or SET_RTCC(),
//                              GET_TIMER0() or GET_RTCC()
// Constants used for SETUP_TIMER_0() are:
#define RTCC_INTERNAL   0
#define RTCC_EXT_L_TO_H 32
#define RTCC_EXT_H_TO_L 48

#define RTCC_DIV_1      8
#define RTCC_DIV_2      0
#define RTCC_DIV_4      1
#define RTCC_DIV_8      2
#define RTCC_DIV_16     3
#define RTCC_DIV_32     4
#define RTCC_DIV_64     5
#define RTCC_DIV_128    6
#define RTCC_DIV_256    7


#define RTCC_8_BIT      0     

// Constants used for SETUP_COUNTERS() are the above
// constants for the 1st param and the following for
// the 2nd param:

////////////////////////////////////////////////////////////////// WDT
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
//                            RESTART_WDT()
// WDT base is 18ms
//

#define WDT_18MS        0x8008   
#define WDT_36MS        9   
#define WDT_72MS       10   
#define WDT_144MS      11   
#define WDT_288MS      12   
#define WDT_576MS      13   
#define WDT_1152MS     14   
#define WDT_2304MS     15   

////////////////////////////////////////////////////////////////// Timer 1
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1
// Constants used for SETUP_TIMER_1() are:
//      (or (via |) together constants from each group)
#define T1_DISABLED         0
#define T1_INTERNAL         0x85
#define T1_EXTERNAL         0x87
#define T1_EXTERNAL_SYNC    0x83

#define T1_CLK_OUT          8

#define T1_DIV_BY_1         0
#define T1_DIV_BY_2         0x10
#define T1_DIV_BY_4         0x20
#define T1_DIV_BY_8         0x30

////////////////////////////////////////////////////////////////// Timer 2
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2
// Constants used for SETUP_TIMER_2() are:
#define T2_DISABLED         0
#define T2_DIV_BY_1         4
#define T2_DIV_BY_4         5
#define T2_DIV_BY_16        6

////////////////////////////////////////////////////////////////// CCP
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH
// Constants used for SETUP_CCPx() are:
#define CCP_OFF                         0
#define CCP_CAPTURE_FE                  4
#define CCP_CAPTURE_RE                  5
#define CCP_CAPTURE_DIV_4               6
#define CCP_CAPTURE_DIV_16              7
#define CCP_COMPARE_SET_ON_MATCH        8
#define CCP_COMPARE_CLR_ON_MATCH        9
#define CCP_COMPARE_INT                 0xA
#define CCP_COMPARE_RESET_TIMER         0xB
#define CCP_PWM                         0xC
#define CCP_PWM_PLUS_1                  0x1c
#define CCP_PWM_PLUS_2                  0x2c
#define CCP_PWM_PLUS_3                  0x3c
long CCP_1;
#byte   CCP_1    =                      0x15         
#byte   CCP_1_LOW=                      0x15         
#byte   CCP_1_HIGH=                     0x16         
////////////////////////////////////////////////////////////////// UART
// Constants used in setup_uart() are:
// FALSE - Turn UART off
// TRUE  - Turn UART on
#define UART_ADDRESS           2
#define UART_DATA              4
////////////////////////////////////////////////////////////////// COMP
// Comparator Variables: C1OUT, C2OUT
// Constants used in setup_comparator() are:
#define A0_A3_A1_A2  0xfff04
#define A0_A2_A1_A2  0x7ff03
#define NC_NC_A1_A2  0x6ff05
#define NC_NC_NC_NC  0x0ff07
#define A0_VR_A1_VR  0x3ff02
#define A3_VR_A2_VR  0xcff0A
#define A0_A2_A1_A2_OUT_ON_A3_A4 0x7e706
#define A3_A2_A1_A2  0xeff09
#define CP1_INVERT   0x00010
#define CP2_INVERT   0x00020

#bit C1OUT = 0x1f.6
#bit C2OUT = 0x1f.7

////////////////////////////////////////////////////////////////// VREF
// Constants used in setup_vref() are:
//
#define VREF_LOW  0xa0
#define VREF_HIGH 0x80
// Or (with |) the above with a number 0-15
#define VREF_A2   0x40

////////////////////////////////////////////////////////////////// INTERNAL RC
// Constants used in setup_oscillator() are:
#define OSC_48KHZ   0
#define OSC_4MHZ    8

////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
//                      CLEAR_INTERRUPT(), INTERRUPT_ACTIVE(),
//                      EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H              0x40
#define H_TO_L                 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL                    0x0BC0
#define INT_RTCC                  0x0B20
#define INT_RB                    0xFF0B08
#define INT_EXT                   0x0B10
#define INT_TBE                   0x8C10
#define INT_RDA                   0x8C20
#define INT_TIMER1                0x8C01
#define INT_TIMER2                0x8C02
#define INT_CCP1                  0x8C04
#define INT_COMP                  0x8C40
#define INT_TIMER0                0x0B20
#define INT_EEPROM                0x8C80

#list

fuente CCS ldevices


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 7 Junio 2008, 19:35 pm
Muchas gracias Marco_Recargado se te agradece tu ayuda  ;D ;) :D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: dieguete en 24 Julio 2008, 18:38 pm
Hola. Necesito saber como leer desde una entrada del PIC 16F84A(p.e. RA0), añadiéndole además un interruptor, botón o algo similar.
Lo he intentado con las funciones input pero no hay manera

Gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 1 Agosto 2008, 10:34 am
Hola:

Ahora está la versión CCS 4.77. ¿Hay mucha diferencia? Si vale la pena y lo llegaras a actualizar, nos avisa por aquí.

Un cordial saludos.

PD: Buen trabajo por los tutos.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lmelga en 5 Agosto 2008, 00:11 am
hola amigos quiero q me ayuden por favor... tengo un proyecto q tengo q entregar si o si de lo contrario me reprueban... alguien tendria el siguiente programa en micro C? 

Programa en lenguaje C (mikroC) para un PIC16F877A que controle ambos paneles de 7 segmentos de manera a que se tengan 2 dados electrónicos.
Al presionarse el botón conectado a RB0 deberá detenerse la cuenta de 1 de los dados.
Luego al volverse a presionar dicho botón deberá parar el 2 dado.
Al presionarlo una tercera vez ambos dados deberán volver a empezar la cuenta

desde ya muchas gracias amigos...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: orduz8507 en 20 Agosto 2008, 08:08 am
AMIGO TENGO UN PROBLEMITA CON EL CCS Y ES que DESEO COLOCAR UNA LIBRERIA LA DEL BUS I2C YA LA TENGO PERO NOSE DONDE COLOCARLA SERA que ME PUEDES ENSEÑAR MUCHAS GRACIAS



Nota del mod: Estoy seguro de que eres capaz de escribir en minúsculas, haz un esfuerzo a ver si te sale.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 20 Agosto 2008, 14:45 pm
hola amigo,te digo los pasos en donde vas a colocar esa libreria.

Mi pc/Disco local/Archivos de programas/Picc/Drivers.

Alli la colocas y listo,suerte...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 21 Agosto 2008, 07:17 am
hola colegas,tengo una duda con respecto al ccs c compiler,es la siguiente:

cuando yo compilo mi codigo en lenguaje c con el ccs c compiler el me genera un (archivo.Hex), ese archivo es el que yo voy a grabar en el pic con ayuda de algun grabador como Winpic800 o ic-prog?????    o necesito enlazar el programa ccs c compiler con el mplab y el mplab ide plugin, para asi compilar con el mplab y asi generar el (archivo.Hex) con el cual se grabara el pic?????

estos dos archivos son los mismos???.....

de antemano muchas grax,ya que de verdad estoy muy confundido porq apenas empiezo a programar en lenguaje c...



Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 21 Agosto 2008, 12:17 pm
hola colegas,tengo una duda con respecto al ccs c compiler,es la siguiente:

cuando yo compilo mi codigo en lenguaje c con el ccs c compiler el me genera un (archivo.Hex), ese archivo es el que yo voy a grabar en el pic con ayuda de algun grabador como Winpic800 o ic-prog????? 

Sí.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: orduz8507 en 21 Agosto 2008, 19:10 pm
quiero generar un tono por un buzzer piezo por medio de una  interrupcion .. para generar una onda cuadrada de diferente frecuencia, por (RA4). en un pic 16F873A programandolo en el el ccs alguien me puede ayudar con algun codigo fuente muchas gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 21 Agosto 2008, 20:12 pm
Citar
quiero generar un tono por un buzzer piezo por medio de una  interrupcion .. para generar una onda cuadrada de diferente frecuencia, por (RA4). en un pic 16F873A programandolo en el el ccs alguien me puede ayudar con algun codigo fuente muchas gracias.

Aquí te dejo un pdf muy bueno para generar tonos con ese pic:

Manual de tonos (http://www.bolivar.udo.edu.ve/microinternet/articulos/tonos.pdf)

La proxima vez por favor crea un tema nuevo, ya que si lo pones aquí muchisimos usuarios no lo van a ver, o si alguien tiene la misma duda no lo va a encontrar tan facilmente.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: orduz8507 en 21 Agosto 2008, 20:32 pm
amigo depronto tienes algun programa ya probado en proteus para montarlo necesito algo con generar sonidos por el pic 16f873a gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 28 Agosto 2008, 08:37 am
...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ncoliv en 18 Septiembre 2008, 06:07 am
Encontre este foro y tambien algo que estoy buscando. El programa que me muestra por el lcd el tiempo del RTC Hora y fecha. me podrias pasar la circuiteria del pic F877A y el rtc 1307? Por favor me sería de mucha utiliadad muchas gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 7 Octubre 2008, 07:59 am
Hola:

Podrían poner el compilador de C, CCS, ahora su versión es la 4.080, al menos que casi llegue a ella.

Y si pueden también el Proteus más nuevo.

Un cordial saludos.


Título: AYUDA- programacion de PICS en lenguaje C (CCS)
Publicado por: alondra_celeste en 19 Octubre 2008, 05:26 am
Hola a todos, ando buscando informacion sobre comunicacion por RF, tengo los transmisores LAIPAC TLP434A & RLP434A, lo que no se como es que debo enviar informacion de un PIC- TLP434A - RLP434A - PIC, es decir, informacion de un PIC a otro PIC mediante este transmisor y receptor inalambricos, con el Lenguaje C (CCS), me urge mucho  :-[ , ya he buscado sin exito, por favor, alguien puede ayudarme????

Gracias.

Liz


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 19 Octubre 2008, 06:03 am
Hola a todos, ando buscando informacion sobre comunicacion por RF, tengo los transmisores LAIPAC TLP434A & RLP434A, lo que no se como es que debo enviar informacion de un PIC- TLP434A - RLP434A - PIC, es decir, informacion de un PIC a otro PIC mediante este transmisor y receptor inalambricos, con el Lenguaje C (CCS), me urge mucho  :-[ , ya he buscado sin exito, por favor, alguien puede ayudarme????

Gracias.

Liz
Hola que tal disculpa pero este post se hizo especialemente para poner programas de PICS en C o resolver dudas sobre programas, por lo que pido a todos los usuarios en gral que posteen sus dudas unica y exclusivamente acerca de programacion de pics en c   no deseo que este comentario se tome como ofensivo solo es para tener un orden en nuestros posts y para que aquel que quiera aprender a programar pics en c no se vea afectado con temas de otra indole.

bueno despues de sermon te puedo decir, los transmisores que tu tienes son transmisores que envian todo lo que tu pongas en sus pines de salida/entrada respectivamente es decir si tu pones un "1" logico eso mismo mandara, sin embargo solos te pueden acarrear muchos problemas porque no tienes un protocolo de counicacion para detectar o filtrar posibles errores o lo que es lo mismo no tienes la certeza de que estas recibiendo, para eso yo te recomendaria usar un codificador y decodificador respectivamente. sin embargo los puedes conectar directamente al PIC. aunque yo no lo recomiendo mucho por que estan sujetos a muchos disturbios, estos son unos ejempolos de como conectar tus dispositivos de rf.


(http://www.coolcircuit.com/project/rf_remote/tx.GIF)

(http://www.coolcircuit.com/project/rf_remote/rx.GIF)



yo te recomendaria los decoficadores  HT12E y HT12D aqui esta el lnik de como puedes utilizarlos, estos chips ya contienen su propio protocolo de comunicaciones y a mi en lo personal me han sido de mucha utilidad, espero haber sido de ayuda , SALUDOS

www.datasheetcatalog.org/datasheets/37/467327_DS.pdf


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 19 Octubre 2008, 06:16 am
El software de proteus y picc estan publicados al inicio de este post y son las versiones mas recientes  que yo tengo en cuanto tenga mas actuales los publico, SALUDOS


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 20 Octubre 2008, 14:10 pm
El software de proteus y picc estan publicados al inicio de este post y son las versiones mas recientes  que yo tengo en cuanto tenga mas actuales los publico, SALUDOS

Esperando respuesta mi muy distinguido amigo.

Proteus está la v7.4


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Juan_elec en 8 Noviembre 2008, 02:29 am
olas a todos que tal me parece muy interesante este foro ya que puedes compartir muxas ideas y cosas mas weno io queria contar y preguntar a la vez es que io hice una tarea en mi univ de un controlador de velocidad de un motor dc la velocidad es vista en un lcd y mi velocidad de referencia la escojo con un potenciometro ,mediante el pic16f876A corrijo el error  ante  una perturbacion en el eje mediante un pid programado en el pic weno el trabjo si me flipa pero mi problem es que mi valor de refencia que me aparece en el lcd de mi trabajo no es igual ami valor de salida de mi lcd mm y no se si seran los parametros de mi motor que esten mal o sera mis valores kp ki kd habe si alguien me dice alguito de como corregir esto pls mayor inf les puedo pasar mi simulacion en proteus si entienden mi idea gracias ahi les va el programa de formacion del pid.

#include <16F876A.h>
#device adc=10
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG             
     //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=20000000)
#include <lcd.c>
#define  factor   3000/1023
#define  f2       0.23
#use fast_io(a)
#use fast_io(c)
#use fast_io(b)

float rpm,vel_m;
int   cont_t0;
int16 vel,vref,duty,aux;
signed long duty_c,uk_int;
float uk,uk_1,ek,ek_1,ek_2,f_vref;
int Kp,Ki,Kd;

void set_pwm1_dc(unsigned long duty_pwm);

#int_TIMER0
void TIMER0_isr()
{
   set_timer0(61);      // para contar 10 ms
   cont_t0++;
   if(cont_t0==10)
   {
      cont_t0=0;
      vel=get_timer1();   // contamos cuanros pulsos pasaron
      vel=vel*6;        // son 100 pulsos por revolucion
                        // asi obtenemos en revoluciones cada 100 milisegundos
                        // vel = #p/deci * 1rev/100p * 10 deci/1 seg * 60 seg/min
                        // vel esta en rpm
      lcd_gotoxy(9,2);
      printf(lcd_putc,"Vm=%Lu",vel);
      set_timer1(0);
   }
}

void main()
{
   set_tris_a(0xff);
   
   setup_adc(ADC_CLOCK_DIV_8);
   
   setup_adc_ports(AN0);
   set_adc_channel(0);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DIV_BY_4,0XFF,4);
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(0);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   set_timer0(61);
   set_timer1(0);
   clear_interrupt(INT_TIMER0);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   
   set_tris_c(0b11111011);
   set_tris_b(0);
   output_b(0);
   lcd_init();
   set_pwm1_dc(700);
   lcd_putc("   CONTROL PID\n");
   delay_ms(1000);
   output_b(0);
   
   uk=0;
   uk_1=0;
   ek=0;
   ek_1=0;
   ek_2=0;
   
   Kp=10;
   Ki=10;
   Kd=5;
   for(;;)
   {
      aux=read_adc();
      if(aux!=vref)
      {
         vref=aux;
         f_vref=vref;
         rpm=vref*factor;
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Vr=%4.0f",rpm);     
      }
      vel_m=vel;
      ek=rpm-vel_m;
     
      uk=Kd*ek_2+(Kp+2*Kd)*ek_1+(Kp+Ki+Kd)*ek-uk_1;   // controlador pid
      ek_1=ek;
      ek_2=ek_1;
      uk_1=uk;
      uk_int=uk;
      duty_c=uk_int*f2;
      if(duty_c>1023)
         duty_c=1023;
      else if(duty_c<=0)
         duty_c=0;
      duty=duty_c;
      set_pwm1_dc(duty);       
   }
   
}

void set_pwm1_dc(unsigned long duty_pwm)
{
 #byte   CCP1CON=0x17
 #byte   CCPR1L=0x15
 
   bit_clear(CCP1CON,4);
   bit_clear(CCP1CON,5);
   if(bit_test(duty_pwm,0))
         bit_set(CCP1CON,4);
   if(bit_test(duty_pwm,1))
         bit_set(CCP1CON,5);
   duty_pwm>>=2;                 //rota dos veces
   duty_pwm&=0x00FF;             // dejamos solo un byte
   CCPR1L=duty_pwm;     
}

graxias ojala me puedan ayuda xD


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 19 Noviembre 2008, 05:20 am
Juan_elec

espero que no sea muy tarde, creo que un diagrama de lo que tienes serviria un poco puesto que dices que tienes un pid pero como es que retroalimentas al pic para hacer el ajuste de velocidad? con un tacometro o con que?


segun entiendo en tu programa utilizas el adc para saber la velocidad, yo creo que te ha de variar mucho, porque el voltaje de salida no debe ser constante, aunque paraciera, lo que yo te recomendaria es que hicieras una serie de promedios, es decir que tomes unas 10 muestras del adc y las promedies y asi sucesivamente para que salga lo mas exacto posible, obviamente que entre mas muestras tengas mas cerca estaras del valor, el mismo metodo aconsejo para cuando estas muestreando el valor del pwm que mandas, en gral yo pienso que por eso no coinciden tus valores,
pero en definitiva un diagrama electrico estaria mucho mejor


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 19 Noviembre 2008, 05:48 am
ha llegado el momento de agregarle una practica mas a nuestro pequeño tutorial
esta practica lo que hace es que pasa los datos recibidos por puerto serie a la lcd
utilizo la terminal virtual para simular la comunicacion con el pic

/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////comunicacion RS232 con pic///////////////////////////////
///////////////by marco_recargado para foro.elhacker.net///////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
#include <16F877A.h>
#fuses HS, NOWDT, NOPROTECT
#use delay(clock=8000000)

#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7) /// libreria para el manejo del
                                                                        /// puerto serie  se establece
                                                                        /// velocidad de 9600 baudios
#include <lcd.c>                          /// libreria para el manejo de la lcd
char dato_recibido[16];                /// aqui va a ir los datos recibidos por rs232


#byte porte=0x09
 
#int_rda                                     //// interrupcion por escritura en buffer del puerto
void rda_isr()
 {
  gets(dato_recibido);                  //// esta instruccion almacena en la variable los
                                                 //// datos que se esten enviando hasta que llega
                                                 //// la tecla enter
  }
 
 

 

void main()

{
   enable_interrupts(int_rda);                    //// se habilita la interrupcion por
                                                             ////  escritura del puerto serial
   enable_interrupts(global);
 
  set_tris_d(0b00000000);
 
   lcd_init();
   lcd_gotoxy(1,1);
   lcd_putc("    com RS232   ");
   
   while(true)
   {
   lcd_gotoxy(1,2);
   printf(lcd_putc,"%s",dato_recibido);         /// se manda a lcd lo que se  recibio
   
   }
}
 
 
nuestra gloriosa imagen
(http://img45.imageshack.us/img45/6762/dibujold5.jpg)


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 19 Noviembre 2008, 13:05 pm
Muy bueno. También hice uno con PIC y RS232 pero con asm. En estos momentos estoy haciendo un manual tutorial que ya llevo más de 40 páginas en PDF y con muchas fotos.

http://es.youtube.com/watch?v=niWAbQ-HVnY

https://foro.elhacker.net/electronica/rs232_con_pic16f84a_y_visual_c_net-t228116.0.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 19 Noviembre 2008, 15:38 pm
Mi estimado amigo Meta no me queda mas que quitarme el sombrero ante ti, te ha quedado muy bien el programa, y espero ya con ansias tu manual para devorarlo,  :o   espero que ese espiritu de compartir tus experiencias no decaiga. Se ve que te haz puesto empeño al trabajo pues ya hasta tu pagina web hiciste, felicidades, espero yo poder hacer la mia algun dia.
Saludos


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 20 Noviembre 2008, 10:55 am
Gracias.

No tengo porqué perder el empeño de hacer manuales salvo que consiga empleo y me quite mi tiempo libre. Ahora como en España estamos en el paro y vamos de mal en peor aprovecharé. Me falta pulir cosas al manual y la verdad me comí un 0 arriba. Sospecho que serán cerca de 450 páginas de lectura rápida al estilo que muestra a continuación.

http://usuarios.lycos.es/electronicapic/manual/icprog.pdf

Saludos.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: RASAAM en 29 Noviembre 2008, 03:30 am
Hola marco, en verdad te felicito y me alegra que personas como tú colaboren con el prógimo, espero poder colaborar, ya que anteriormente no lo he hecho ?¿? no sé por qué nunca me había unido a uno de estos espectaculares foros.  :o

bueno.... la idea es que tengo algo de experiencia en assembler y en verdad me defiendo bastante bien. ahora, quiero evoluionar a CCS,, la cuestion es que quiero saber cómo leer un archivo .txt de una memoria SD. lo de la lectura de la SD no es problemal,ya que e leido que hay una libreria SD.c o algo así..

La verdad es que pienso hacer un archivo txt de tal forma que a ciertas horas el pic me ejecute una acción dependiendo de lo que haya configurado en el archivo txt. el archivo lo debería modificar cada vez que quisiera en mi PC a la SD sobre el txt, en el que deberían ir configurados los horarios y su acción correspondientes. el horario con un DS1307 (no hay problema).

Ah! de todas formas pienso comensar con aprender el fomato FAT, ya que creo que es importante para manejar txt, además supongo que el pic debe comprender el formato para así poder interpretar el archivo txt ,,....

Por ahora no escribo más y espero anciosamente tu respuesta, tal vez es un buen proyecto....


Título: Re: Actualizacion de proteus
Publicado por: MARCO_RECARGADO en 9 Diciembre 2008, 15:35 pm


Queridos amigos aqui tenemos recien salidito PROTEUS 7.4 SP3
a disfrutarlo.


Cortesia de nuestros amigos del FORO SONSIVRI

Setup:
http://rapidshare.com/files/170201339/Proteus_7.4_Sp3_setup_sonsivri.com.rar

Patch:
Version 6.2
http://rapidshare.com/files/170740810/Proteus_7.4_sp3_patch_6.2_sonsivri.com.rar

Procedimiento:

1) Desinstalar cualquier version de proteus.
2) Instalar la nueva version (tambien la llave)
3) Aplicar el patch (el patch debe estar en la misma carpeta donde se instalo proteus)

Funcionando yo al menos no he tenido ningun contratiempo con ISIS ya llevo simulando 2 dias y no he encontrado ningun bug. ARES todavia no lo pruebo bien.

tambien lo pueden encontrar en el inicio de este post.

Saludos







Título: Re:Actualizacion CCS 4.078
Publicado por: MARCO_RECARGADO en 10 Diciembre 2008, 15:45 pm
Para que no se quede atras tambien tenemos la version mas actual que hasta ahora he podido conseguir.


CCS 4.078 (http://www.anonym.to/?http://rapidshare.com/files/165968362/PIC_4_78.rar)

tambien cortesia del foro sonsivri

solo instalen , aplican las licencias y peguen las dll que viene en el zip en el directorio raiz del porgrama.

Segun he leido a algunos les causa problemas y les pone que instalan la version 4.074 la solucion es desinstalar y volver a instalar, a mi en lo particular no me presento ningun problema.


algunos afirman que no necesitaron nuevas licencias ni pegar las dll yo si las instale

para quien quiera saber mas aqui esta la fuente :

como instalar (http://www.sonsivri.com/forum/index.php?topic=16390.0)




enjoy


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: pajaro128 en 4 Enero 2009, 02:10 am
hola   me inicio en ccs y tengo un pequeño problema
 
                 ERROR 18....file can not be opened
                 en la linea que tira el error =     #include <16f877a.h>
                 puede ser que no encuentre la libreria del pic ????
                                      saludos


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 6 Enero 2009, 02:34 am

Hola que tal pajaro128, el  problemas puede consistir en como haz hecho tu programa, si en la barra de proyecto que es la que esta hasta abajo aparece algo asi pjt:mi_primer_ejemplo.pjt y adelante tienes algo asi c:/programas pic/ mi_segundo_ejemplo.c entonces resulta que el proyecto que esta ejecutandose no coincide con el programa.c que estas compilando por lo que te tira el error de que no se puede abrir el archivo porque tu programa no coincide con tu proyecto espero haberte ayudado.

Saludos


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 6 Enero 2009, 16:32 pm
pues bien para los niños que se han portado bien los reyes magos nos han dejado un regalito.
la practica de un contador por interrupcion     :rolleyes:    bueno un regalo es un regalo 
la cuenta es ascendiente aprox cada segundo (.98304 seg)

////////////////////////////////////////////////////////////////////////////////
///////////    practica 10 : contador por interrupcion        //////////////////
//////////     By Marco_recargado para foro.elhacker.net      //////////////////
////////////////////////////////////////////////////////////////////////////////

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

int contador=0;                         /// Variable que llevara la cuenta total
int delay=30;                                       

#byte portb = 6

#int_TIMER0

void timer0()
{



delay--;
if(delay==0){contador++; delay=30;}
set_timer0(0);
}

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


void main(void)
{

set_tris_b(0x00);

///la formula para saber cada cuando se ejecutara nuestra interrupcion con el timer0
/// es T=N*M*(4/FOSC) donde
/// T= tiempo
/// N= preescalador del timer o divisor
/// M= numero de iteracciones
/// asi por ejemplo con un preescalador de 256 un numero de iteraciones de 256 y un cristal de 8mhz
/// nos da un resultado de 32.7 milisegundos por interrupcion

setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_256 );    /// configura a timer0 con reloj
                                                   /// interno y un divisor de 256                                     
                                                   
enable_interrupts(GLOBAL);                      /// permitir interrupciones
enable_interrupts(INT_timer0);                    ///activar interrupcion en timer0
set_timer0(0);

while(true)
{
portb=contador;
}
}  // fin de programa principal


y nuestra imagen

(http://img1.xooimage.com/files/7/0/1/dibujo-9c5551.jpg)



Saludos y feliz año nuevo





Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lewisdavid en 12 Marzo 2009, 04:30 am
hola a todos por fortuna e encontrado lo que queria.. un foro para programar en ccs y ojala poder daer mis aportes y que ojala me puedan solucionar muchas dudas que tengo en algunas areas de programacion de este tema

a continuacion adjunto un programa para un enlace de radiofrecuencia este codigo repsonde muy bien ya lo probe y lo presente en un proyecto de la universidad

este es el codigo del emisor

#include<16f877a.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=2400, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8)
#byte PORTD = 0x08
#byte PORTB = 0x06


void main()
{
set_tris_D(0b11111111);

PORTD=0;
PORTB=0;

while(1)
{
if(PORTD==0){printf("%d",0);}
if(PORTD==1){printf("%d",1);}
if(PORTD==2){printf("%d",2);}
if(PORTD==4){printf("%d",3);}
if(PORTD==8){printf("%d",4);}
if(PORTD==64){printf("%d",5);}
if(PORTD==128){printf("%d",6);}

}
 
}






y este es el codigo del receptor


#include<16f877a.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=2400, parity=N, xmit=PIN_C6, rcv=PIN_C7)

#byte PORTD = 0x08
#byte PORTB = 0x06


enable_interrupts(int_rda);
enable_interrupts(global);

char orden;

#int_rda
void serial_isr() {

   orden=getc()-48;

   if(orden==0){PORTD=0b00000000;}
   if(orden==3){PORTD=0b00000101;}     // adelante
    if(orden==2){PORTB=0b00000110;}     // giro

}

void main()
{
set_tris_D(0b00000000);
set_tris_B(0b00000000);

PORTd=0;
PORTB=0;







while(1)


{
   
 

}
 
}






los modulos de transmision de señal son tlp 434a y rlp434a y son de transmision serial


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lewisdavid en 12 Marzo 2009, 04:34 am
por favor necesito que me ayuden en una duda quiero aprender a controlar un serco con ccs osea que se pueda mover cierto grado y como lo hace la verdad solo se que se mueve mediante pwm pero la verdad no se mas de este metodo
por favor en lo que me puedan ayudar, un pequeño codigo para empezar o algooooooooo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 13 Marzo 2009, 23:23 pm
Para eso pregunta un tema a parte.

http://www.abcdatos.com/tutoriales/tutorial/v12.html

Saludo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: M@ndo31 en 26 Marzo 2009, 20:43 pm
Hola foreros.

Mi pregunta es si alguien me pude decir de un buen manual o alguien que me pueda ayudar con las interrupciones del PIC 16F87x en CCS, principalmente as interrupciones del TIMER1, TIMER2, EXTERNA por cambio de flanco y la interrupción del USART.

De antemano muchas gracias.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 29 Marzo 2009, 05:01 am
hola lewisdavid aca te dejo un enlace sobre como controlar un servomotor con ccs,no es con PWM.espero te sirva de algo.

http://www.ucontrol.com.ar/forosmf/robotica/pic16f84amotor-bipolar/


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: el_greg en 1 Abril 2009, 04:19 am
hey marco_recargado ecxelente el aporte, me estoy iniciando con la programacion ec ccs.. tienes un manual que me pueda ayudar te agradeceria que me enviaras el link


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: el_greg en 1 Abril 2009, 05:23 am
hola necesito con urgencia un manual didactico de ccs .por favor
el que pueda ayudarme


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: el_greg en 1 Abril 2009, 05:29 am
[hermanazo usted es el que puede ayudaarme que posibilidad hay de que me facilite el manual de ccs



[/quote]


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 1 Abril 2009, 06:23 am
hola que tal,aca te dejo el link del manual compilador CCS C COMPILER,espero te sirva.suerte

http://www.cursos.ucv.cl/eie48700/referencias/CCS_C_Manual.pdf


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: milo2005 en 13 Abril 2009, 07:02 am
Hola, primero q nada quisiera agradecer por esta introduccion al lenguaje c para pics q me ha servido de mucho y en la cual e resuelto muchas dudas, en segundo lugar tengo una inquietud, se puede combinar el lenguaje c (ccs) y ensamblador?, existen restricciones para hacerlo?, se puede realizar en cualquier momento?, como se trabajan las mismas variables en los dos lenguajes?, de antemano muchas gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jhoshue en 19 Abril 2009, 23:27 pm
HOLA MARCO GRACIAS POR TU COLABORACION PARA LOS QUE ESTAMOS APENAS APRENDIENDO ;-)  LO QUE PASA ES QUE TENGO UN PROBLMILLA CON EL TECLADO DECIMAL NUMERICO QUE NO ME FUNCIONA CON UN PIC 18F4550.. ESTOY HACIENDO UN PROGRMA PARA LA CONFIGURACION POR TECLADO DE UN RELOJ DIGITAL EN TIEMPO REAL Y LA VISULIzACION EN UN LCD GRAFICO PARA QUE SUENE UNA ALRMA EN DETERMINADA HORA....... PERO EL TECLADO NO ME FUNCIONA CUANDO LLEG HASTA LA PARTE DE LA CONFIGURACION .. ESTOY USANDO LAS REISTENCIAS DE PULL UP...Y LO ESTOY USANDO POR EL PUERTO B,.. GRACIAS  POR CUALQUIER AYUDA ME PUEDAS BRINDAR..... ;D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: and_nitro en 24 Abril 2009, 03:23 am
Libro Compilador C Ccs Y Simulador Proteus Para Microcontroladores Pic


http://www.taringa.net/posts/taringa/2425914/Todo-Para-Programar-Pic-en-C-y-Basic.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: consejo en 4 Mayo 2009, 13:28 pm
Agradecerte de antemano el aporte que haces...soy bastante novato...asi que a ver si me puedes ayudar ....descargo el pack 1 ...en rar .. que hago lo quemo...oesun comprimido sin mas.....tambien aparece introducir una contraseña
 :huh: .....(esto esta resuelto and_nitro) ;D ;D
Me he iniciado en esto hace poco ...asi que espero no molestarte mucho :-[
y lo que pretendo es simplificar, es decir usar el programa proteus para diseñar el circuito...otro programa para realizar el programa del pic y por ultimo otro seria para pasar el programa al propio pic ....mas o menos estos son los pasos?
Si digo alguna burrada es por que hace ya años que no ,hago nada en este campo y recuerdo que usaba el mplab para hacer el programa del pic y luego usaba el icprog  junto con el TE20 para programar el pic.... mpara diseñar el circuito usaba el EAGLE
Entiendo que con el contenido de este pack hare lo mismo


gracias  ;D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 4 Mayo 2009, 19:42 pm
IC-porg

http://www.abcdatos.com/tutoriales/tutorial/z9316.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: consejo en 4 Mayo 2009, 20:01 pm
gracias por contestar ...ya tengo el ic-prog .. y ahora un buen tutorial.
Ando buscando un ejemplo desde el principio ..es decir hacer el esquema electrico... de un pic 16f84, para luego realizar su pcb usando ares?...programar en c usando el C ccs y por ultimo pasarlo al pic usando el programador te20 usando el icprog.
Estos serian los pasos a seguir?


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 5 Mayo 2009, 00:08 am
sep,esos son los pasos a seguir.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jfranco en 5 Mayo 2009, 17:45 pm
buenas amigos del foro navegando por la red encontre este tema esta muy bueno yo tambien estoy iniciandome en Cy estoy usando el ccs compiler el proteus ...mi pregunta es la siguiente.estoy usando el pic 16f84A usando como entradas el puerto A  y el puerto b como salidas;en ra0,ra1 y ra2 e colocado un pulsador a cada pin,pulsando cada uno de estos me sale una secuencia  por el  puerto  B...solo me trabaja con la primera secuencia y al apretar el segundo pulsador no funca hasta q termine la secuencia del primero me han dicho que coloque interrupciones alos pulsdores pero no entiendo bien eso aqui va el ejemplo  de lo que estoy haciendo.

#include <16f84a.h>
#use delay(clock=4000000)

void main()
{
set_tris_b(0b11110000);
set_tris_a(0xff);
output_b(0);

while(true)
{

if(input(pin_a0))
{
  output_high(pin_b0);
  output_low(pin_b1);
  output_low(pin_b2);
  delay_ms(3000);
  output_low(pin_b0);
}
if(input(pin_a1))
  {
  output_low(pin_b0);
  output_high(pin_b1);
  output_low(pin_b2);
  }
if(input(pin_a2))
  {
  output_low(pin_b0);
  output_low(pin_b1);
  output_high(pin_b2);
  output_high(pin_b3);
  }
   
} output_low(pin_b0);
  output_low(pin_b1);
  output_high(pin_b2);
  output_high(pin_b3);
  }
}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 5 Mayo 2009, 19:23 pm
hola,aqui te dejo el codigo corregido,chau y suerte. ;)

Código:
#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT,
#use delay(clock=4000000)

void main()
{
set_tris_b(0b11110000);
set_tris_a(0xff);
output_b(0);

while(true)
{

if(!input(pin_a0)) //en esta linea le agregue el signo de admiracion " ! "
{
  output_high(pin_b0);
  output_low(pin_b1);
  output_low(pin_b2);
  output_low(pin_b3); //le agregue esta linea
  delay_ms(500);      //aqui le puse medio segundo para visualizarlo mejor
  output_low(pin_b0);
}
if(!input(pin_a1)) //en esta linea le agregue el signo de admiracion " ! "
  {
  output_low(pin_b0);
  output_high(pin_b1);
  output_low(pin_b2);
  output_low(pin_b3);//le agregue esta linea
  }
if(!input(pin_a2)) //en esta linea le agregue el signo de admiracion " ! "
  {
  output_low(pin_b0);
  output_low(pin_b1);
  output_high(pin_b2);
  output_high(pin_b3);
  }
}
}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jfranco en 6 Mayo 2009, 00:07 am
hola rony22 como estas gracias por responder ... te comento que probe en el proteus el nuevo codigo que me pasastes arranca con el puerto  rb0 encendido  y no me da los cambios con los otros pulsadores .....


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 6 Mayo 2009, 00:28 am
hola que tal jfranco,estas compiladndo este nuevo codigo y metiendolo en el pic en proteus para simularlo?

EDITO: aca te dejo un link donde podras descargar los archivos para q simules tu programa jfranco

http://rapidshare.com/files/229609694/pic16f84a.rar.html


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jfranco en 6 Mayo 2009, 00:43 am
hola rony asi es he hehco una nueva hoja para el codigo que me distes me arranca con rb0 encendido,como puedo subir una imagen al post?gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 6 Mayo 2009, 00:46 am
alli arriba te deje el link donde podras descagar los archivos q yo utilizo y q me simulan bien,si no te funciona avisame


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jfranco en 6 Mayo 2009, 01:03 am
hola amigo rony te doy las gracias por tu interes..abri tu archivo en el ccs compiler version  v4.068 es la que tengo lo compile..no salio error pero al probarlo en el proteus que tengo version 7.2 me sale rb0 encencidido aprieto el pulsador en  ra0  y apaga el led de rb0 y enciende los dos ultimo rb2 rb3 vuelvo a apretar y me enciende rb1  que version tienes tu de proteus porq quize abrir tu archivo de tu carpeta me sale un mensaje y no puede abrirse gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 6 Mayo 2009, 01:12 am
hola jfranco,hagamos una cosa,a mi tambien me paso algo parecido y creo que se debe a que por alguna razon quedan los errores guardados en la simulacion de proteus,lo que vas a hacer es crear el circuito nuevamente en proteus,no utilices el mismo que tienes aorita,asi descartaremos el problema.

otra cosa que vas a hacer es cuando selecciones el pic16f84a en proteus,le vas a dar click derecho encima del pic y le vas a dar a edit properties , luego en donde dice Processor Clock Frequency muchas veces viene con 1MHz , lo vas a cambiar por 4MHz.

y bueno te da error el archivo de proteus .DNS  porq mi version es la 7.4 SP3,un poco mas avanzada que la q tienes y por eso no abre el archivo q te mande


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 6 Mayo 2009, 02:58 am
hola jfranco,aca te dejo otros dos ejemplos que a mi me funcionan tambien,espero te funcionen y cualquier cosa me avisas.

programa 1

#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT,
#use delay(clock=4000000)
#byte porta=5
void main()
{
set_tris_b(0b11110000);
set_tris_a(0xff);
output_b(0);

while(true)
{

if(bit_test(porta,0)==0) //aca pregunto por el bit RA0 de PORTA de otra manera
{
  output_high(pin_b0);
  output_low(pin_b1);
  output_low(pin_b2);
  output_low(pin_b3);
  delay_ms(500);      //aqui le puse medio segundo para visualizarlo mejor
  output_low(pin_b0);
}
if(bit_test(porta,1)==0)
  {
  output_low(pin_b0);
  output_high(pin_b1);
  output_low(pin_b2);
  output_low(pin_b3);
  }
if(bit_test(porta,2)==0)
  {
  output_low(pin_b0);
  output_low(pin_b1);
  output_high(pin_b2);
  output_high(pin_b3);
  }
}
}

fin de programa 1


programa 2

#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT,
#use delay(clock=4000000)

void main()
{
set_tris_b(0b11110000);
set_tris_a(0xff);
output_b(0);

while(true)
{

if(input(pin_a0)==0) //aca pregunto por el pin RA0 de PORTA de otra manera SIN
                               //EL SIGNO DE ADMIRACION q puse en el programa anterior
{
  output_high(pin_b0);
  output_low(pin_b1);
  output_low(pin_b2);
  output_low(pin_b3);
  delay_ms(500);      //aqui le puse medio segundo para visualizarlo mejor
  output_low(pin_b0);
}
if(input(pin_a1)==0)
  {
  output_low(pin_b0);
  output_high(pin_b1);
  output_low(pin_b2);
  output_low(pin_b3);
  }
if(input(pin_a2)==0)
  {
  output_low(pin_b0);
  output_low(pin_b1);
  output_high(pin_b2);
  output_high(pin_b3);
  }
}
}


fin de programa 2

bueno jfranco espero haberte ayudado.

de todas maneras te recomiendo que bajes este manual del compilador de CCS C COMPILER en español

http://www.megaupload.com/?d=M5RIWX0D

y q tambien te descargues este archivo q alli esta un libro que te podra ayudar a empezar y entender muchas cosas

http://www.taringa.net/posts/taringa/2425914/Todo-Para-Programar-Pic-en-C-y-Basic.html

y la clave de este archivo es: and_nitro

espero te ayude colega,cualquier cosa pide ayuda,chau y suerte


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ikariam en 16 Mayo 2009, 01:07 am
compañero aun tengo mi duda lo que pasa es que quiero manejar un servo con el pic 16f877 y con ccs . el material que me recomendaste era para manejar un motor paso a paso que es bastante dsitinto.. espero su ayudaaaa

el servo al qye me rtefiero es un servocontrolador de hitech


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lugo_chile en 27 Mayo 2009, 18:20 pm
Hace al menos una semana he comenzado a interesarme en este tema (estoy llevando acabo un proyecto) ... quiero controlar electrovalvulas con un pic... es decir hacer un programa en c que me controla la PIC y de acuerdo al día y la Hora se active (abran) las electrovalvulas y dejen pasar el agua ciertos minutos, un numero definido de veces y luego se cierren...
Además quiero poder monitoriar y modificar (de ser necesario) dichos horarios a traves de internet...
encontre una tarjeta que incluye un PIC 18F452 y un ENC28J60 para su control via TCP/IP, estoy estudiando sus manales para ver como trabajan estos diminutos cerebros y como funcionan en forma conjunta... deseo ir adelantando en lo que será la programación C y por eso estoy aqui... durante el estudio de mi carrera de Analista estudie y algo hice en C++, espero eso me ayude...

Si alguien me cuanta como seguir o tiene un tutorial que pueda instruirme y guiarme estaría agradecido...

Gracias..


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 28 Mayo 2009, 03:06 am
hola que tal lugo_chile.aca te dejo un post en el cual hay un programa y el circuito en proteus de un programa que muestra la hora y fecha por una pantalla lcd y el codigo esta en lenguaje c,de seguro te sirve de algo.

http://www.ucontrol.com.ar/forosmf/proyectos-con-pic/reloj-tiempo-real-lcd-con-pic16f877a-proteus-ccs-c-compiler/

con lo de controlar la tarjeta que piensas hacer via internet ps no te podre ayudar ya que de eso no se nada,si puedes postea el proyecto que deseas hacer en este foro que te pasare a ver si te sugieren o dan opiniones con respecto a tu proyecto.suerte

http://www.ucontrol.com.ar/forosmf/index.php


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ronny22 en 28 Mayo 2009, 03:18 am
hola ikariam, aca te dejo un post donde hablan sobre los servomotores y como programarlos en lenguaje c.

Algoritmo para controlar hasta 8 servos con una sola interrupción (en C)

http://www.todopic.com.ar/foros/index.php?topic=20335.0%3Bdo=Bookmark


Título: Re: Actualizacion de proteus
Publicado por: Meta en 11 Junio 2009, 01:17 am


Queridos amigos aqui tenemos recien salidito PROTEUS 7.4 SP3
a disfrutarlo.


Cortesia de nuestros amigos del FORO SONSIVRI

Setup:
http://rapidshare.com/files/170201339/Proteus_7.4_Sp3_setup_sonsivri.com.rar

Patch:
Version 6.2
http://rapidshare.com/files/170740810/Proteus_7.4_sp3_patch_6.2_sonsivri.com.rar

Procedimiento:

1) Desinstalar cualquier version de proteus.
2) Instalar la nueva version (tambien la llave)
3) Aplicar el patch (el patch debe estar en la misma carpeta donde se instalo proteus)

Funcionando yo al menos no he tenido ningun contratiempo con ISIS ya llevo simulando 2 dias y no he encontrado ningun bug. ARES todavia no lo pruebo bien.

tambien lo pueden encontrar en el inicio de este post.

Saludos


Hola:

¿Puedes conseguir Proteus más actualizado por casualidad?





Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lugo_chile en 11 Junio 2009, 15:15 pm
ronny22:  gracias... voy a estudiarlo y te aviso...

Respecto al otro foro me inscribire y posteare el proyecto...

Gracis de Nuevo




Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: lugo_chile en 16 Junio 2009, 17:17 pm
Una nueva consulta...

He encontrado diferentes codigos para estudiar... pero veo que como en todos los temas hay diferentes lenguajes...

Esta C, CCS, MikroC, PBasic, Pascal... de los 3 primeros Son lo mismo?

Gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: edivervizcay en 26 Junio 2009, 00:31 am
Buenas soy nuevo en el foro y en programacion en c para pics .

Quisiera saber si alguien puede ayudarme con una dificultad que tengo .

tengo un bootloader que me funciona de maravilla en asm , pero debo reservar de la memoria de programa las direcciones desde 0000 hasta 0003 y unas desde 1AAF hasta 1FFF la ultima parte no tengo problema usando:

#org 0x1AAF, 0x1FFF{}

ya lo  pude hacer , pero aun no puedo lograr que el compilador no me use las tres primeras direcciones y tambien requiero colocar dos instrucciones en esa parte , tambien la idea es recolocar o reorganizar la direccion de inicio del main{}.

agradezco cualquier ayuda.



Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 14 Agosto 2009, 18:18 pm
¿Pueden conseguir este libro aunque sea en inglés?

C# 2008 and .NET Programming for Electronic Engineers

(http://www.elektor.es/Uploads/Cache/2009/5/090513092943.C--2008-300x426.resized.150x0.jpg)

En inglés

Este libro está dirigido a ingenieros y científicos que quieran aprender sobre el entorno .NET y la programación en C# o para los que estén interesados en comunicar hardware con un PC.

 

El libro cubre el entorno de desarrollo Visual Studio 2008, el sistema .NET y en el lenguaje de programación en C# desde de los tipos de datos y los flujos de programa hasta conceptos más avanzados incluyendo la programación orientada a objetos.

 

Continúa con la depuración de programas, el manejo de ficheros, bases de datos, comunicación por Internet y el trazado antes de pasar a comunicarse con el hardware empleando los puertos serie, paralelo y USB. Incluye el diseño del hardware para un osciloscopio sencillo utilizando el puerto paralelo y el manejo de entradas/salidas analógicas y digitales utilizando el puerto USB.

 

Se completa con muchos programas de ejemplo, ejercicios de autoevaluación y referencias a videos de ayuda. Los programas de ejemplo completos están disponibles así como apoyos a profesores universitarios en forma de presentaciones PowerPoint.

Fuente:
http://www.elektor.es/products/books/programming/c-2008-and-.net-programming-for-electronic.264379.951869.lynkx


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: zatman2184 en 4 Septiembre 2009, 18:46 pm
 :rolleyes:
hola mi nombre es francisco, y quiero saber y necesito saber sobre la comunicacion entre pic´s y de las librerias BEAN para control de hardware para un proyecto que estoy haciendo, por favor si tienen algo, haganmelo saber...
muchas gracias y espero su respuesta :laugh:


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ikariam en 17 Octubre 2009, 06:33 am
por favor los que necesiten saber sobre comunicaion sobre radiofrecuencia y todo el codigo y su respectiva explicacion escribir al correo

ikariam.lew@hotmail.es

en menos de 5 horas estare dando respuesta a sus dudas gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: eleazar83 en 2 Noviembre 2009, 03:51 am
Hola Marco_recargado. mira me interesa el programa de:

////////////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//////


y no veo el archivo .dns para simularlo en el proteus. Lo podrias subir porfa.

Bye.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: eleazar83 en 2 Noviembre 2009, 03:54 am
Insertar Cita
Hola Marco_recargado. mira me interesa el programa de:

////////////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//////


y no veo el archivo .dns para simularlo en el proteus. Lo podrias subir porfa.

Bye.


Título: Urgente porfa
Publicado por: Aglaia en 26 Noviembre 2009, 02:37 am
hola pues me ha gusta mucho lo que has subido
Esperaba que tal vez con la experiencia que tienes en pic c me pudieras ayudar con un problemilla que tengo
nose como comparar los puertos por ej q si el puerto a es mayor q el puerto b ponga en 1 el pin b7 o algo asi
he tratado de guardarlo en variables ej int8 variable=input_a() pero aunque compila al simularlo en proteus no hace nada ya queme el pic con el programa pero aun no pasa nada.
Estoy usando ciclos while y el pic q uso es el 16f877a
MIRA aca esta el programa, te agradeceria mucho que lo pudieras revisar me harias un gran favor... saludos

#include <16f877.h>
 #fuses XT, NOWDT, NOPROTECT, PUT, Brownout
 #use delay (clock = 4000000)
 #use fast_io(a)
 #use fast_io(b)
 #use fast_io(c)
 #use fast_io(d)

int8  a1;
int8  b1;
int8  c1;
int8  d1;
 
 // programa
 void main (void)
 
     {
 a1= input_a();
  b1= input_b();
  c1= input_c();
  d1= input_d();
    set_tris_a(0x3f);
    set_tris_b(0x3f);
    set_tris_c(0x3f);
    set_tris_d(0x3f);
while(true)
{
   
     while(a1 != b1)
     {
     
while(a1 < b1)
     {
   output_high(PIN_D7);
   output_low(PIN_D6);
   output_high(PIN_C7);
   output_low(PIN_C6);
     }
    while(a1 > b1)
     {
   output_low(PIN_D7);
   output_high(PIN_D6);
   output_low(PIN_C7);
   output_high(PIN_C6);
     }
     }
 
     do
     {
   output_high(PIN_D6);
   output_low(PIN_D7);
   output_low(PIN_C6);
   output_high(PIN_C7);
   //delay_ms(1000);
 
   
     }
      while(0);
   
       while(c1!= d1)
     {
     
while(c1 < d1)
     {
   output_high(PIN_D7);
   output_low(PIN_D6);
   output_high(PIN_C7);
   output_low(PIN_C6);
     }
     while(c1 > d1)
     {
   output_low(PIN_D7);
   output_high(PIN_D6);
   output_low(PIN_C7);
   output_high(PIN_C6);
     }
     }
   
     do
     {
   output_high(PIN_D6);
   output_low(PIN_D7);
   output_low(PIN_C6);
   output_high(PIN_C7);
   //delay_ms(1000);
 
   
   
     }
      while(0);
   }
}


     


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: trakxe en 4 Diciembre 2009, 21:34 pm
Hola amigo, no se si aun te sirve la informacion como cuentas en tu programa si quieres compara lo que tienes en el  puerto solo ponlo dentro del while(true).
Asi quedaria:

#include <16f877.h>
#fuses XT, NOWDT, NOPROTECT, PUT, Brownout
#use delay (clock = 4000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

int8  a1;
int8  b1;
int8  c1;
int8  d1;
 
 // programa
 void main (void)
 
     {
 
while(true)
{

a1= input_a();
b1= input_b();
c1= input_c();
d1= input_d();
set_tris_a(0x3f);
set_tris_b(0x3f);
set_tris_c(0x3f);
set_tris_d(0x3f);

  
     while(a1 != b1)
     {
    
while(a1 < b1)
     {
   output_high(PIN_D7);
   output_low(PIN_D6);
   output_high(PIN_C7);
   output_low(PIN_C6);
     }
    while(a1 > b1)
     {
   output_low(PIN_D7);
   output_high(PIN_D6);
   output_low(PIN_C7);
   output_high(PIN_C6);
     }
     }
  
     do
     {
   output_high(PIN_D6);
   output_low(PIN_D7);
   output_low(PIN_C6);
   output_high(PIN_C7);
   //delay_ms(1000);
  
  
     }
      while(0);
    
       while(c1!= d1)
     {
    
while(c1 < d1)
     {
   output_high(PIN_D7);
   output_low(PIN_D6);
   output_high(PIN_C7);
   output_low(PIN_C6);
     }
     while(c1 > d1)
     {
   output_low(PIN_D7);
   output_high(PIN_D6);
   output_low(PIN_C7);
   output_high(PIN_C6);
     }
     }
    
     do
     {
   output_high(PIN_D6);
   output_low(PIN_D7);
   output_low(PIN_C6);
   output_high(PIN_C7);
   //delay_ms(1000);
  
    
  
     }
      while(0);
   }
}

Prueba haber como te va... Saludos...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARS1972 en 2 Febrero 2010, 22:37 pm
Necesito el compilador y el proteus si alguien me pudiera orientar como bajarlos, ya que cada que selecciono el vinculo en rapidshare me aparece un error.

Se los agradeceria muchisimo gracias. :huh:


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: MARCO_RECARGADO en 4 Febrero 2010, 21:55 pm
Amigos estan actualizados los programas y subidos a tres servidores para que no haya ningun problema se encuentran en la primera pagina de este post, saludos


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Sourraund en 18 Febrero 2010, 10:47 am
Hay algunas lecciones del post en los que no se pueden ver las imagenes de la simulación en el Proteus, hay algún modo de poder visualizarlas?

Saludos.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Sourraund en 24 Febrero 2010, 11:13 am
Cuando quiero usar un lcd, sea el ejemplo que sea, siempre me sale este error:
"DSIM model LCDALPHA.DLL failed to authorize - Missing or invalid Customer Key"

¿Alguien sabe como puedo solucionarlo?

Saludos y gracias.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: elektronische en 19 Marzo 2010, 03:51 am
Tengo un problema tratando de conectar un teclado de 4x3 a una LCD mediante un PIC 16F877A, no logro hacer que obtenga los datos del teclado, ajunto el código y el diagrama en ISIS, tal vez me puedan ayudar.

#include <16f877a.h>                      //PIC utilizado
#fuses HS,NOWDT,NOPROTECT,NOLVP           //Configuramos los fuses
#use delay (clock=4000000)                //Oscilador a 4Mhz
#INCLUDE "lcd.c"                         //Incluyo LCD.C
#INCLUDE "kbd.c" 


void lcd_mostrar(void);
char a;
#byte PORTD=0xF81
#define use_portb_kbd TRUE

void main(void)
{
   port_b_pullups(TRUE);
   kbd_init();
   lcd_init();
   lcd_mostrar();
}

void lcd_mostrar(void)
{
a=kbd_getc();
lcd_putc(a);

}

(http://img228.imageshack.us/img228/3786/keypad.th.png) (http://img228.imageshack.us/i/keypad.png/)


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: dNnYaU~ en 19 Abril 2010, 02:59 am
Buen día, antes que nada, me agrada este foro, recién lo he encontrado y hay mucha información valiosa gracias a los que se dan el tiempo de ayudar. aunque yo no cuento con suficiente tiempo si me gustaría aportar de lo poco que he hecho con PICs en CCS.
Bueno... por lo pronto quisiera comentarle aqui al colega y para todos aquellos que tengan el mismo problema o simplemente quieran agilizar el tiempo de programación con un LCD, me agradaría adjuntarles una librería que en lo personal no me ha dado problemas.

Así que aquí viene mi primer pregunta:

¿Como adjunto un archivo en este foro para compartir información?  :P
 

Cuando quiero usar un lcd, sea el ejemplo que sea, siempre me sale este error:
"DSIM model LCDALPHA.DLL failed to authorize - Missing or invalid Customer Key"

¿Alguien sabe como puedo solucionarlo?

Saludos y gracias.




Título: problemas com 16f876a(CCS)
Publicado por: tercules en 24 Junio 2010, 19:32 pm
hola amigos quisiera que me den una mano con este codigo cual sera el  problema con el copilador:
codigo:
#include <16F876.H>                     
#fuses HS,XT,NOPUT,NOPROTECT,NOWDT           
#use delay(clock=8M)                         
#include <Flex_lcd.c>                           

#use fast_io(a)                             
#use fast_io(b)
#use fast_io(c

///****   DEFINIMOS NOMBRES A PUERTOS   ****///
#bit CENTENAS  = 0x06.4
#bit UNIDADES  = 0x06.5   
#bit SPEEDUP   = 0x06.6   
#bit SPEEDDOWN = 0x06.7

///****    VARIABLES GLOBALES  ***///
int  contador,stop,Duty,FlagRamp,
     mil,cen,dec,uni,
     uni2,dec2,cen2,mil2;

void reset()
{                                 
 mil=0; dec=0; cen=0; uni=0;                   
 uni2=0; dec2=0; cen2=0; mil2=0;
 contador=0;
 output_b(0x00);
 output_c(0x00);
 output_a(0x00);
 Stop=0;
 FlagRamp=0;
 Duty=0;
 set_pwm1_duty(0);                           //Borra la pantalla LCD
}
///****    FUNCIÓN PANTALLA DE ARRANQUE   ****///
void inicial()                                 
 {
 lcd_gotoxy(2,1); lcd_putc("BOBINADORA 3.0");   
 lcd_gotoxy(2,2); lcd_putc("INOXSTEEL 2009");
 delay_ms(3000);
 lcd_putc("\f");
 }

///****    FUNCIÓN FIN DE BOBINADO   ****///
void Fin()                                 
 {
 int i;
 for (i=0;i<5;i++)
 {
  lcd_putc("\f");
  delay_ms(300);
  lcd_gotoxy(5,1); lcd_putc("BOBINADO");
  lcd_gotoxy(4,2); lcd_putc("FINALIZADO");
  delay_ms(300);
 }
 lcd_putc("\f");
 reset();
 }

///****     INTERRUPCIÓN TIMER0    ****///
///      TIMER0 EN MODO CONTADOR       ///
/// LLEVA EL CONTEO POR SENSOR EXTERNO ///

#int_TIMER0
Void TIMER0_isr(void)                         
 {                                             
 contador=1;
 set_timer0(255);
 clear_interrupt(int_TIMER0);
 }
   
///****           INTERRUPCIÓN RB0           ****///
/// PUESTA EN MARCHA SI HAY CANTIDAD INTRODUCIDA ///

#int_EXT

void Start_isr(void)
  {
   if (uni!=0 || cen!=0)
    {lcd_putc("\f"); Stop=1;}
 
  clear_interrupt(int_EXT);
  }

///****       INTERRUPCIÓN RB4-RB7         ****///
/// TOMA LOS DATOS RECIBIDOS EN LOS PULSADORES ///
///    CENTENAS, UNIDADES, VELOCIDAD + Y -     /// 

#int_RB
Void Pulsadores_isr()
   {
   if (SPEEDUP==1)  if (duty<82) Duty+=4;
   if (SPEEDDOWN==1)if (duty>2) Duty-=4;
   if (CENTENAS==1) cen++;
   if (UNIDADES==1) uni++;
                                     
   if (uni>9) {dec++; uni=0;}             
   if (dec>9) dec=0;                   
   if (cen>9) {mil++; cen=0;}     
   if (mil>9) mil=0; 

   clear_interrupt(int_RB);
   }
 
///****       INTERRUPCIÓN TIMER1          ****///
/// SE ENCARGA DEL ARRANQUE SUAVE DEL MOTOR    ///
/// AL INICIAR EL BOBINADO - DE 0% A 50% VEL.  /// 

#int_TIMER1
Void SoftStart()
   {
    if (stop==1 && Duty<42 && FlagRamp==0)
       {Duty+=2; set_timer1(50000);}
   
    if (Duty==42) FlagRamp=1;
   }

///****FUNCIÓN PRINCIPAL****/// 

Void Main(Void)                               
  {
   int16 speed;
   speed=0;
   
   set_tris_a(0b110000);
   set_tris_b(0b11110001);
   set_tris_c(0b00000000);

   ///**** HABILITACIÓN Y AJUSTE DE INTERRUPCIONES****///
   enable_interrupts(int_EXT);
   enable_interrupts(int_TIMER0);
   enable_interrupts(int_TIMER1);
   enable_interrupts(int_RB);
   enable_interrupts(global);

   ext_int_edge(L_TO_H);
   setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
   setup_timer_2(T2_DIV_BY_16,82,1);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
   setup_ccp1(CCP_PWM);

   clear_interrupt(int_RB);
   clear_interrupt(int_EXT);
   clear_interrupt(int_RTCC);
   clear_interrupt(int_ccp1);

   reset();                                       

   lcd_init();                                       

   inicial();

while (true)
  {
///****BLOQUE PRINCIPAL DE PRESELECCIÓN****///
 
   if (stop==0)
   {
    lcd_gotoxy(1,1);  lcd_putc("INTRODUCE EL N");     
    lcd_gotoxy(15,1); lcd_putc(223);                         
    lcd_gotoxy(1,2);  lcd_putc("DE ESPIRAS");
    lcd_gotoxy(12,2); printf(lcd_putc,"%u",mil);                           
    lcd_gotoxy(13,2); printf(lcd_putc,"%u",cen);   
    lcd_gotoxy(14,2); printf(lcd_putc,"%u",dec);   
    lcd_gotoxy(15,2); printf(lcd_putc,"%u",uni);   
   }

///****BLOQUE EN FUNCIONAMIENTO****///

   if (Stop==1)
   { 
    lcd_gotoxy( 1,1); lcd_putc("BOBINANDO");
    delay_ms(20);
    lcd_gotoxy(11,1); printf(lcd_putc,"V.%03Lu",Speed);
    lcd_gotoxy(16,1); lcd_putc("%");
    lcd_gotoxy( 1,2); lcd_putc("ESPIRAS N");
    lcd_gotoxy(10,2); lcd_putc(223);
    lcd_gotoxy( 1,1); lcd_putc("         ");
    delay_ms(20);
    lcd_gotoxy(12,2); printf(lcd_putc,"%u",mil2);
    lcd_gotoxy(13,2); printf(lcd_putc,"%u",cen2);   
    lcd_gotoxy(14,2); printf(lcd_putc,"%u",dec2);   
    lcd_gotoxy(15,2); printf(lcd_putc,"%u",uni2);   
 
    set_pwm1_duty(duty);              //PWM para control de velocidad

    Speed = Duty;                     //Variable de % de velocidad en pantalla
    Speed = (( Speed * 100) / 82 );

    if (contador==1)                 
    {uni2++; contador=0;}                   
    if (uni2>9) {dec2++; uni2=0;}   
    if (dec2>9) {cen2++; dec2=0;}
    if (cen2>9) {mil2++; cen2=0;}

    if (mil2==mil && dec2==dec &&   
    cen2==cen && uni2==uni) 
   {Stop=0; lcd_putc("\f"); fin();} 
  }
 }
}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: samael.sys en 1 Julio 2010, 22:45 pm
Hola Amigos he probado parte de lo q aki se habla de los PIC, yo estoy usando el 16f877 con algo de lo q aki hay, por el momento solo quiero encender un led, al parcer el programa esta bien; pero cuando lo simulo en proteus no me funciona, aki les dejo el codigo :

//#include "C:\pruebas pic\control_motores.h"
#include <16F877.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES RC                       //Resistor/Capacitor Osc with CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES LVP                      //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#byte port_b=0x06
void main()
{

   port_b_pullups(TRUE);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   
   
   // TODO: USER CODE!!
   set_tris_b (0x00);                  // Declaramos puerto B como salida
   set_tris_a (0x1F);
   port_b=0;
   output_high(PIN_B0);
   //delay_ms (10);             // esperamos 10 ms
}



GRACIAS!!!! :D


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: INVINCIBLE en 10 Julio 2010, 06:49 am
Buenas noches colegillasª!!

Mi pregunta es la siguiente...una vez que tengo compilado el codigo en c en el CCS y me simula ese codigo en el Proteus ...cual es el paso a seguir para poder grabar el contenido a la PIC respectiva suponienod que use la f1684a? Tengo entendido que primero debo generar un .ASM y luego el .HEX ... Por favor espero su gentil respuesta ..

Gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: JCCC en 15 Julio 2010, 23:25 pm
tienes el programa compilando y corriendo...
ya tienes generado el .HEX, con el winpinc800, icprog o cualquier otro programa lo programas (con un programador de PICs) no es necesario el ASM.
posdata: al menos pasate un rato por san google....


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Tokes en 25 Julio 2010, 02:33 am
samael:

He compilado tu código exactamente como lo pusiste y si funciona (al menos en mi máquina).

Es todo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: osmar6 en 5 Agosto 2010, 22:04 pm
hola!! soy nuevo en esto de programar pic C  y me gustaria saber si es posible grabar en el pic con el programa CCS?? disculpen la ignoracia, pero como dije soy nuevo en esto.. desde ya muchas gracias..


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: aliasx en 1 Septiembre 2010, 13:52 pm
Saludos osmar6

no entiendo tu pregunta, si te refieres a que si el compilador tiene alguna herramienta que permita quemar el PIC directamente desde él, pues sí, pero yo nunca lo utilice, siempre trabajo con el winPIC800


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: odrareg33 en 17 Septiembre 2010, 19:39 pm
hola marco.. he e stado prcaticando con las practicas que has puesto y son interesantes gracias por compartirlas. y tambien aprovecho para hacer te un comentario buen o lo k pasa es que trate de compilar el reloj en timepo real y me sale un error y me lo manda en #include <ds1307.c> si me pudieras ayudar a algo k este hacieno. gracias por tus aportes


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: newfag en 19 Septiembre 2010, 16:57 pm
muy buen tutorial, estaba atascado con ésto de los pics per o en una tarde ya me he aclarado de cómo iba, muchisimas gracias!!!


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: pepesolde en 24 Septiembre 2010, 22:04 pm
Hola MARCO_RECARGADO, muchas felicidades por ese tema, me parece un muy buen trabajo.

Yo soy muy principiante y al igual que les pasó a otros hay cosas que se me escapan. He leido que a -Xenon- le enviaste un tutorial para principiantes muy bueno. Me lo podrias mandar a mi también por mail? (es que no se cómo funcionan los mensajes privados).

Mi dirección es: pepesolde@hotmail.com

Espero que no te importe. Un saludo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: hhereje en 4 Octubre 2010, 00:20 am
que tal salu2 para los de este foro ,como se daran cuanta soy nuevo en este foro solo una pregunta se que esta pregunta esta fura del tema del foro pero hay va...alguien sabe como programar el micro MC68HC908GP32 de motorola en code warrior? pues gracias por su atencion....


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: master1030 en 29 Noviembre 2010, 03:58 am
Buenas tardes por favor alguien me puede ayudar con el codigo fuente del i2c para expansores pcf 8574 en lengueje gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: wblasc en 20 Diciembre 2010, 15:18 pm
Hola a todos, soy nuevo, y creo q este es el foro q buscaba, pues esta excelente felicitaciones a los q lo crearon y a tambien a los q contribuyen con sus preguntas y respuesta, me gustaria saber si alguien tiene informacion de como emitir un sonido con un pic de preferencia 16F877A, para ser mas especifico si es posible grabar un mp3 en un pic, bueno me conformo con q haga un BIP ????


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: vetealdemonio en 30 Diciembre 2010, 01:10 am
Hola compañeros agradezco este foro porque me ha motivado a aprender un poco C sobre PIC. He estado mirando un poco los ejemplos y he probado algunas cosas pero mi duda por el momento es algo sencillo quiero que atraves de un pulsador o un switch me active un mensaje en una lcd. Miren parte de mi codigo, considero que esta bien pero no me da nada en la simulacion. les agradezco si me pueden explicar porque no logro hacerlo.

Citar
#include <16F877A.h>
#fuses nowdt,noprotect,nowrt,HS,nobrownout,nolvp,noput

#use delay(clock=8M)

#use fast_io(A)

#byte porta=5
#byte portc=7
#byte portd=8
//#bit portb3 = 0x06.3

#define LCD_ENABLE_PIN  PIN_C5                                    ////
#define LCD_RS_PIN      PIN_C6                                    ////
#define LCD_RW_PIN      PIN_C7                                    ////
#define LCD_DATA4       PIN_D4                                    ////
#define LCD_DATA5       PIN_D5                                    ////
#define LCD_DATA6       PIN_D6                                    ////
#define LCD_DATA7       PIN_D7 

#include <lcd.c>

void main(void)
{
   set_tris_a(0xff);
   if(input(PIN_A0==1))
   {
   lcd_init();
   lcd_putc("Abrir Cofre");
   lcd_putc("\nOpciones");
   }
}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Tokes en 31 Diciembre 2010, 00:14 am
Una pregunta, mi amigo: ¿La librería lcd.c que incluyes es la que viene por defecto con el compilador?

Si es así, para cambiar los pines (enable, rs, rw, etc.) no debes usar #define. Lo que debes hacer es modificar la librería lcd.c.

Esta librería puede operar con el PORTB o con el PORTD. Por defecto es el PORTD. Si quieres utilizar el PORTB debes definir en tu programa principal, antes de incluir la librería, lo siguiente:

#define   use_portb_lcd

Si quieres cambiar la configuración de los pines debes alterar la librería. En ella se declara una estructura que define la posición de los pines de control y de datos del lcd dentro del puerto seleccionado.

Código:
struct lcd_pin_map {                 // This structure is overlayed
           BOOLEAN enable;           // on to an I/O port to gain
           BOOLEAN rs;               // access to the LCD pins.
           BOOLEAN rw;               // The bits are allocated from
           BOOLEAN unused;           // low order up.  ENABLE will
           int     data : 4;         // be pin B0.
        } lcd;

Lo anterior quiere decir que el pin enable ocupa el bit 0 del PORT seleccionado. El pin RS ocupa el bit 1; el pin RW, el bit 2; el bit 3 no se usa, y los bits 4, 5, 6 y 7 son los pines de datos.

Espero haberte ayudado. Hasta la próxima.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: vetealdemonio en 31 Diciembre 2010, 19:52 pm
Gracias Tokes por responderme creo que ya he solucionado mi problema, he modificado mi código ya me sale bien el menú, ahora me toca probarlo con un teclado 4x4. Acerca de tu respuesta es cierto que se puede modificar la librería lcd.c que viene por defecto en el ccs pero también se puede modificar como lo hago en mi código sin necesidad de modificar la librería. En realidad estoy tratando de hacer una cerradura tipo cofre electrónico pero voy al suave aprendiendo poco a poco por eso me gusta probar partes de código para entender completamente. Al final mi código quedo de esta forma mírenlo y denme sus comentarios.

Código:
#include <16F877A.h>

#fuses noprotect,nowdt,noput,nolvp,nowrt,HS

#use delay(clock=8M)

#byte porta = 0x05
#byte portc = 0x07

#define LCD_ENABLE_PIN  PIN_C5                                    ////
#define LCD_RS_PIN      PIN_C6                                    ////
#define LCD_RW_PIN      PIN_C7                                    ////
#define LCD_DATA4       PIN_D4                                    ////
#define LCD_DATA5       PIN_D5                                    ////
#define LCD_DATA6       PIN_D6                                    ////
#define LCD_DATA7       PIN_D7 

#use fast_io(A)
#include <lcd.c>

void mostrar(void)
{
   lcd_putc("\fAbrir Cofre==> A");
   lcd_putc("\nOpciones ==> B"); 
}

void main(void)
{
   set_tris_a(0xff);
   lcd_init();
   lcd_gotoxy(4,1);
   lcd_putc("Bienvenidos");
   lcd_putc("\nPuls Cualq Tecla");
   while(1)
   {
      if(input(PIN_A0)==0){
      delay_ms(200);
      mostrar();
      }
   }
}

PD: Necesito ayuda, me he fijado que el ccs solo trae una librería para un teclado de 3x4. Que puedo modificar para poder usarla con un teclado de 4x4. Si tienen alguna librería o si me dicen como modificar la que viene por defecto se los agradecería mucho.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Tokes en 31 Diciembre 2010, 23:00 pm
vetealdemonio:

La verdad me da flojera revisar la librería del teclado de CCS. Mejor te pongo una que me elaboré para no tener problemas a la hora de modificar.

Código:
/***************** teclado.h ******************/
#byte    PORTA    =  getenv("sfr:PORTA")
#byte    TRISA    =  getenv("sfr:TRISA")

#byte    PORTB    =  getenv("sfr:PORTB")
#byte    TRISB    =  getenv("sfr:TRISB")

#byte    PORTC    =  getenv("sfr:PORTC")
#byte    TRISC    =  getenv("sfr:TRISC")

#byte    PORTD    =  getenv("sfr:PORTD")
#byte    TRISD    =  getenv("sfr:TRISD")

#byte    PORTE    =  getenv("sfr:PORTE")
#byte    TRISE    =  getenv("sfr:TRISE")

/***************************************/
#define  PORT_fila0     PORTC
#define  TRIS_fila0     TRISC
#define  fila0          0

#define  PORT_fila1     PORTC
#define  TRIS_fila1     TRISC
#define  fila1          1

#define  PORT_fila2     PORTC
#define  TRIS_fila2     TRISC
#define  fila2          2

#define  PORT_fila3     PORTC
#define  TRIS_fila3     TRISC
#define  fila3          3

#define  PORT_columna0  PORTC
#define  TRIS_columna0  TRISC
#define  columna0       4

#define  PORT_columna1  PORTC
#define  TRIS_columna1  TRISC
#define  columna1       5

#define  PORT_columna2  PORTC
#define  TRIS_columna2  TRISC
#define  columna2       6

#define  PORT_columna3  PORTC
#define  TRIS_columna3  TRISC
#define  columna3       7

/*************************************************/
#ifdef teclado_activoalto
   #define  es_activo(r,b)    bit_test(r,b)
   #define  activar(r,b)      bit_set(r,b)
   #define  desactivar(r,b)   bit_clear(r,b)
#else
#ifdef teclado_activobajo
   #define  es_activo(r,b)    !bit_test(r,b)
   #define  activar(r,b)      bit_clear(r,b)
   #define  desactivar(r,b)   bit_set(r,b)
#else
   #error "Debe declarar la lógica del teclado: activo alto o activo bajo"
#endif
#endif

/***************************************************/
void teclado_inicializa(void)
{
   // Inicializa los latches de salida para las filas.
   activar(PORT_fila0,fila0);
   activar(PORT_fila1,fila1);
   activar(PORT_fila2,fila2);
   activar(PORT_fila3,fila3);
  
   // Configura las filas como salidas.
   bit_clear(TRIS_fila0,fila0);
   bit_clear(TRIS_fila1,fila1);
   bit_clear(TRIS_fila2,fila2);
   bit_clear(TRIS_fila3,fila3);
  
   // Configura las columnas como entradas
   bit_set(TRIS_columna0,columna0);
   bit_set(TRIS_columna1,columna1);
   bit_set(TRIS_columna2,columna2);
   bit_set(TRIS_columna3,columna3);
}

void teclado_activafilas(void)
{
   activar(PORT_fila0,fila0);
   activar(PORT_fila1,fila1);
   activar(PORT_fila2,fila2);
   activar(PORT_fila3,fila3);
}

int8 teclado_examinacolumnas(void)
{
   if(es_activo(PORT_columna0,columna0)) return 0;
   if(es_activo(PORT_columna1,columna1)) return 1;
   if(es_activo(PORT_columna2,columna2)) return 2;
   if(es_activo(PORT_columna3,columna3)) return 3;
   return 4;
}

char teclado_lee(void)
{
   const char teclas[16]={'0', '1', '2', '3',
                          '4', '5', '6', '7',
                          '8', '9', 'A', 'B',
                          'C', 'D', 'E', 'F'};
   int8 i;
  
   teclado_activafilas();
   for(i=0; i<20; i++)
   {
      if(teclado_examinacolumnas()>3) return 0;
      delay_ms(1);
   }
  
   desactivar(PORT_fila3,fila3);
   desactivar(PORT_fila2,fila2);
   desactivar(PORT_fila1,fila1);
  
   if((i=teclado_examinacolumnas())<4) return(teclas[i]);
  
   desactivar(PORT_fila0,fila0);
   activar(PORT_fila1,fila1);
   if((i=teclado_examinacolumnas())<4) return(teclas[i+4]);
  
   desactivar(PORT_fila1,fila1);
   activar(PORT_fila2,fila2);
   if((i=teclado_examinacolumnas())<4) return(teclas[i+8]);
  
   desactivar(PORT_fila2,fila2);
   activar(PORT_fila3,fila3);
   if((i=teclado_examinacolumnas())<4) return(teclas[i+12]);
  
   desactivar(PORT_fila3,fila3);
   return 0;
}

void teclado_esperalibere(void)
{
   teclado_activafilas();
   while(teclado_examinacolumnas()<4);
}

Antes de incluir la librería debes declarar:

Código:
#use delay(clock=xxxx)

También debes declarar previamente la lógica del teclado, por ejemplo:

Código:
#define   teclado_activoalto

o el otro caso:

Código:
#define   teclado_activobajo

Si en las columnas colocas resistencias de pullup (hacia Vcc) la lógica debe ser activo bajo. Si en las columnas colocas resistencias de pulldown (hacia GND) la lógica debe ser activo alto.

Todas y cada una de las filas y columnas son colocables en cualquier terminal de cualquier puerto.

Así, si colocas la fila 0 del teclado en la terminal RA5, la declaración debe quedar así:

Código:
#define   PORT_fila0    PORTA
#define   TRIS_fila0   TRISA
#define   fila0      5

Para leer una tecla debes invocar a la función teclado_lee(). Esta función retornará un 0 binario (caracter nulo) si no hay tecla pulsada. En caso contrario retornará el código ASCII de la tecla pulsada.

Debes invocar la función teclado_esperalibere() para esperar que se libere la tecla y evitar leer varias veces la misma tecla.

Te dejo el siguiente programa de ejemplo:

Código:
#include "16f877a.h"
#use     delay(clock=20M)
#define  teclado_activobajo
#include "teclado.h"
#define  use_portb_lcd
#include "lcd.c"

int main(void)
{
   char tecla;
   
   teclado_inicializa();
   lcd_init();
   
   while(1)
   {
      if(tecla=teclado_lee())
      {
         lcd_putc(tecla);
         teclado_esperalibere();
      }
   }
}
Nos vemos...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: krader en 27 Enero 2011, 17:57 pm
Creo que me he equivocado y he puesto este mensage en el general de este for, cuando el sitio bueno sería este ya que trata de programación PIC C en CCS, si es así pido disculpas y si los moderadores creen conveniente que lo eliminen. Les propongo mi problema:

Hola a todos, soy nuevo en el foro pero os he leido mucho y he sacado buenas ideas de aquí. Ahora estoy haciendo un proyecto y me surge una duda:
Consiste en un medidor de velocidad, para ello tengo un sensor que manda un '1' cada vez que la rueda da una vuelta completa. Para saber la velocidad de la rueda necesito saber el tiempo que para entre dos '1' (es decir, una vuelta) pero no se cómo hacerlo. Mi primera idea es que cuande me de un '1' salte una interrupción y un contador se incremente. Al haber otro '1' volverá a saltar la interrupción y ese contador tendrña valor 2. Ahora necesito saber el tiempo que ha pasado entre ambas interrupciones para hacer los calculos de velocidad.
Espero que me puedan ayudar, Ah! es con una PIC 16F88 y en CCS!

Muchas gracias.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 28 Enero 2011, 01:56 am
Mira, tiene facil solución, espero que entienda el planteamiento.

Primero de todo, utiliza la libreria delay.h o create tu propia rutina de retardo con un tiempo que conozcas, por ejemplo de 1 segundo. Entonces mete la rutina del tiempo que cada segundo incremente una variable, dentro de un while que verifique que una variable no sea uno. Cuando sea uno haz que salga del while y cuenta cuanto a sumado el contador que se incrementa con el delay, sabras que cada incremento es de 1 segundo.

Te pongo aquí codigo para que te hagas una idea, lo programo aquí directamente:

int cont;
int sensor;

Void Interrupt_XX()
{
// Rutina de interrupción, para saber que salta interrupción
sensor = 1;
}

Void delay (void)
{
// Rutina de retardo, por ej 2 o 3 bucles anidados que sumen tiempo
}

Void main{
   while sensor=0 {
   delay();
   cont ++;
   }
sensor = 0;
}

Fijate que cont  se va incrementando (+1 segundo si delay es de 1 segundo) hasta que la variable sensor es 1, para ello ya tendras el tiempo contado en cont que es lo que necesitas. Espero que te aclares con el codigo y cojas la idea.

Por otro lado, porías utilizar los TMRx del pic, pero bueno, con que te crees tu propia funcion Delay() o utilizes delay.h ya bastará.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: krader en 29 Enero 2011, 14:52 pm
Mira, tiene facil solución, espero que entienda el planteamiento.

Primero de todo, utiliza la libreria delay.h o create tu propia rutina de retardo con un tiempo que conozcas, por ejemplo de 1 segundo. Entonces mete la rutina del tiempo que cada segundo incremente una variable, dentro de un while que verifique que una variable no sea uno. Cuando sea uno haz que salga del while y cuenta cuanto a sumado el contador que se incrementa con el delay, sabras que cada incremento es de 1 segundo.

Te pongo aquí codigo para que te hagas una idea, lo programo aquí directamente:

int cont;
int sensor;

Void Interrupt_XX()
{
// Rutina de interrupción, para saber que salta interrupción
sensor = 1;
}

Void delay (void)
{
// Rutina de retardo, por ej 2 o 3 bucles anidados que sumen tiempo
}

Void main{
   while sensor=0 {
   delay();
   cont ++;
   }
sensor = 0;
}

Fijate que cont  se va incrementando (+1 segundo si delay es de 1 segundo) hasta que la variable sensor es 1, para ello ya tendras el tiempo contado en cont que es lo que necesitas. Espero que te aclares con el codigo y cojas la idea.

Por otro lado, porías utilizar los TMRx del pic, pero bueno, con que te crees tu propia funcion Delay() o utilizes delay.h ya bastará.

Gracias, es algo en que no había pensado. No me sirve del todo porque el programa hace más cosas a parte de calcular la velocidad y no puede estar el micro pillado esperando la salida del while en el caso de que la rueda no se mueva, pero me ha dado una idea que creo que me servirá. Llevo bastante tiempo usando pic para cosas sencillas, pero nunca nadie me ha enseñado y los TMR es algo que no comprendo, pero poco a poco.

de todas formas como me lié y repeti el post, pongo aqui el enlace al otro para dejar este libre y que no sea un lio. http://foro.elhacker.net/electronica/saber_el_tiempo_transcurrido_entre_interrupciones-t317969.0.html
 Gracias amigo!


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ezquerra_makina en 14 Abril 2011, 15:04 pm
Hola, tengo que pasar varias practicas de ensamblador a C y estoy lleno de dudas. el codigo en ensamblador si que lo tengo pero no sé muy bien como pasarlo...si me pudieseis ayudar, os dejo aquí el programa...

;*************************************************************************
;      TEMA_2.ASM
; Lector de datos digitales. El sistema visualizar  en el PORTD los datos
; digitales que se presenten mediante 8 interruptores en el PORTB. Estos
; datos se visualizar n si el bit menos significativo del PortA
; se encuentra activado, en caso contrario se apagar n todos los LEDs. 
;*************************************************************************

   LIST   P=16F877A   ; PIC16F877A microcontrolador utilizado

   INCLUDE   "P16F877A.INC"   


; Registros particulares del programa
TMP1   equ   0x20

; Constantes
W   equ      0
F   equ      1

;*************************************************************************
;      INICIO DEL PROGRAMA
;*************************************************************************
   org   00
   GOTO   START       ; Posición comienzo programa para                       simulador
   org      04
   GOTO   INT      ; Posici n comienzo interrupciones
   GOTO   START      ; Posici n comienzo programa para grabar

;*************************************************************************
;      INTERRUPCIONES
;*************************************************************************
INT:
   RETFIE            ; Fin de la interrupci n

;*************************************************************************
;      PROGRAMA PRINCIPAL
;*************************************************************************

START
   CLRF   INTCON      ; Eliminar posibles interrupciones
   BCF      STATUS,RP0   ; Banco 0 (asegurar)
   BCF      STATUS,RP1   ;
   
; Inicializaci n de puertos
   BSF      STATUS,RP0   ; Banco 1
   MOVLW   B'00111111'
   MOVWF   TRISA&7F   ; A5-A0 entrada
   MOVLW   B'00000111'
   MOVWF   ADCON1&7F   ; Puerto A digital
   MOVLW   B'11111111'
   MOVWF   TRISB&7F   ; B7-B0 entrada
   MOVLW   B'10111111'
   MOVWF   TRISC&7F   ; C5-C0 entrada, C7 y C6 reservados l nea serie
   MOVLW   B'00000000'
   MOVWF   TRISD&7F   ; D7-D0 salida
   MOVLW   B'00000000'
   MOVWF   TRISE&7F   ; E2-E0 salida
   BCF      STATUS,RP0   ; Banco 0

;*************************************************************************
;      BUCLE DEL PROGRAMA
;*************************************************************************

BUCLE

   MOVF   PORTA,W      ; Leer PORTA al acumulador
   MOVF   PORTC,W      ; Leer PORTB al acumulador
   MOVLW   B'10101100'

   BTFSS   PORTA,2      ; Test PORTA2
   GOTO    LEER_PORTC
   MOVLW   B'10101010'   ; Cargar dato inmediato al acumulador
   GOTO    ESCRIBIR_PORTC


LEER_PORTC:
   MOVF   PORTC,W      ; Leer PORTC al acumulador

ESCRIBIR_PORTC:
   MOVWF   PORTD      ; Escribir en PORTD

   GOTO   BUCLE
   
   NOP
   NOP
   NOP
   end



Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: tazmahv en 3 Mayo 2011, 10:13 am
hola mi pregunta es la siguiente como y que tengo que usar para empezar com la programacion de pics  por que leo y leo y mas me lio


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: andres_5 en 4 Mayo 2011, 00:16 am
Hola, encontre hace tiempo un blog de un hombre que explica bastante bien la forma de programar en C los pics, espero que te sirva de ayuda.
http://juan-ruiz-cespedes.over-blog.es/article-programacion-en-lenguaje-c-de-microcontroladores-65130649.html (http://juan-ruiz-cespedes.over-blog.es/article-programacion-en-lenguaje-c-de-microcontroladores-65130649.html)
Te adjunto tambien un video de un proyecto muy completo que vi hace 2 semanas y me gusto mucho:
tIKFdNMq9Cg

Saludos.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: tazmahv en 4 Mayo 2011, 00:41 am
Hola, encontre hace tiempo un blog de un hombre que explica bastante bien la forma de programar en C los pics, espero que te sirva de ayuda.
http://juan-ruiz-cespedes.over-blog.es/article-programacion-en-lenguaje-c-de-microcontroladores-65130649.html (http://juan-ruiz-cespedes.over-blog.es/article-programacion-en-lenguaje-c-de-microcontroladores-65130649.html)
Te adjunto tambien un video de un proyecto muy completo que vi hace 2 semanas y me gusto mucho:
tIKFdNMq9Cg

Saludos.

gracias me pondre a estudirarlo


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: tazmahv en 4 Mayo 2011, 18:28 pm
hola que es mas facil para uno que empieza en esta programar en c o en asm


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: andres_5 en 4 Mayo 2011, 20:52 pm
Ensamblador es mejor y vas a tener un control de 100% de tu pic, sin embargo en C creo que es mas facil de programar, Yo solo he programado en C, ASM no se programar, sin embargo Emsamblador orientado a MIPS es mas facil que el normal (Ese si he visto un poco) eso depende de las caracteristicas de tu microcontrolador (actualmente en esos campos estoy desinformado)

Saludos.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 5 Mayo 2011, 00:34 am
Exacto, ASM es mejor y no por complejidad sinó porque entenderás mejor el funcionamiento del microcontrolador. Una vez sepas ASM si sabes algo de C no te costará nada y veras inclúso que es muchísimo mas sencillo y te ahórras muchas lineas de codigo,

Citar
Emsamblador orientado a MIPS es mas facil que el normal (Ese si he visto un poco) eso depende de las caracteristicas de tu microcontrolador (actualmente en esos campos estoy desinformado)

Por cierto, el ASM de los microcontroladores es el de 16 bits, el de PC 32 bits, por eso se ve diferente  :xD, eso si el microprocesador del PC también se puede programar a 16 bits, yo lo hecho aunque queda bastante limitado.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: mettroid2006 en 6 Mayo 2011, 15:52 pm
Hola a todos, soy miembro nuevo de esta página y quiero preguntarle a marco_recargado, de su "Practica 5 leyendo reloj de tiempo real DS1307 y escribir en display de 7 segmentos" si tendrá la simulación en Proteus. Ya que apenas le estoy entendiendo a CCS y Proteus me interesa ese proyecto. Espero que lo tengo o si alguno lo compartiera conmigo se los agradecería mucho. Espero respuesta y que sigan aportando a este tema que esta interesante


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 6 Mayo 2011, 16:31 pm
Siento decirte que Marco no se pasa por aquí desde hace casi 1 año. Así que no creo que pueda pasartelo  :laugh:

El montaje en proteus no es nada complicado, de hecho se puede conectar directamente un display 7 segmentos en un puerto del PIC teniendo en cuenta poner una resistencia de 230 a 330 ohms aprox para cada segmento.

De todas formas, mejor utiliza un decodificador para display de 7 segmentos, así solo usarás 4 pines de un puerto ya que hace la salida directamente al display de 7 seg poniendo el número en binario por sus entradas.

El programa dependerá en que puerto lo conectes, pero es algo muy simple, simplemente utiliza los 4 pines del PIC que van al decodificador para sacar los 9 números en binario.



Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: mettroid2006 en 6 Mayo 2011, 17:31 pm
Gracias skapunky por tu pronta respuesta, y pues que malo que ya no este marco_recargado para ayudarnos. Voy hacer caso a lo que me dices y este fin de semana lo pruebo si es que no me sale algún compromiso, y si me salen mas dudas aquí estaré para molestar de nuevo ok. Gracias por tu ayuda!!!

Estuve probando el programa y al compilar me dice que en

ds1307_init() debe de tener una expresión numérica en los ()

Y en esta parte

sec=bin2bcd(sec);      Undefined identifier
min=bin2bcd(min);     y parpadea en el (
hrs=bin2bcd(hrs);

Si pudieran ayudarme con esto por favor porque apenas empiezo y no entiendo muchas cosas.  Gracias y voy a seguir intentando a ver si tengo suerte jeje.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: add en 16 Mayo 2011, 16:20 pm
buen dia, a todos los forista y al moderardor, soy nuevo en esto de la programacion de pic con lenguaje c aunque tengo un conocimiento basico sobre el lenguaje, ahorita tengo un dilema, tengo que hacer una programa donde se requiere bucles if anidados debido a que son muchas las condiciones de se tiene que chequear, ya e intentado varias formas pero ninguna me da, quisiera saber si me pueden ayudar con respecto a esto, mas o menos le explico lo que quiero hacer
       la idea es de un panel didactico compuesto por botones de incio y fin que al ser presionados (un boton de inicio y otro de fin)tiene que cumplir con ciertas condiciones como la de sensar estados de dispositivos, de notores y al final encender una serie de led.....
 ya se la parte basica que es la declaracion del clock, de la libreria entre otras cosas pero de verdad estoyb algo embotado por eso acudo a este foro. de antemano gracias a todos


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: tazmahv en 7 Junio 2011, 18:15 pm
hola como puedo modificar el codigo que tengo es en ccs quiero cambiar el nº del movil al que tiene que mandar la llamada
tendria que modificarlo con el pc c compiler pero nose como


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: futura_ma en 10 Junio 2011, 02:08 am
hola,soy nuevo en este foro,
Tengo una duda programando un PIC, con lenguaje C: estoy intentando programar una secuencia de leds con el PIC16F628A, quiero dar 4 funciones o mas a un pusador ,por ejemplo al apretar una ves encer 1 led , al apretarlo nuevamente encender 2 led ..y asi sucecivamente, lo que hecho hasta ahora, prender y apagar con un pulsador.


porfavor alguien me podria orientar



Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: novitec en 24 Junio 2011, 03:42 am
hola a todos soy nuevo en esto de la programacion de pics en c y
quisiera saber si me podrian ayudar a crear un programa para controlar una pantalla lcd apartir de unos sensores if en la entrada y me de un mensaje determinado
ademas quiero utilizar un sensor ultrasonico sfr05 para visualisar en la pantalla a que distancia esta el obstaculo y dar una señal para eskibarlo


xfavor es urgente para un proyecto escolar


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: faberfree en 13 Julio 2011, 00:02 am
hola muy interesante tus programas
yo tambien recien mi inicio en este mundo de programar en c

quisiera q me ayudes a configurar los puertos sobre todo de entrada que se me hace mas dificil  del pic 16f877 con el programa MPLAB ide 8.3 es el q uso para compilar

osea lo que quiero saber que tengo q poner en la parte de configuracion de puertos E/s por ejemplo para que activando con un  swhit pongo a 1 en el pin_0 del puertoA me haga una accion en el puertoB q va ser mi salida,

 yo me he quedado aqui: nose q mas poner para declar a puertoA como entrada y a su ves decirle q lea el valor del pin_0A

//esta parte es solo la configuracion del los puertos de mi programa
void Mcu_Init(void){
__CONFIG(0x3B71);
TRISB=0x00;
PORTB=0x00;

TRISA=0X03;//aqui solo estoy indicando q el bit A0 y A1 de puertoA son de entrada estara bien asi??

PORTA=0x00;//y esto es creo el valor por defecto q se les pone verdad?

    //que pongo aqui?,tengo q declarar tambien los pines del puertoA para que me     puedal leer un pin en especial ejmplo pin_0A ?

//y sitambien tengo q poner algo mas en la cabecera del programa?

ei();
}

te lo agradeceria un monton





Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: erolpic en 30 Agosto 2011, 17:40 pm
Querido colega me ha gustado mucho tu trabajo he aprendido mucho de ti y espero que sigas desarrollando mucho mas, desde España y mi oficina te damos ánimos ha seguir como hasta ahora todo mi equipo.

Un fuerte abrazo Rafa


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Danes406 en 30 Agosto 2011, 18:58 pm
Pregunta en la parte de conversion ADC como puedo restar bits antes de que se impriman en el puesto b ejmplo. si quiero que se imprima desde el 26 hasta el 255 hablando en binario.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Danes406 en 30 Agosto 2011, 19:16 pm
gracias por contestar Ivanchuk. en algun momento senti que en este tema ya nadie entraba por eso recurriel mesajito. Pues antes de este mensaje esta mi problematica no  c si me explique.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jucemoar en 26 Octubre 2011, 07:04 am
[hola marco...

es posible de queme envies el archivo en proteus estoy aprendiendo lenguage C y quisiera hacer  este  reloj esque no entiendo mucho lo de las conexiones graciasatte jucemoar


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: parotin en 7 Noviembre 2011, 13:10 pm
Hola amigos.
Yo también soy bastante nuevo en esto de los pics.
Me compré un pickit2 de microchip, y estuve jugando con él en el entorno mplap, utilizando assembler.
Ahora queria empezar a utilizar C. para ello conseguí PICC de CCS. Funciona bien, me compila y todo eso. Mi problema es que el micro no hace nada de nada >:(
Creo que el problema tiene relación con el oscilador interno (que quiero usar)
Alguien podria decirme que le parece mi código? quizá tengo alguna cosa descabellada pero que yo no veo?
Ahí va el código. Muchas gracias por adelantado.

/////////////////////////////////////////////////////////////////////////
////   primer programa en c       ////
////                           ////
/////////////////////////////////////////////////////////////////////////



#include <16f690.h>

#fuses NOWDT, INTRC_IO, NOPROTECT

#use delay(internal=4000000)

#use fast_io (C)





void main()
   {

set_tris_c(0x00);
 while(1){
   
   output_low (PIN_C0);
   delay_ms (1000);
   output_low (PIN_C1);
   delay_ms (1000);
   output_high (PIN_C0);
   delay_ms (1000);
   output_high (PIN_C1);

      }
   }

Nota: he provado con use delay(clock=4000000) y lo mismo...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: parotin en 7 Noviembre 2011, 13:56 pm
Hola de nuevo.
Parece que el programa funciona. Lo he simulado con proteus y va bien. Si monto el PIC en una protoboard, también funciona.

Parece que el problema tiene relación con el programador...

Perdonen las molestias.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: alvixari en 10 Noviembre 2011, 18:49 pm
hola, tengo un problema con pic c compiler, resulta que estoy haciendo los programas de un libro los cuales se q funcionan por los he simulado en proteus despues de descargarlos de la internet, pero si yo los llego a compilar en mi pc dejan de funcionar, al igual q los programas q yo realizo, me he dado cuenta q al parecer solo son los programas q usan display lcd, esto a q se puede deber, me tocara habilitar algun tipo de funcion en el pic c compiler, ayudaaa!!!! GRACIAS...


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: NOVATO2012 en 15 Enero 2012, 18:05 pm
AMIGOS AYUDAAAAAA, soy nuevo en esto de la programacion y mas en ccs necestgio ayuda para hacer girar 90° a la derecha un carro con dos motores de 12v CD..... luego q se dirija al frente y con 4 detectores de linea no debe pisar una linea blanca en el piso se debe detener al detectarla.....y con un sensor de distancia debe detectar a un adversario al frente....es el robot de sumo....AYUDENME AMIGOS NO SE NADA DE ESTE LENGUAJE NI COMO PROGRAMARLO AYUDENME ES CON PIC 16F876A EN CCS GRACIASSSS


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: jose luis roldan en 4 Febrero 2012, 06:24 am
gracias marko por las practicas
yo actuamente estare dando la materia de programacion de pic
y tus practicas se ven muy interesantes
aunke ya tiene un buen k no hago esto pero estudiare y tambien pondre las practicas con las que cuento
estamos en contacto


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: OGEID_DNA en 16 Febrero 2012, 00:02 am
HOLA MARCO_RECARGADO
SOY NOVATO EN ESO DE LA PROGRAMACION EN C Y AL REVISAR EL FORO LEI QUE TU TENIAS UN BUEN TUTORIAL PARA APRENDER ESTA PROGRAMACION Y DESIASSSSSS ESTO
l 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.

NO SE  SI ES UNA MOLESTIA PERO TE PIDO UN GRAN FAVOR
ESTOY MUY INTERESADO EN ESE LINK DEL QUE COMENTASTE Y SI NO ES MUCHA MOLESTIA ME LO PUEDES PASAR MI CORREO ES ogeid_dna@hotmail.com
porfa.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: 02arca14 en 1 Marzo 2012, 22:39 pm
´no se usar muy bien pic c pero ise un prpgrama de para un seguidor de luz con el pic es el siguiente es necesario declarar los fuses?

#include <16F84A.h>
#use delay (clock=4M)

 void main()
{

  while (true)
 {
           //  0   Y     1          Y      0
    if (!input (pin_b0) && !input(pin_b1)&& !input(pin_b2)){
     output_low(pin_a0);
     output_low(pin_a1);
   }
   if (!input (pin_b0)&& input(pin_b2)&& !input(pin_b1)){
      output_low(pin_a0);
      output_high(pin_a1);
   }
   if (!input (pin_b0)&&!input(pin_b2)&&input(pin_b1)){
       output_high(pin_a0);
       output_high(pin_a1);
   }
   if (input (pin_b2)&& input(pin_b1)&&!input(pin_b0)){
       output_low(pin_a0);
       output_high(pin_a1);
   }
   if (!input(pin_b1)&&!input(pin_b2)&&input(pin_b0)){
       output_high(pin_a0);
       output_low(pin_a1);
   }
   if (input (pin_b2)&&input(pin_b0)&&!input(pin_b1)){
       output_low(pin_a0);
       output_low(pin_a1);
     }
   if (input (pin_b0)&&input (pin_b1)&&!input(pin_b2)){
       output_high(pin_a0);
       output_low(pin_a1);
   }
   if (input (pin_b0)&&input(pin_b1)&&input(pin_b2)){
   output_high(pin_a1);
   output_high(pin_a0);
   }
 }
}


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 2 Marzo 2012, 00:53 am
Si lo programaste con CCS utilizando el wizard...no hace falta, porque te linkea a un archivo externo que forma parte del proyecto con los fuzes declarados.

El codigo que has puesto tu...no tiene ese include, en tu caso si los necesitas.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: Meta en 18 Marzo 2012, 13:43 pm
Hola:

¿Hay enlaces sobre CCS para bajarlo?

Bajé la Demo y nay nay.

Es para hacer pruebas con la entrenadora que compré,

Ver análisis personal. (http://electronica-pic.blogspot.com.es/2012/03/review-usb-picschool-2010-primera.html)

Saludo.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: zulay en 31 Marzo 2012, 18:35 pm
hola alguien me puede decir para que sirve la isntruccion byte, ejemplo:
byte  x,y,z;
y para que sirve #FUSES XT, NOWDT, NOPROTECT, NOPUT

soy nuevo en esto
gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: skapunky en 2 Abril 2012, 16:55 pm
La instrucción byte es la declaración de variable tipo byte, en este caso en lenguace C, fijate:

int variable1;
byte variable2;

Lo segundo que comentas:

Citar
#FUSES XT, NOWDT, NOPROTECT, NOPUT

Són los fuzes de configuración del PIC, en este caso esta declaración es para el compilador CCS, por ejemplo el NOWTD deshabilitas el watchdog...hay varios y simplemente es mirar lo que hace cada uno. En el caso del MPLAB se declaran mediante la directiva "PRAGMA".


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: 02arca14 en 16 Abril 2012, 19:03 pm
tengo duda sobre las banderas en pic c como utilizarlas
me pueden ayudar ::)


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: crva07 en 22 Mayo 2012, 08:25 am
Hola Marco..  este foro a sido el mejor que he visitado..  Necesito que me ayudes en un proyecto..  talves tengas algun codigo con el cual hayas hecho comuniacion I2C.. necesito leer los datos de un Acelerometro mma7660.. con el pic 16F877A. y mostrarlos en un lCD.. [ el acelerometro viene en un modulo ya soladado con resistencia y capacitores, los pines son (INT, SCL, SDA, VCC, GND).].....     intento hacer la comunicacion del Pic-Acelerometro.. pero no obtengo resultados..  ojala me pudieras ayudar..  te agradeceria un mundo 


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: ingtasco en 25 Mayo 2012, 18:45 pm
Buen dia mi nombre es alvaro y esto empezando en esto de los PIC, espero aportar algo de conocimiento ya que estoy terminando mi carrera como Ingeniero Electrónico.. Suena raro que ya culminando la carrera apenas vaya a empezar a trabajar con PIC. La respuesta es que en la U poco se enfocan a esta área, a pesar que es muy importante. Pero weno pa eso estamos acá  para aprender mas y mas y ser reciproco con el conocimiento.

Quisiera empezar preguntando : ¿Por donde empezar a trabajar con CCS? , ¿Arrancando con el Wizard o desde codigo 0?


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: mecatronico en 30 Junio 2012, 01:50 am
olas a todos que tal me parece muy interesante este foro ya que puedes compartir muxas ideas y cosas mas weno io queria contar y preguntar a la vez es que io hice una tarea en mi univ de un controlador de velocidad de un motor dc la velocidad es vista en un lcd y mi velocidad de referencia la escojo con un potenciometro ,mediante el pic16f876A corrijo el error  ante  una perturbacion en el eje mediante un pid programado en el pic weno el trabjo si me flipa pero mi problem es que mi valor de refencia que me aparece en el lcd de mi trabajo no es igual ami valor de salida de mi lcd mm y no se si seran los parametros de mi motor que esten mal o sera mis valores kp ki kd habe si alguien me dice alguito de como corregir esto pls mayor inf les puedo pasar mi simulacion en proteus si entienden mi idea gracias ahi les va el programa de formacion del pid.

#include <16F876A.h>
#device adc=10
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG             
     //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=20000000)
#include <lcd.c>
#define  factor   3000/1023
#define  f2       0.23
#use fast_io(a)
#use fast_io(c)
#use fast_io(b)

float rpm,vel_m;
int   cont_t0;
int16 vel,vref,duty,aux;
signed long duty_c,uk_int;
float uk,uk_1,ek,ek_1,ek_2,f_vref;
int Kp,Ki,Kd;

void set_pwm1_dc(unsigned long duty_pwm);

#int_TIMER0
void TIMER0_isr()
{
   set_timer0(61);      // para contar 10 ms
   cont_t0++;
   if(cont_t0==10)
   {
      cont_t0=0;
      vel=get_timer1();   // contamos cuanros pulsos pasaron
      vel=vel*6;        // son 100 pulsos por revolucion
                        // asi obtenemos en revoluciones cada 100 milisegundos
                        // vel = #p/deci * 1rev/100p * 10 deci/1 seg * 60 seg/min
                        // vel esta en rpm
      lcd_gotoxy(9,2);
      printf(lcd_putc,"Vm=%Lu",vel);
      set_timer1(0);
   }
}

void main()
{
   set_tris_a(0xff);
   
   setup_adc(ADC_CLOCK_DIV_8);
   
   setup_adc_ports(AN0);
   set_adc_channel(0);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
   setup_timer_2(T2_DIV_BY_4,0XFF,4);
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(0);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   set_timer0(61);
   set_timer1(0);
   clear_interrupt(INT_TIMER0);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   
   set_tris_c(0b11111011);
   set_tris_b(0);
   output_b(0);
   lcd_init();
   set_pwm1_dc(700);
   lcd_putc("   CONTROL PID\n");
   delay_ms(1000);
   output_b(0);
   
   uk=0;
   uk_1=0;
   ek=0;
   ek_1=0;
   ek_2=0;
   
   Kp=10;
   Ki=10;
   Kd=5;
   for(;;)
   {
      aux=read_adc();
      if(aux!=vref)
      {
         vref=aux;
         f_vref=vref;
         rpm=vref*factor;
         lcd_gotoxy(1,2);
         printf(lcd_putc,"Vr=%4.0f",rpm);     
      }
      vel_m=vel;
      ek=rpm-vel_m;
     
      uk=Kd*ek_2+(Kp+2*Kd)*ek_1+(Kp+Ki+Kd)*ek-uk_1;   // controlador pid
      ek_1=ek;
      ek_2=ek_1;
      uk_1=uk;
      uk_int=uk;
      duty_c=uk_int*f2;
      if(duty_c>1023)
         duty_c=1023;
      else if(duty_c<=0)
         duty_c=0;
      duty=duty_c;
      set_pwm1_dc(duty);       
   }
   
}

void set_pwm1_dc(unsigned long duty_pwm)
{
 #byte   CCP1CON=0x17
 #byte   CCPR1L=0x15
 
   bit_clear(CCP1CON,4);
   bit_clear(CCP1CON,5);
   if(bit_test(duty_pwm,0))
         bit_set(CCP1CON,4);
   if(bit_test(duty_pwm,1))
         bit_set(CCP1CON,5);
   duty_pwm>>=2;                 //rota dos veces
   duty_pwm&=0x00FF;             // dejamos solo un byte
   CCPR1L=duty_pwm;     
}

graxias ojala me puedan ayuda xD


una consulta quisiera saber mas ala detalle acerca de tu controlador de velcidad ps estoy necesitando urgente implementar uno para un curso la verdad es que recien he estado revisando temas afines a programacion por ende se me hace un poco complicado entender algunas instrucciones ,espero puedas ayudarme porfavor

el motor que deseo controlar es de 19w de potencia 24voltios con un encoder de 100PPR
PORFAVOR ESPERO QUE ME AYUDES  :huh:


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: demian662 en 24 Julio 2012, 22:07 pm
Si alguien puede ayudarme, estoy buscando el ccs compiler y no puedo encontrarlo, si alguien tiene un link que no este fuera de servicio seria muy util


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: hemerson en 19 Diciembre 2012, 13:55 pm
Estoy iniciándome en lo que es programación me pueden ayudar con un manual que me ayude a comprender el código de antemano gracias


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: anamarys en 19 Abril 2013, 15:58 pm
hola necesito ayuda, recien estoy empezando a programar pic uso e PIC C, conozco la programacion en C pero se me complica a la hora de programar micro, necestio
Realizar un sistema de adquisición de datos CON 16f884 que realice lecturas sobre los canales AD0 a AD3 y los envíe por puerto serie en formato 0 a 5 volts, punto flotante, en un renglón, separados por comas, ante una solicitud (comando “R”).

Agradezco su ayuda.


Título: Re: Introduccion a la programacion de PICS en lenguaje C (CCS)
Publicado por: chipo en 4 Febrero 2014, 16:32 pm
Hola Marco, antes que nada muchísimas gracias por el espacio que abriste. Soy nuevo en esto (por hobbie) y como nunca vi electrónica tengo grandes dificultades para entender conceptos básicos o iniciales.
Mis dudas son:
  * Cómo saber qué espacio de memoria le corresponde a un puerto de mi pic (tengo un 18f4550)
     ya que busqué según leí en un foro, hay que buscar en el pdf correspondiente al pic algo
     referido a bancos de memoria, pero no hallé nada; además de hacer varios ctrl+f pero
     tampoco encontré nada.
  * No entiendo qué significa que un pin esté como salida o como entrada y luego los
    valores que se les asigna de 0 o 1.

De vuelta, se agradece mucho.