Autor Tema: Pasar de 12F683 a 16F688....  (Leído 3845 veces)

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

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Pasar de 12F683 a 16F688....
« en: 09 de Julio de 2011, 07:53:10 »
Hola amigos, estoy pasando un codigo del PIC 12F683 al 16F688 y me encontre con algunas instrucciones o direcciones que no las encuentro en el 16F688, alguien que me ayuda a mudar estos dos bloque de codigo.

Código: ASM
  1. ;ESTAS SON UNAS RUTINAS PARA LEER Y GRABAR EN LA EEPROM
  2. ReadEE
  3.         bcf     STATUS, RP0             ;Bank0
  4.         movf  DIRECCIONEE, w
  5.         bsf     STATUS, RP0             ;Bank1
  6.         movwf   EEADR
  7.         bsf     EECON1, RD              ;start read
  8.         movf    EEDAT, W
  9.         bcf     STATUS, RP0             ;Bank0
  10. return
  11.  
  12. WriteEE
  13.         bcf             STATUS, RP0             ;me aseguro de estar en el banco 0 para trabajar con la variable DIRECCIONEE
  14.         movf    DIRECCIONEE,;guardo en W la dirección en la cual quiero escribir
  15.         bsf             STATUS, RP0             ;paso al banco 1
  16.         movwf   EEADR                   ;muevo al registro EEADR la direccion en la cual quiero escribir
  17.         bcf             STATUS, RP0             ;vuelvo al banco 0, para trabajar con la variable DATOSEE
  18.         movf    DATOSEE, W              ;muevo a W los datos que quiero escribir
  19.         bsf             STATUS, RP0             ;vuelvo al banco 1
  20.         movwf   EEDAT                   ;muevo al registro EEDAT el dato a escribir
  21.         bcf             INTCON, GIE             ;deshabilito las interrupciones
  22.         bsf             EECON1, WREN    ;habilito la escritura
  23.         movlw   0x55
  24.         movwf   EECON2
  25.         movlw   0xAA
  26.         movwf   EECON2
  27.         bsf             EECON1, WR              ;comienzo la escritura
  28.         btfsc   EECON1, WR              ;testeo para saber si termino la escritura
  29.         goto    $-1                             ;si no termino vuelvo a la linea anterior
  30.         bsf             STATUS, RP0             ;paso al banco 1
  31.         bcf             EECON1, WREN    ;deshabilito la escritura
  32.         bcf             STATUS, RP0
  33.         bsf     INTCON, GIE             ;habilito las interrupciones

Código: ASM
  1. ;Estas son unas que creo sirven para hacer referencia a una interrupcion
  2.         movlw   0x01
  3.         movwf   T2CON                           ;timer 2, prescale 1:4, no postscale
  4.         bsf             STATUS, RP0                     ;bank 1
  5.         movlw   0xFA
  6.         movwf   PR2                                     ;setup 1ms hardware interupt
  7.         bsf             PIE1, TMR2IE            ;enable timer2 interupt
  8.         bcf             STATUS, RP0                     ;bank 0
  9.         bsf             T2CON, TMR2ON           ;turn on timer2
  10.         movlw   0xC0
  11.         movwf   INTCON                          ;turn on interupts globally
  12.         goto    InitState                       ;get first fireratSTATE4e value

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Pasar de 12F683 a 16F688....
« Respuesta #1 en: 11 de Julio de 2011, 09:53:58 »
K nadie me da una mano con esto :)

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Pasar de 12F683 a 16F688....
« Respuesta #2 en: 11 de Julio de 2011, 10:41:28 »
Cuales son las direcciones donde aparece el error?? viste la hoja de datos de tu microcontrolador?

Seria mejor para ayudarte que coloques tu código completo, puede que sea mas fácil ayudarte.

Este es un foro libre, no estamos obligados a ayudarte, si no recibes ayuda quiza no se sabe del tema, no eres claro con tu pregunta, o no colocas todo lo necesario para brindarte ayuda.

.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Pasar de 12F683 a 16F688....
« Respuesta #3 en: 11 de Julio de 2011, 10:58:24 »
las intrucciones son las mismas para los dos, lo que varia son las direcciones de los registros de proposito general, las salidas de los puertos y la configuracion del oscilador. Acuerdate de incluir el archivo del PIC que usas.

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Pasar de 12F683 a 16F688....
« Respuesta #4 en: 11 de Julio de 2011, 11:05:13 »
Disculpa Cryn, tal vez no fui claro pero aqui anexo el codigo original para el PIC 12F683, lo que quiero hacer es usar este codigo con un PIC 16F688 ya que necesitare mas puertos, el problema que tengo es que este PIC 16F688 no tiene PR2 ni TMR2 es por eso que ahi me quede, ya no supe de que manera lo podia adaptar, de antemano te agradesco tu ayuda y mil disculpas    :?

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Pasar de 12F683 a 16F688....
« Respuesta #5 en: 11 de Julio de 2011, 11:33:08 »
Efectivamente, no posee timer2 el micro 16f688, bastante raro...

Si solo se usa el timer2, probablemente puedes pasarte al timer0 o timer1, aunque este ultimo es de 16bits.

Otro error de registros, es que el 12F tiene solo un registro IO, llamado GPIO, con su respectivo TRISIO, en los micros 16F se llaman PORTA PORTB, en micros pequeños, y en mas grandes hasta la letra E, todos con su respectivo TRISx (TRISA TRISB...) Tienes que cambiar esas partes

Para que migres a otro timer (si es que no se usa otro), quiza sea al timer0, porque hasta donde vi no lo estas usando, tienes q leer un poco la hoja de datos para que veas como funciona o busques algo de informacion aca en el foro, que hay bastante hablado del timer0.

Por ultimo el config word, asegurate de que son correctas los configuraciones para el 16f688

saludos.
.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Pasar de 12F683 a 16F688....
« Respuesta #6 en: 11 de Julio de 2011, 11:36:52 »
para que usas tu timer2?, si es solo para generar una interrupcion en un tiempo determinado puedes usar el timer0 o el timer1.
el timer0 es de 8 bits, igual que el timer 2. y lo configuras desde el registro option_reg.
el timer1 es de 16 bits, y tien su propio registro, "t1con".

con ambos puedes generar interrupcion, habilitandolas desde intcon o desde el pie1
"Nada es imposible, no si puedes imaginarlo"

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Pasar de 12F683 a 16F688....
« Respuesta #7 en: 11 de Julio de 2011, 13:38:53 »
Hola rivale podrías ayudarme un poco en el segundo bloque de codigo con lo k me comentas k podría servir, el resto ya cambie los puertos a sus respectivos porta o portc.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Pasar de 12F683 a 16F688....
« Respuesta #8 en: 11 de Julio de 2011, 14:18:12 »
Hola, te pongo las imagenes de los registros que debes modificar para la interrupcion por timer1.
en pie1 activas la interrupcion
en pir1 esta su bandera.

en en el intcon tienes el registro del timer1





« Última modificación: 11 de Julio de 2011, 14:20:23 por rivale »
"Nada es imposible, no si puedes imaginarlo"

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Pasar de 12F683 a 16F688....
« Respuesta #9 en: 11 de Julio de 2011, 14:21:11 »
recuerda checar en que banco esta cada registro para poder modificarlo.
espero te sirva.

Saludos
"Nada es imposible, no si puedes imaginarlo"

Desconectado sQs

  • PIC10
  • *
  • Mensajes: 47
Re: Pasar de 12F683 a 16F688....
« Respuesta #10 en: 11 de Julio de 2011, 16:40:22 »
Muchas gracias rivale intentare hacer el cambio, saludos.


 

anything