Autor Tema: Como implementar el codigo generado para un 16f84a a un 16f88?  (Leído 4249 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado serch651

  • PIC10
  • *
  • Mensajes: 4
     Hola amigos, es mi primera vez que escribo en el foro. Soy principiante en estos temas, os cuento:
Empecé haciendo un programilla para uno de mis proyectillos que su nucleo era el 16f84a, el problema es el de siempre... ahora
que estoy le pongo... y le pongo... y... me quedo sin memoria. El problema es que esta hecho en ensamblador, y me lo he currado... (dentro de mi poco nivel). Andé preguntando y el 16f88 es compatible y tiene 4k de memoria de programa, asi que copie el codigo y lo compile para este, pero... no me funciona :-), y la verdad es que ya no se por donde seguir. Agradeceria que me aconsejarais (yo pienso que el problema anda por los perifericos del micro). Todo mi programa al estar hecho con puertos de entrada/salida (del 16f84) se hace mediante software, pero bueno deberia de funcionar... ya que con el 16f84a me funciona. Pues eso, creo que el problema esta al grabarlo o algo asi...
    Grabo con el Winpic800, todo lo desactivo (WDTEN,MCLRE,BOREN,LVP... menos PWRTEN), en oscilador solo marco XT (utilizo un cristal de cuarzo de 4MHz externo) y en otro apartado que pone -WRT- (que no tengo ni idea, supongo que sera la memoria...) lo pongo en OFF (las opciones que me da son: ;0000h-00FFh;0000h-07ffH;0000h-0fffh;

   Bueno espero que me orienteis, y si me podeis pasar algun programita en ensamblador exo para el 16f88... mejor que mejor, como por ejemplo algun led que parpadee, ya que tengo dos led conectados y podria ver si es problema mio o del micro, ya que no se que mas puedo hacer...

                                                     UN SALUDO DE ANTEMANO Y MUCHISIMAS GRACIAS!!!

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #1 en: 18 de Mayo de 2007, 14:54:07 »
Revisa la hoja de datos. Como bien lo mencionas, tienen periféricos diferentes (o ausencia de) y no se configuran igual.

Proporciona tu código para poder hacer algún comentario.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado serch651

  • PIC10
  • *
  • Mensajes: 4
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #2 en: 18 de Mayo de 2007, 15:11:53 »
Hola Mario, muchas gracias de antemano!!
el codigo es muy extenso... ahora estoy como cuadno empece, a ver si soy capaz de exar a andar un parpadeo de un led con este micro. En el hardware hay dos led, como comente, y este conectado a el puertoA,1. Le he cargado este codigo... pero me sigue igual, ( es un ejemplo que he conseguido del 16f84 que parpadea un led, pero... no consigo arrancarlo)  Bueno pongo el codigo, a ver si veis algo mal. Graciass

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #3 en: 19 de Mayo de 2007, 15:50:34 »
He visto tu código y en estructura lo tienes bien; el problema radica en la configuración del puerto A.

Revisa cómo la hoja de datos configura (parte 4 o 5 I/O PORTS) de manera diferente el puerto A.
Debes desactivar el convertidor, el AD, y seleccionar entradas/salidas digitales y por último, mover a los TRIS.

Si no te quieres complicar la vida cambia todo al puerto B y verás que te sale tu programa; el puerto B del 16F88 es similar en ese sentido al puerto B del 16F84A.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #4 en: 23 de Mayo de 2007, 11:29:44 »
Apaga en A/D y verás que funciona.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado serch651

  • PIC10
  • *
  • Mensajes: 4
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #5 en: 25 de Mayo de 2007, 17:34:44 »
Hola de nuevo!! bueno... me parece que me voy a dedicar a hacer muebles... que la carpinteria espero que se me de mejor. :? .
   Primero probe con el puerto B, y nada, al encenderlo pega un pego destello, pero ahi se queda, si lo vuelves a conectar otro destello, pero nada...
He apagado el A/D y... mas de lo mismo, nada... no se... me da que pensar que estoy fallando a la hora de programarlo.
Os pego una imagen de como configuro antes de programarlo... a ver si me estoy confundiendo con alguno...
   Os agradezco vuestras respuestas y como lo haga andar... invito a unas cañitas....  Muxas graciassss!!

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #6 en: 25 de Mayo de 2007, 19:34:42 »
Coloca el código que estás usando para el 16F88, el que tienes corregido (AD apagado).

Veremos qué tienes mal.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado serch651

  • PIC10
  • *
  • Mensajes: 4
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #7 en: 26 de Mayo de 2007, 15:59:10 »
Bueno hay te dejo el codigo que apaga el A/D (registro ansel) si no me confundo, y no funciona. GRACIASSSSS

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #8 en: 26 de Mayo de 2007, 18:50:49 »
Hola, creo saber cúal es tu problema.

Configuras ANSEL pero desde donde lo haces ANSEL no está, me explico:
ANSEL se encuentra en el banco 1 y tu lo tratas de direccionar en el banco 0 (cero por default).
Aunque le digas al µicro que escriba en ANSEL pero no te encuentras en su banco no lo hará.

Es correcto colocar ceros en ANSEL para hacer de esa terminal una entrada/salida digital (si colocas 1 será entrada analógica).
Pero después no le haces nada al TRISA, el cual también lo debes tomar en cuenta. ANSEL no es para desactivar comparadores.

Te hacía mención a la hoja de datos porque en la sección de I/O ports te dice paso a paso lo que debes hacer; entiendo que eres principiante pero deberías poner cuidado en eso: si utilizas un aparato, lees las instrucciones primero para saber cómo funciona.

Posiblemente estés en una clase de µicros, deberías preguntarle a tu profesor; si es tu pasatiempo, dedícale mas tiempo.


El comentario no es para molestar ni para criticar, solo es eso, un comentario, tómalo como sugerencia, y hablando de ellas:
en la carpeta de Microchip, en la subcarpeta de MPASM SUITE, vienen todos "fusibles de configuración" que es lo que el programa tiene al principio. Al programa le falta colocar el fusible para quitar /MCRL y dejar RA5 como I/O.

Otro comentario:
En la misma carpeta, pero ahora en MPASM SUITE/TEMPLATE/CODE vienen "formatos" para hacer programas, utilízalos para que tu código se vea mejor (presentación).


Empecé haciendo un programilla para uno de mis proyectillos que su nucleo era el 16f84a, el problema es el de siempre... ahora que estoy le pongo... y le pongo... y... me quedo sin memoria. El problema es que esta hecho en ensamblador, y me lo he currado... (dentro de mi poco nivel).

Extraño que te acabes la memoria de ese micro, sería la tercera vez que observo que se acaba la memoria de programa en ensamblador de un µicro.

No se qué signifique currado pero supongo ha de ser algo como acabado o vencido
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #9 en: 26 de Mayo de 2007, 18:56:25 »
Olvidé colocar el código:

Código: [Seleccionar]
LIST P=16F88
#INCLUDE<P16F88.INC>

;Oscilador interno y entradas/salidas
;digitales en las terminales del cristal

__CONFIG    _CONFIG1, _INTRC_IO


;Definiendo variables para retardo
CBLOCK 0X20
VALOR1
VALOR2
VALOR3
ENDC


;Configuración del oscilador interno

BANKSEL OSCCON
MOVLW 0x61 ;Oscilador de 4 MHz
MOVWF OSCCON
X: BTFSS OSCCON,2 ;Preguntando si ya se estabilizó
GOTO X ;el cristal interno a 4 MHz

  BANKSEL    PORTA
CLRF PORTA
BANKSEL CMCON ;Desactivando Comparadores (creo que no lo ocupas)
MOVLW      07h ;yo lo pongo porque utilizo el 16F688 y este
MOVWF      CMCON ;si lo requiere
CLRF ANSEL ;I/0 digital en todo el puerto
MOVLW 00h    ;Configuración de salidas en todo el puertoA
MOVWF TRISA ;Esto te hace falta en el código porque si no, no
BANKSEL    PORTA ;sirve de nada. Aquí regresamos al banco 0 (PORTA)

INICIO:

BSF          PORTA,0
CALL RET
BCF PORTA,0
CALL RET
GOTO INICIO

RET:
MOVLW D'11'
MOVWF VALOR1

T1:
MOVLW D'100'
MOVWF VALOR2

T2:
MOVLW D'248'
MOVWF VALOR3

T3:
DECFSZ VALOR3,F
GOTO T3

DECFSZ VALOR2,F
GOTO T2

DECFSZ VALOR1,F
  GOTO T1

RETURN

END

Pregunta a VSZENER: ¿Cómo hacen para que cuando colocan código se ponga morada la imagen y respete los márgenes?
« Última modificación: 26 de Mayo de 2007, 19:14:36 por MGLSOFT »
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #10 en: 26 de Mayo de 2007, 19:18:41 »
Hecho!!
Para colocar codigo debes usar el boton con el Numeral que esta arriba entre los botones.
Cuando pasas sobre el boton aparece un cartel de Insertar Codigo.

Suerte!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: Como implementar el codigo generado para un 16f84a a un 16f88?
« Respuesta #11 en: 26 de Mayo de 2007, 19:30:30 »
Hecho!!
Para colocar codigo debes usar el boton con el Numeral que esta arriba entre los botones.
Cuando pasas sobre el boton aparece un cartel de Insertar Codigo.

Suerte!!

Ok, gracias  :)

Solo que al parecer se movió el código y quedó con una sintaxis errónea.
« Última modificación: 26 de Mayo de 2007, 19:32:43 por Mario »
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee