Autor Tema: Quiero empezar a desarrollar mi primer programa con pic 16F873A  (Leído 6324 veces)

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

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Quiero empezar a desarrollar mi primer programa con pic 16F873A
« en: 20 de Diciembre de 2010, 02:29:00 »
Hola amigos, les escribo con el fin de solicitarles ayuda para realizar mi primer programa con el microcontrolador 16F873A. La idea que tengo es hacer un programita sencillo donde pueda encender y apagar 10 led de forma secuencial.

La verdad si me orientan con el encabezado que debo empezar para desarrollar este programa y poderlo simular en proteus y si me pueden explicar como debo empezar a desarrollar el codigo fuente. Que compilador me recomiendan para trabajar con este pic y poderlo simular en proteus.

mil gracias por sus concejos, recuerden que apenas estoy empezando el mundo de la programación para que tengan paciencia.

Saludos y mil gracias.




Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #1 en: 20 de Diciembre de 2010, 06:18:27 »
el ccs es un buen programa para empezar a trastear los pics.... ademas en proteus puedes simular el programa de manera facil ...
lo primero que te querria preguntar... es que si conoces algo de electronica digital, numeros hexadecimales, binario... etc.... es algo basico para poder empezar con los pics ya que si no sabes distinguir entre un byte y un bit te resultara un poco lioso...
para todo lo demas...  Indice de Hilos Destacados en el sub-Foro de C para Microcontroladores.
aqui encontraras ejemplos,trucos,ideas,dudas e incluso suluciones
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #2 en: 20 de Diciembre de 2010, 16:26:04 »
el ccs es un buen programa para empezar a trastear los pics.... ademas en proteus puedes simular el programa de manera facil ...
lo primero que te querria preguntar... es que si conoces algo de electronica digital, numeros hexadecimales, binario... etc.... es algo basico para poder empezar con los pics ya que si no sabes distinguir entre un byte y un bit te resultara un poco lioso...
para todo lo demas...  Indice de Hilos Destacados en el sub-Foro de C para Microcontroladores.
aqui encontraras ejemplos,trucos,ideas,dudas e incluso suluciones
Gracias por la respuesta. Te cuento que tengo conocimientos en la parte digital y numeros hexadecimales, ya que soy tecnico profesional en electronica. busco es un programa similar al que quiero hacer donde expliquen detalladamente los pasos y explicacion de cada uno de los comandos que debo utilizar en el codigo fuente.

saludos.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #3 en: 20 de Diciembre de 2010, 17:50:53 »
en el post de ejemplillos con pic 16f648 desde el numero 5 al 8 es mas o menos lo que estas buscando
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #4 en: 21 de Diciembre de 2010, 00:06:57 »
en el post de ejemplillos con pic 16f648 desde el numero 5 al 8 es mas o menos lo que estas buscando
Gracias por la informacion que me distes respecto a los ejemplos del pic 16F648, los estuve mirando y analizando y quede con varias dudas que espero me ayuden a resolver.

Pienso que mi nivel para programar es muy bajo ya que apenas estoy comenzando, por eso decidi empezar a entender mejor desde lo mas basico. Creo que el prender y apagar un led es lo mejor para empezar.

Este es el programa de los ejemplos publicados aqui de prender un led, al frente de las instrucciones voy a poner lo que no entiendo, espero me ayuden.

Notas: Parpadeo de un led cada 0.5s por el pin RB0 del puerto B
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>         //pic a utilizar         
#fuses XT,NOWDT,NOPROTECT,PUT      //ordenes  para el programador  :no entiendo bien para que se programan los fuses
#use delay (clock=4000000)         //Fosc=4Mhz ; frecuencia con la que el reloj interno debe trabajar
#use fast_io(b) ;esta instruccion no la entiendo, pienso que es (io)entradas, salidas, fast de rapido, entonces seria entradas y salidas rapidas en el puerto b

///PROGRAMA
void main(void)
{
   set_tris_b(0xFE);   //portb como salida(RB0,las demas desactivadas), porque se coloca este valor exadecimal(0xFE)
   disable_interrupts(GLOBAL);   //todas las interrupciones desactivadas; para que se desabilitan las interrupciones
   
   do{   
      output_low(PIN_B0);          //led off;colocar el pin a un estado bajo (o)
      delay_ms(500);           
      output_high(PIN_B0);        //led on ; colocar el pin a un estado alto (1)
      delay_ms(500);
   }while(TRUE);                //bucle infinito ; no entiendo como hece el bucle, si el while es para hacer el bucle mientras las instrucciones sean verdaderas
}

Publicado por el moderador global vszener de todopic



Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #5 en: 21 de Diciembre de 2010, 08:57:29 »
pues los fuses son las opciones de configuracion del pic...
te lo explicare a groso modo...
XT oscilador de <4Mhz, osea que puede poner cristales osciladores de menos de 4mhz como es el caso del ejemplo
NOWDT le dice al pic que dehabilite el watchdog timer (perro guardian, este se encarga de resetear el pic si se queda ""bloqueado"" en una instruccion sin fin
NOPROTECT no protege el programa del pic, osea de esta forma el pic podria ser leido con un programador
PUT  es el Power Up Timer, el pic cuando arranca espera un tiempo asta que se estabiliza la alimentacion

#use fast_io()  configuras tu los pines io con la instruccion set_tris_b(0xFE), osea el puerto b serian todo entradas menos el pin b0. te lo pongo en binario asi lo entenderas... set_tris_b(0b11111110) con los 1 pones el pin en modo de entrada y con los 0 en modo salida 0xFE = 255 = 0b11111110

las intrucciones de deshabilitan para que no aya conflictos en el programa ya que no las usas en el ejemplo

el do{ instrucciones }while(true) es un bucle, cuando acaba comprueba que la condicion true se cumple, si se cumple sale del bucle, y si no se cumple vuelve a repetir...

ejemplo:
int variable
do{
       variable=variable+1;     //suma un 1 a el valor variable
 }while(variable==100);       //asta que variable no sea 100 el bucle se repetira

ya sabes si tienes dudas no dejes de preguntar
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #6 en: 21 de Diciembre de 2010, 20:54:33 »
Hola amigo ppyote, mil gracias por la explicacion y sobre todo el tiempo que dedicas para ayudarme. te quiero preguntar una duda que tengo en este ejemplo.

#use fast_io()  configuras tu los pines io con la instruccion set_tris_b(0xFE), osea el puerto b serian todo entradas menos el pin b0. te lo pongo en binario asi lo entenderas... set_tris_b(0b11111110) con los 1 pones el pin en modo de entrada y con los 0 en modo salida 0xFE = 255 = 0b11111110

aqui en este ejemplo no entiendo porque porque en pin bo se pone como salida y no como entrada.

Ya me quedo claro porque b(0xFE).

estoy buscando en internet algun libro o documento donde exliquen detalladamente toda la informacion sobre pic. Los que he leido no explican con detalles.

Saludos y mil gracias.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #7 en: 21 de Diciembre de 2010, 21:30:07 »
Hola amigo ppyote, mil gracias por la explicacion y sobre todo el tiempo que dedicas para ayudarme. te quiero preguntar una duda que tengo en este ejemplo.

#use fast_io()  configuras tu los pines io con la instruccion set_tris_b(0xFE), osea el puerto b serian todo entradas menos el pin b0. te lo pongo en binario asi lo entenderas... set_tris_b(0b11111110) con los 1 pones el pin en modo de entrada y con los 0 en modo salida 0xFE = 255 = 0b11111110

aqui en este ejemplo no entiendo porque porque en pin bo se pone como salida y no como entrada.

Ya me quedo claro porque b(0xFE).

estoy buscando en internet algun libro o documento donde exliquen detalladamente toda la informacion sobre pic. Los que he leido no explican con detalles.

Saludos y mil gracias.

De nada... es todo un placer el poder ayudarte y mas entre toda la gente que hay en el foro que son unas verdaderas maquinas
en el post de vszener, Ejemplitos en C para 16F648A... abajo en herramientas tienes un par de manuales de ccs....

en cuanto a lo de por que el pin b0 es salida... facil explicacion..... el puerto B tiene 8 pines, B7,B6,B5.... B2,B1 Y B0, en el datashell del pic hay una pagina que es la de DATA MEMORY MAP, osea mapa de memoria de datos que es donde esta cada registro, cada opcion, cada bit de interrupciones, etc... hay un registro que es el trisb, osea la configuracion de los pines IO del puerto B,  8 pines = 8bits = 1 byte con lo que si tu le das a el valor de un byte  con set_tris_b(0xFE) lo que estas haciendo es asignarle el valor al registro trisb, osea... 11111110 en binario o 127 en decimal o 0xFE en hexadecimal... por eso la primera pregunta que te hice sobre si tenias idea de hexadecimal, binario byte y bits etc...
mira...

   binario   decimal    hexadecimal
  
pin b0=1       =1             =0x01
pin b1=1       =2             =0x02
pin b2=1       =4             =0x04
pin b3=1       =8             =0x08
pin b4=1       =16           =0x10
pin b5=1       =32           =0x20
pin b6=1       =64           =0x30
pin b7=0       =0             =0x00

+
__________________________________

11111110       127           0xFE

si pones un 1 en el bit del pin b0 le estaras diciendo al pic que trabaje el pin b0 como entrada pero como esta en 0 lo que hace es tratarlo como una salida de hay el valos que le asignas a trisb...
« Última modificación: 02 de Enero de 2011, 12:28:34 por ppyote »
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #8 en: 22 de Diciembre de 2010, 00:49:11 »
Mill gracias por la respuesta nuevamente amigo ppyote. Leyendo la explicación acerca de la pregunta que te realice acerca de porque colocaste el pin bo como salida, te consulto algo: es posible que yo pueda colocar todos los 8  pin del micro como entradas y como salidas o siempre debe quedar configurado el pin bo como salida por la explicación que me diste anteriormente del datashell.

tambien te pregunto si conoces algun libro especializado en microcontroladores para lenguaje C,  donde expliquen de una manera detallada cada uno de los pasos que hacen.Como de la editorial Mcgraw hill o alguna editorial especializada en este tipo de libros.

Saludos y mil gracias por tu ayuda.


Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #9 en: 22 de Diciembre de 2010, 06:45:25 »
Mill gracias por la respuesta nuevamente amigo ppyote. Leyendo la explicación acerca de la pregunta que te realice acerca de porque colocaste el pin bo como salida, te consulto algo: es posible que yo pueda colocar todos los 8  pin del micro como entradas y como salidas o siempre debe quedar configurado el pin bo como salida por la explicación que me diste anteriormente del datashel

en el datashell te lo pone todo, los pines que pueden ser bidirecionables, y los que no, pero para hacertelo mas facil mira la imagen con la distribucion de los pines
en cada pin hay una flecha, mira la direccion de las flechas, estas te indican el sentido de corriente, si la flecha esta en las dos direcciones puedes poner el pin como entrada o como salida, todo el puerto b puedes ponerlo como entradas o como salidas y el puerto a, menos el pin A5 que solo es entrada y los pines A7 y A6 que se comportaran como entradas y salidas siempre y cuando se utilize el oscilador que lleva interno este pic


Citar
tambien te pregunto si conoces algun libro especializado en microcontroladores para lenguaje C,  donde expliquen de una manera detallada cada uno de los pasos que hacen.Como de la editorial Mcgraw hill o alguna editorial especializada en este tipo de libros.

para saber como va internamente el pic, lo mejor es que mires un par de videotutoriales de assembler que los hay online y te explican mas o menos como trabaja el pic a nivel maquina...

PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #10 en: 22 de Diciembre de 2010, 10:16:51 »
Hola buenos dias, mil disculpa mi interrupcion es para decirle al colega juanes79 que en ese caso particuular de prender y apagar el led B0 se coloca como salida porque logicamente el pic tiene que enviar 1 logico para que el led prenda y 0 logico para que apague es decir es el puerto B0 del pic quien dice apagate o prende y para el poder decir eso tiene que estar como salida y tuviera como entrada solo recibiera informacion en este caso el da informacion.

Saludos y espero haberme explicado.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #11 en: 22 de Diciembre de 2010, 11:50:31 »
Hola buenos dias, mil disculpa mi interrupcion es para decirle al colega juanes79 que en ese caso particuular de prender y apagar el led B0 se coloca como salida porque logicamente el pic tiene que enviar 1 logico para que el led prenda y 0 logico para que apague es decir es el puerto B0 del pic quien dice apagate o prende y para el poder decir eso tiene que estar como salida y tuviera como entrada solo recibiera informacion en este caso el da informacion.

Saludos y espero haberme explicado.
Atten.
Alexander Santana.
Venezuela-Barcelona.

Se me olvido puntualizarlo jejeje gracias por aclarar su pregunta
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #12 en: 22 de Diciembre de 2010, 15:20:25 »
Mil graciaas a ppyote nuevamente por atender mis dudas y aclararme conceptos. Tambien agradezco a el amigo Astrocar por hacer su aporte tan valioso.

Si saben de una pagina bien completa para ver videotutoriales,  por favor me avisan.

Saludos y mil gracias.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #13 en: 22 de Diciembre de 2010, 19:58:30 »

Si saben de una pagina bien completa para ver videotutoriales,  por favor me avisan.


yo me mire los tutoriales de esta web y me fueron de maravilla... AQUI
un saludo y de nuevo de nada, ayudo en lo que puedo... un saludo
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Re: Quiero empezar a desarrollar mi primer programa con pic 16F873A
« Respuesta #14 en: 23 de Diciembre de 2010, 00:38:40 »
Amigo ppyote mil gracias por permitir conocer esa ppagina tan maravillosa de videotutoriales. eso era lo que estaba buscando, para aprender de una manera mas didactica. voy a realizar todos los videotutoriales para poder aprender a programar, aunque veo que este curso virtual de microcontroladores esta basado en lenguaje asembler, vale la pena realizarlo.

Te contare mis avances y dudas en el proceso de aprendizaje.

Con personas como uno puede llegar muy  lejos.

Saludos y mil gracias.


 

anything