• Domingo 22 de Diciembre de 2024, 11:46

Autor Tema:  Programas Para Pic  (Leído 6370 veces)

salvadorss04

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Programas Para Pic
« en: Miércoles 31 de Mayo de 2006, 14:21 »
0
hola a todos mi nombre es salvador solar solar y estoy buscando algunos ejemplos en codigo fuente para el microcontrolador pic 16f84a.

bueno el asunto es que estoy empezando a estudiar estos microcontoladores y necesito algunos ejemplos, tambien estoy contruyendo un juego de luces con el 16f84a para el cual necesito los ejemplo, este juego de luces no tiene cristal para ello utiliza un condendador poliester 103. para enganchar el reloj.

gracias de antemano, si necesitacen una foto luego se los envio pues todavia mo lo termino

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Programas Para Pic
« Respuesta #1 en: Miércoles 31 de Mayo de 2006, 18:19 »
0
Hola y bienvenido!
Es un gusto tenerte por aca y saber que empiezas con los micros, pero no quiero desilucionarte... Si empiezas, no te entretengas mucho con el 16F84, ya está casi difunto (después de alcanzar la fama :D ) Una buena opción sería el 16F876 ó el 16F877, o fijate en el 16F628. Tienen más periféricos, y son más baratos; no creas que sean más complicados...
Info, ejemplos y demás, puedes conseguir con Emule, hay mucho para el 16F84. No te preocupes, porque sirve como base también para los otros micros que te cuento aquí.
Empieza con asembler, pero desde ya handa preparandote para abordar el C.
Al principio busca cosas simples, y despacio las vas complicando.
Diseñate una placa multipropósito, para no tener que estar haciendo una nueva cada vez que quieras experimentar algo.
Ah, y cuando te de dolor de cabeza, sal a dar una vuelta y continua al día siguiente :P
Y de más esta decir que ya tiene que estar en tu favoritos agendada la dirección de este foro y la de la página de microchip (www.microchip.com), alli encontrarás todas las hojas de datos, que tienes que bajar y leer la del micro que uses(importante!!! :o )

Bueno, estos son algunos concejos que se me ocurren ahora... No es tan complicado!
Y recuerda, siempre puedes consultar aquí ;)

Suerte, y saludos

salvadorss04

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Programas Para Pic
« Respuesta #2 en: Miércoles 31 de Mayo de 2006, 21:03 »
0
muchas gracias por la bienvenida

en cuanto a tu comentario en realidad solo estoy empezando con el 16f84a pues me parece que hay bastante informacion al respecto , he leido su datasheet del pic 16f84a estoy armando un secuencial de luces de 8 canales con dicho pic y lo que necesito son algunos ejemplos basicos para poder encaminarme, agradecere cualquier ejemplo, estoy usando el mplap y el ic-prog gracias por la atencion.

conozco algo de c++ nose si eso es lo que se necesita saber

ahora estoy leyendo algo de las instrucciones del PIC 16f84a

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Programas Para Pic
« Respuesta #3 en: Miércoles 31 de Mayo de 2006, 22:00 »
0
Citar
hola a todos mi nombre es salvador solar solar y estoy buscando algunos ejemplos en codigo fuente para el microcontrolador pic 16f84a.

hola,  :hola: aqui te dejo un link donde hay unos programas en ensamblador para el pic 16F84A con esquema electrico y todo, yo tome como ejemplo las practicas estan muy bien explicadas, checalas al igual que los proyectos talvez te puedan ser de ayuda
http://platea.pntic.mec.es/~lmarti2/ (estan en el curso Microcontroladores)

con respecto a:
Citar
Si empiezas, no te entretengas mucho con el 16F84, ya está casi difunto (después de alcanzar la fama  ) Una buena opción sería el 16F876 ó el 16F877, o fijate en el 16F628. Tienen más periféricos, y son más baratos; no creas que sean más complicados...
:) estoy totalmente de acuerdo yo empeze con el PIC16F877 con muchas mas funciones, aunque actualmente uso el pic16F87, menos funciones pero mas economico.
Citar
en realidad solo estoy empezando con el 16f84a pues me parece que hay bastante informacion al respecto
:lol: es la unico bueno de esos pic 16F84 que hay bastante informacion en Español.

saludos y espero te sirvan los links  :comp:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

salvadorss04

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Programas Para Pic
« Respuesta #4 en: Viernes 2 de Junio de 2006, 15:03 »
0
hola tania_D exclente pagina para poder comenzar pero edite en mplab la practica numero 1 y luego de editar proyecto y y luego construir proyecto (ctrl + F10) me sale el siguinete mensaje

Building LUZ1.HEX...

Compiling LUZ1.ASM:
Command line: "C:\ARCHIV~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F84A /q D:\SAM\EJEMPL~1\EJEM1\LUZ1.ASM"
Message[302] D:\SAM\EJEMPL~1\EJEM1\LUZ1.ASM 25 : Register in operand not in bank 0.  Ensure that bank bits are correct.

Build completed successfully.

 nose que significa pero igual lo guarde y abri el archivo luz1.hex con el ic-prog este lo abrio normal pero cuando lo carge al pic 16f84a me dice que fue grabado correctamente pero al probarlo en el esquema de la practica 1 de la pagina que me diste los leds no encienden, tendra qu ver algo es mensaje (en el mplab) o es que otra cosa esta mal, por favor ayudame

salvadorss04

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Programas Para Pic
« Respuesta #5 en: Viernes 2 de Junio de 2006, 16:04 »
0
hola tania_D exclente pagina para poder comenzar pero edite en mplab la practica numero 1 y luego de editar proyecto y y luego construir proyecto (ctrl + F10) me sale el siguinete mensaje

Building LUZ1.HEX...

Compiling LUZ1.ASM:
Command line: "C:\ARCHIV~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F84A /q D:\SAM\EJEMPL~1\EJEM1\LUZ1.ASM"
Message[302] D:\SAM\EJEMPL~1\EJEM1\LUZ1.ASM 25 : Register in operand not in bank 0.  Ensure that bank bits are correct.

Build completed successfully.

 nose que significa pero igual lo guarde y abri el archivo luz1.hex con el ic-prog este lo abrio normal pero cuando lo carge al pic 16f84a me dice que fue grabado correctamente pero al probarlo en el esquema de la practica 1 de la pagina que me diste los leds no encienden, tendra qu ver algo es mensaje (en el mplab) o es que otra cosa esta mal, por favor ayudame

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Programas Para Pic
« Respuesta #6 en: Viernes 2 de Junio de 2006, 16:38 »
0
Hola!! Bienvenido al mundo de los micros! :D  :lol: Tu primer problema, y vaya que problema... creo que tu micro está quemado :( No, mentira es un chiste :P
Los PIC, y vale para todos los modelos, tienen la RAM particionada en varios bancos. Si te fijas en el registro STATUS, hay un par de bits (RP0 y RP1) con los que tienes que seleccionar tu mismo que banco vas a acceder; en el caso del 16F84, solo tiene 2 bancos, por lo que solo usas el bit RP0. Estos bits no son otra cosa que los bits de más peso de la dirección RAM.
Si miras el mensaje, es el 302, y dice "... not in bank 0..."
El programa se compila igual, pero no funciona porque estás accediendo a una posición de RAM distinta a la que quieres... y sabes que, por eso no se enciende el LED!! Los registros TRISx están en el banco 1, mientras que en la misma posición del banco 0 están los PORTx (coinciden). En tu caso, estoy seguro que es asi, escribes el TRIS correspondiente sin poner a 1 RP0 (RP1 = 0), entonces no estás definiendo el sentido de los pines de ese puerto. Por defecto, todos los pines arrancan como entrada; y en tu caso siguen siempre como entrada... por eso no enciende el LED ;)
Bueno, fijate y nos comentas...
Ah!, y a leer la hoja de datos, no les digo esto por capricho!
No te preocupes, a todos nos ha pasado el 302; a mi me tuvo un tiempo...

Saludos :hola:

salvadorss04

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Programas Para Pic
« Respuesta #7 en: Viernes 2 de Junio de 2006, 17:13 »
0
disculpa pero si stoy psando al banco 1, por si acaso aqui te envios el texto

;PROGRAMA LED.ASM
;Apagar y encender el puerto B cada segundo
;--------------------------------------------------------
 
   list             p=16f84A
   include   "p16F84A.inc"
 
   org 00h
reset   
   goto inicio
 
   org 10h
inicio   
 
;-------------------------------------------
;Configurar el puerto B como salida
;--------------------------------------------
;Registro TRISB=00h para salidas.
 
   bsf   STATUS,5      ;pongo a 1 el bit 5 del registro STATUS
               ; para entrar en el banco1.
   movlw   00h         ;cargo w con el dato 00h.           
   movwf   TRISB         ;cargo el registro TRISB con el w para
               ;hacer el puertoB como salida.
   bcf   STATUS,5      ;pongo a cero el bit 5 del registro
               ;STATUS para entrar en el banco 0.
 
;-----------------------------------
;PROGRAMA PRINCIPAL
;-----------------------------------
programa   
   movlw    00h      ;cargo w con el dato 00h.
      movwf    PORTB   ;cargo el registro PORTB con el w.
       call    sg1   ;subrutina de retardo de 1 seg.
      call   sg1
 
      movlw    0fh   ;cargo w con el dato 0fh.
      movwf    PORTB   ;cargo el registro PORTB con el w.
 
      call    sg1
      call    sg1
 
      swapf    PORTB,1   ;aplico la intrucción al
            ;contenido del registro PORTB
            ;y lo deposito en el  mismo ya
            ;que d= 1.
      call   sg1
      call   sg1
 
      movlw    0ffh   ;cargo el w con el dato ffh.
      movwf    PORTB   ;cargo PORTB con el w.
 
      call    sg1
      call    sg1
 
      call    rotacion;subrutina de rotar un solo
            ;led de derecha a izquierda y
            ;viceversa ,una sola vez.
      goto    programa;salto al comienzo del progra-
            ;ma  principal.   
 
;-------------------------------------------------------------
;PROGRAMA DE ROTACION.
;-------------------------------------------------------------
rotacion   
      movlw    00h   ;cargo w con el dato 00h.
      movwf    10h   ;cargo registro 10h con el w.
   
      movlw    09h   ;cargo w con el dato 09h.
      movwf    11h   ;cargo el registro 11h con w.
 
      bsf    STATUS,0;pongo a uno el bit 0 del STATUS
            ;( bit 0 = C = acarreo ).      
 
der      
      decfsz    11h,1   ;decremento el registro 11h y salto si
            ;es cero y deposito el contenido en
            ;11h ya que d= 1.   
 
      goto    derecha;salto a la etiqueta ( dirección ) llama-
            ;da derecha.
   
 
      movlw    08h   ;cargo w con el dato 08h.
      movwf   11h   ;cargo el registro 11h con w.   
 
      bcf    STATUS,0;pongo a cero el bit 0 de STATUS
            ;( bit 0 = C = acarreo ).      
 
izq      
      decfsz    11h,1   ;decremento el registro 11h y salto
            ;si vale cero depositando el conteni-
            ;do en el mismo ya d= 1.                               
      goto    izquierda;salto a la etiqueta ( dirección ) lla-
            ;mada izquierda.            
 
      return      ;regreso de subrutina.   
 
 
derecha   
      rrf   10h,0   ;roto a la derecha el contenido del
            ;registro 10h y lo almaceno en w ya
            ;que d= 0.
      movwf   10h   ;cargo el registro 10h con el w.      
      movwf    PORTB   ;cargo el registro PORTB con el w.  
      call    sg1
      goto    der   ;salto a etiqueta der.
 
 
izquierda   
      rlf   10h,0   ;roto a la izquierda el contenido del
            ;registro 10h y lo almaceno en w ya
            ;que d= 0.
      movwf    10h   ;cargo 10h con el w.      
      movwf    PORTB   ;cargo PORTB con w.         
      call    sg1
      goto    izq   ;salto a etiqueta izq.      
 
 
;RETARDOS
;----------------------------------------
;ffh=255  goto=2 useg.    decfsz=1 useg.
;(255 x 2) + 255= 765 useg
;(765 x 765) + 255= 585480 useg.
;(585480 x 2) + 1= 1170961 useg.
 
 
sg1
   movlw    0ffh
   movwf    0ch
          movwf    0dh
   
   movlw    01h
   movwf    0eh
 
salto1   
   decfsz    0ch,1
   goto   salto1
   
   decfsz    0dh,1
   goto   salto1
 
   decfsz   0eh,1
 
   goto   salto1
 
   return   
 
   end

 gracias por la atencion

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Programas Para Pic
« Respuesta #8 en: Viernes 2 de Junio de 2006, 19:37 »
0
Hola! Tienes razón, pasas al banco 1, disculpas... :whistling:
Bueno, veamos lo siguiente... Cuando lo programas, fijate que esté desactivado el watchdog; también que esté bien seleccionado el tipo de oscilador (por lo que veo usas un xtal de 4 MHz).
La otra pregunta es si está bien conectado el led.
El programa, así como está, debería funcionar.
Pero prueba con lo siguiente, para simplificar:

programa
movlw 0xFF
movwf PORTB
call sg1
clrf PORTB
call sg1
goto programa

Al principio puedes poner

errorlevel -302

Y justo antes de esta línea, y despues del include

__CONFIG 0x3FF9

Con eso lo configuras para cristal (4 MHz = XT), sin watchdog ni protección de código.

Prueba y nos cuentas como te fue; debería funcionar...

Saludos

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Programas Para Pic
« Respuesta #9 en: Sábado 3 de Junio de 2006, 02:04 »
0
Hola salvadorss04 :hola:  este mensaje
Citar
Message[302] D:\SAM\EJEMPL~1\EJEM1\LUZ1.ASM 25 : Register in operand not in bank 0. Ensure that bank bits are correct.
 :) es solo un mensaje para que te asegures que estas trabajando en el  banco correcto, NO es un error, lo va a poner siempre que ocupes registros que estan fuera del banco0, si accedes 100 veces a un registro fuera del banco0, te pondra 100 veces este mensaje, asi que que no hay problema con estos mensajes solo es para que estes pendiente :comp:, si te aparecece esto
Citar
Build completed successfully
es que el proceso fue exitoso y que no hay errores  :comp: .
ahora con respecto a:
Citar
pero al probarlo en el esquema de la practica 1 de la pagina que me diste los leds no encienden, tendra qu ver algo es mensaje (en el mplab) o es que otra cosa esta mal, por favor ayudame

ya que tienes el MPLAB pruebalo en el simulador veras que funciona, tu problema es seguramente lo que dice Huguen_aus_Tirol desactivar el watchdog y seleccionar el oscilador correcto, el programa no trae las sentecias necesarias porque esta para quemarlo con el WINPIC800 y no con el IC-PROG, ya que con el WINPIC800 seleccionar el oscilador y desactivar el watchdog se hace marcando chequecitos antes de quemarlo y NO poniendo sentencias en el programa. Asi que intentalo, debe funcionar :smartass:

 saludos  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea