Autor Tema: RS232 con Pic16F84A.  (Leído 6518 veces)

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

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
RS232 con Pic16F84A.
« en: 06 de Septiembre de 2010, 19:06:52 »
Hola, tengo un ejercicio de un libro, donde se une la programación en Visual C++ ( desde el PC) para mandar órdenes al pic, y el programa en el pic está escrito en ASM, y tratado por MpLab.
Bien, pues hay una serie de ficheros *.INC que en el cd del libro te dan para agregar en el entorno MpLab. estos ficheros son :

**********RS232.INC **********
**********RS232MEN.INC **********
**********LCD_4BIT.INC **********
**********LCD_MENS.INC **********
**********RETARDOS.INC **********

Estos archivos los he agregado en la carpeta de  Microchip\MPASM Suite
He supuesto que deberían estar ahí, ya que uso el compilador de ASM del ide MpLab ( y hay archivos con dicha extensión también).
Después de crear el proyecto, inserto el siguiente fichero ASM :
Código: ASM
  1. ;************************************ RS232_11.asm **************************************
  2. ;
  3. ;       ===================================================================
  4. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  5. ;         E. Palacios, F. Remiro y L. López.
  6. ;         Editorial Ra-Ma.  www.ra-ma.es
  7. ;       ===================================================================
  8. ;
  9. ; SISTEMA DE GOBIERNO DESDE ORDENADOR: Desde el teclado de un ordenador se desea comandar
  10. ; el movimiento de una estructura móvil, según la siguiente tabla:
  11. ;
  12. ;       TECLA (Por ejemplo)     MOVIMIENTO
  13. ;       -------------------             ----------
  14. ;               t               Adelante
  15. ;               b               Atrás
  16. ;               a               Izquierda
  17. ;               l               Derecha
  18. ;            Espacio            Parada
  19. ;
  20. ; La pulsación de cualquiera de estas teclas activa el estado de las salidas correspondiente
  21. ; RB3 (Adelante), RB2 (Atrás), RB1 (Izquierda), RB0 (Derecha) y apaga el resto.
  22. ;
  23. ; El movimiento que se está realizando aparece reflejado en un mensaje en el visualizador LCD
  24. ; del sistema y también en la pantalla del ordenador.
  25. ;
  26. ; El programa debe permitir modificar facilmente en posteriores revisiones en el hardware de
  27. ; la salida. Es decir, para activar las salidas conviene utilizar el direccionamiento por bit
  28. ; en lugar de por byte (utilizar instrucciones "bsf" y "bcf", en lugar de "mov..").
  29. ;
  30. ; ZONA DE DATOS **********************************************************************
  31.  
  32.         __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
  33.         LIST       P=16F84A
  34.         INCLUDE  <P16f84A.INC>
  35.  
  36.         CBLOCK   0x0C          
  37.         TeclaPulsada                    ; Va a guardar el contenido de la tecla pulsada.
  38.         MensajeApuntado                 ; Va a guarda la dirección del mensaje apuntado.
  39.         ENDC
  40.  
  41. #DEFINE  SalidaAdelante PORTB,3         ; Define dónde se sitúan las salidas.
  42. #DEFINE  SalidaAtras    PORTB,2
  43. #DEFINE  SalidaIzquierda        PORTB,1
  44. #DEFINE  SalidaDerecha  PORTB,0
  45.  
  46. TeclaAdelante   EQU     't'             ; Código de las teclas utilizadas.
  47. TeclaAtras      EQU     'b'
  48. TeclaIzquierda  EQU     'a'
  49. TeclaDerecha    EQU     'l'
  50. TeclaParada     EQU     ' '             ; Código de la tecla espaciadora, (hay un espacio,
  51.                                         ; tened cuidado al teclear el programa).
  52. ; ZONA DE CÓDIGOS ********************************************************************
  53.  
  54.         ORG     0
  55. Inicio
  56.         call    LCD_Inicializa
  57.         call    RS232_Inicializa
  58.         bsf     STATUS,RP0              ; Configura como salidas las 4 líneas del
  59.         bcf     SalidaAdelante          ; del Puerto B respetando la configuración del
  60.         bcf     SalidaAtras             ; resto de las líneas.
  61.         bcf     SalidaIzquierda
  62.         bcf     SalidaDerecha
  63.         bcf     STATUS,RP0
  64.         call    Parado                  ; En principio todas las salidas deben estar
  65. Principal                                       ; apagadas.
  66.         call    RS232_LeeDato           ; Espera a recibir un carácter.
  67.         call    TesteaTeclado
  68.         goto    Principal
  69.  
  70. ; "Mensajes" ----------------------------------------------------------------------------
  71. ;
  72. Mensajes
  73.         addwf   PCL,F
  74. MensajeParado
  75.         DT "Sistema PARADO", 0x00
  76. MensajeAdelante
  77.         DT "Marcha ADELANTE", 0x00
  78. MensajeAtras
  79.         DT "Marcha ATRAS", 0x00
  80. MensajeIzquierda
  81.         DT "Hacia IZQUIERDA", 0x00
  82. MensajeDerecha
  83.         DT "Hacia DERECHA", 0x00
  84.  
  85. ; Subrutina "TesteaTeclado" -------------------------------------------------------------
  86. ;
  87. ; Testea el teclado y actúa en consecuencia.
  88.  
  89. TesteaTeclado
  90.         movwf   TeclaPulsada            ; Guarda el contenido de la tecla pulsada.
  91.         xorlw   TeclaAdelante           ; ¿Es la tecla del movimiento hacia adelante?
  92.         btfsc   STATUS,Z
  93.         goto    Adelante                        ; Sí, se desea movimiento hacia adelante.
  94. ;
  95.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  96.         xorlw   TeclaAtras              ; ¿Es la tecla del movimiento hacia atrás?
  97.         btfsc   STATUS,Z
  98.         goto    Atras                   ; Sí, se desea movimiento hacia atrás.
  99. ;
  100.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  101.         xorlw   TeclaIzquierda          ; ¿Es la tecla del movimiento hacia la izquierda?
  102.         btfsc   STATUS,Z
  103.         goto    Izquierda                       ; Sí, se desea movimiento hacia la izquierda.
  104. ;
  105.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  106.         xorlw   TeclaDerecha            ; ¿Es tecla del movimiento hacia la derecha?
  107.         btfsc   STATUS,Z
  108.         goto    Derecha                 ; Sí, se desea movimiento hacia la derecha.
  109. ;
  110.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  111.         xorlw   TeclaParada             ; ¿Es la tecla de parada?.
  112.         btfss   STATUS,Z
  113.         goto    Fin                     ; No es ninguna tecla de movimiento. Sale.
  114. Parado
  115.         bcf     SalidaAdelante          ; Como se ha pulsado la tecla de parada se
  116.         bcf     SalidaAtras             ; desactivan todas las salidas.
  117.         bcf     SalidaIzquierda
  118.         bcf     SalidaDerecha
  119.         movlw   MensajeParado
  120.         goto    Visualiza
  121. Adelante
  122.         bcf     SalidaAtras
  123.         bsf     SalidaAdelante
  124.         bcf     SalidaIzquierda
  125.         bcf     SalidaDerecha
  126.         movlw   MensajeAdelante
  127.         goto    Visualiza
  128. Atras
  129.         bcf     SalidaAdelante
  130.         bsf     SalidaAtras
  131.         bcf     SalidaIzquierda
  132.         bcf     SalidaDerecha
  133.         movlw   MensajeAtras
  134.         goto    Visualiza
  135. Izquierda
  136.         bcf     SalidaAdelante
  137.         bcf     SalidaAtras
  138.         bsf     SalidaIzquierda
  139.         bcf     SalidaDerecha
  140.         movlw   MensajeIzquierda
  141.         goto    Visualiza
  142. Derecha
  143.         bcf     SalidaAdelante
  144.         bcf     SalidaAtras
  145.         bcf     SalidaIzquierda
  146.         bsf     SalidaDerecha
  147.         movlw   MensajeDerecha
  148.  
  149. ; Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
  150. ; el monitor del ordenador.
  151.  
  152. Visualiza
  153.         movwf   MensajeApuntado         ; Guarda la posición del mensaje.
  154.         call    LCD_Borra               ; Borra la pantalla del modulo LCD.
  155.         movf    MensajeApuntado,W       ; Visualiza el mensaje en la pantalla
  156.         call    LCD_Mensaje             ; del visualizador LCD.
  157.         call    RS232_LineasBlanco      ; Borra la pantalla del ordenador.
  158.         movf    MensajeApuntado,W
  159.         call    RS232_Mensaje           ; Lo visualiza en el HyperTerminal.
  160.         call    RS232_LineasBlanco
  161. Fin     return
  162.  
  163.         INCLUDE  <RS232.INC>
  164.         INCLUDE  <RS232MEN.INC>
  165.         INCLUDE  <LCD_4BIT.INC>
  166.         INCLUDE  <LCD_MENS.INC>
  167.         INCLUDE  <RETARDOS.INC>
  168.         END
  169.        
  170. ;       ===================================================================
  171. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  172. ;         E. Palacios, F. Remiro y L. López.
  173. ;         Editorial Ra-Ma.  www.ra-ma.es
  174. ;       ===================================================================

Y bueno, como esto " te lo dan hecho", ( eso si, respetando la velocidad del micro, indicando el micro a usar al crear proyecto...etc)  simplemente le doy a compilar para ver si es correcto, y cuál es mi sorpresa que no, "BUILD FAILLED". Como me gustan esas dos palabras... y sale la ristra de errores tal como ( la lista es larga, pero los errores son los mismos):
Código: C
  1. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.asm" /l"RS232_11.lst" /e"RS232_11.err" /o"RS232_11.o"
  2. Message[313] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 23 : CBLOCK constants will start with a value of 0.
  3. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 35 : Labels must be defined in a code or data section when making an object file
  4. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 36 : Executable code and data must be defined in an appropriate section
  5. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 37 : Executable code and data must be defined in an appropriate section
  6. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 38 : Executable code and data must be defined in an appropriate section
  7. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 39 : Executable code and data must be defined in an appropriate section
  8. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 40 : Executable code and data must be defined in an appropriate section
  9. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 57 : Labels must be defined in a code or data section when making an object file
  10. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 58 : Executable code and data must be defined in an appropriate section
  11. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 59 : Executable code and data must be defined in an appropriate section
  12. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 60 : Labels must be defined in a code or data section when making an object file
  13. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 61 : Executable code and data must be defined in an appropriate section
  14. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 62 : Operand contains unresolvable labels or is too complex
  15. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 62 : Executable code and data must be defined in an appropriate section
  16. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 63 : Operand contains unresolvable labels or is too complex
  17. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 63 : Executable code and data must be defined in an appropriate section
  18. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 64 : Operand contains unresolvable labels or is too complex
  19. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 64 : Executable code and data must be defined in an appropriate section
  20. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 65 : Labels must be defined in a code or data section when making an object file
  21. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 66 : Executable code and data must be defined in an appropriate section
  22. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 67 : Executable code and data must be defined in an appropriate section
  23. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 68 : Executable code and data must be defined in an appropriate section
  24. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 69 : Executable code and data must be defined in an appropriate section
  25. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 70 : Operand contains unresolvable labels or is too complex
  26. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 70 : Executable code and data must be defined in an appropriate section
  27. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 71 : Executable code and data must be defined in an appropriate section
  28. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 72 : Operand contains unresolvable labels or is too complex
  29. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 72 : Executable code and data must be defined in an appropriate section
  30. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 73 : Operand contains unresolvable labels or is too complex
  31. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 73 : Executable code and data must be defined in an appropriate section
  32. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 74 : Executable code and data must be defined in an appropriate section
  33. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 75 : Executable code and data must be defined in an appropriate section
  34. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 91 : Labels must be defined in a code or data section when making an object file
  35. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 92 : Executable code and data must be defined in an appropriate section
  36. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 93 : Labels must be defined in a code or data section when making an object file
  37. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 94 : Executable code and data must be defined in an appropriate section
  38. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 95 : Executable code and data must be defined in an appropriate section
  39. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 96 : Executable code and data must be defined in an appropriate section
  40. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 97 : Executable code and data must be defined in an appropriate section
  41. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 98 : Operand contains unresolvable labels or is too complex
  42. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 98 : Executable code and data must be defined in an appropriate section
  43. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 99 : Labels must be defined in a code or data section when making an object file
  44. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 100 : Executable code and data must be defined in an appropriate section
  45. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 101 : Executable code and data must be defined in an appropriate section
  46. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 102 : Operand contains unresolvable labels or is too complex
  47. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 102 : Executable code and data must be defined in an appropriate section
  48. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 103 : Labels must be defined in a code or data section when making an object file
  49. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 104 : Executable code and data must be defined in an appropriate section
  50. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 105 : Operand contains unresolvable labels or is too complex
  51. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 105 : Executable code and data must be defined in an appropriate section
  52. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 106 : Labels must be defined in a code or data section when making an object file
  53. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 107 : Executable code and data must be defined in an appropriate section
  54. Error[150]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 108 : Labels must be defined in a code or data section when making an object file
  55. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 109 : Operand contains unresolvable labels or is too complex
  56. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 109 : Executable code and data must be defined in an appropriate section
  57. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 110 : Executable code and data must be defined in an appropriate section
  58. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 111 : Operand contains unresolvable labels or is too complex
  59. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 111 : Executable code and data must be defined in an appropriate section
  60. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 112 : Executable code and data must be defined in an appropriate section
  61. Error[151]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 113 : Operand contains unresolvable labels or is too complex
  62. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 113 : Executable code and data must be defined in an appropriate section
  63. Error[152]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 114 : Executable code and data must be defined in an appropriate section
  64. Error[115]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 144 : Duplicate label ("RS232_ContadorBits" or redefining symbol that cannot be redefined)
  65. Error[115]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 145 : Duplicate label ("RS232_Dato" or redefining symbol that cannot be redefined)
  66. Error[115]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 148 : Duplicate label ("RS232_Entrada" or redefining symbol that cannot be redefined)
  67. Error[115]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 149 : Duplicate label ("RS232_Salida" or redefining symbol that cannot be redefined)
  68. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 155 : Address label duplicated or different in second pass (RS232_Inicializa)
  69. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 177 : Address label duplicated or different in second pass (RS232_LeeDato)
  70. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 180 : Address label duplicated or different in second pass (RS232_EsperaBitStart)
  71. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 185 : Address label duplicated or different in second pass (RS232_LeeBit)
  72. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 211 : Address label duplicated or different in second pass (RS232_EnviaNumero)
  73. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 213 : Address label duplicated or different in second pass (RS232_EnviaDato)
  74. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 219 : Address label duplicated or different in second pass (RS232_EnviaBit)
  75. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 223 : Address label duplicated or different in second pass (RS232_EnviaUno)
  76. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 226 : Address label duplicated or different in second pass (RS232_EnviaCero)
  77. Error[116]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 228 : Address label duplicated or different in second pass (RS232_FinEnviaBit)
  78. Message[302] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\LCD_4BIT.INC 90 : Register in operand not in bank 0.  Ensure that bank bits are correct.
  79. Halting build on first failure as requested.
  80. ----------------------------------------------------------------------
  81. Release build of project `C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.disposable_mcp' failed.
  82. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
  83. Mon Sep 06 23:24:28 2010
  84. ----------------------------------------------------------------------
  85. BUILD FAILED

Y bien, me dice que las etiquetas deben ser creadas..bueno, no entiendo de ASM y me he puesto a ver de que diablos me habla( se de C), ... tiene pintas que he de agregar otro fichero *.INC, o algún estilo de cabecera, como si ( en C) fuera un *.h  , pero leiendo el libro no me asegura eso. Que problemas tengo ahí ? Por que no compila siquiera ? Es raro que no funcione un ejemplo que ha estado publicado y además ha sido exitoso, vamos, que alguna barbaridad ha tenido que pasar, pero no soy capaz de averiguar que ocurre....


« Última modificación: 08 de Septiembre de 2010, 20:32:34 por un Moderador, Razón: editado el titulo, por figurar 18F84 en lugar de 16F84 (Norberto) »

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: RS232 con Pic18F84A.
« Respuesta #1 en: 07 de Septiembre de 2010, 10:45:22 »
hola PICYO. es posible que no hallas hubicado bien los archivos .inc

hay que indicar en que direccion quieres meter los programas.y es recomendable hacerlo desde direcciones en comienzo de pagina.

ejemplo.

                          org      0x100
                          INCLUDE  <RS232.INC>
                          org      0x200
             INCLUDE  <RS232MEN.INC>
                          org      0x300
             INCLUDE  <LCD_4BIT.INC>
                          org      0x400
             INCLUDE  <LCD_MENS.INC>
                          org      0x500
             INCLUDE  <RETARDOS.INC>

todo depende de los bytes que ocupe los .inc para situar el programa en una direccion determinada. y ademas hay que tener cuidado de los saltos entre
paginas.para no saltar a una pagina equivocada.

en este enlace : http://www.todopic.com.ar/foros/index.php?topic=24397.0

hay programas que continen una usart por software.que podrias implementar en el 16f84.si retocas algunas lineas de la configuracion de los puertos de salida.
                          
« Última modificación: 07 de Septiembre de 2010, 10:55:30 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic18F84A.
« Respuesta #2 en: 07 de Septiembre de 2010, 21:45:18 »
Hola! cambié lo que me dijiste del modo :
Código: ASM
  1. ;;************************************ RS232_11.asm **************************************
  2. ;
  3. ;       ===================================================================
  4. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  5. ;         E. Palacios, F. Remiro y L. López.
  6. ;         Editorial Ra-Ma.  www.ra-ma.es
  7. ;       ===================================================================
  8. ;
  9. ; SISTEMA DE GOBIERNO DESDE ORDENADOR: Desde el teclado de un ordenador se desea comandar
  10. ; el movimiento de una estructura móvil, según la siguiente tabla:
  11. ;
  12. ;       TECLA (Por ejemplo)     MOVIMIENTO
  13. ;       -------------------             ----------
  14. ;               t               Adelante
  15. ;               b               Atrás
  16. ;               a               Izquierda
  17. ;               l               Derecha
  18. ;            Espacio            Parada
  19. ;
  20. ; La pulsación de cualquiera de estas teclas activa el estado de las salidas correspondiente
  21. ; RB3 (Adelante), RB2 (Atrás), RB1 (Izquierda), RB0 (Derecha) y apaga el resto.
  22. ;
  23. ; El movimiento que se está realizando aparece reflejado en un mensaje en el visualizador LCD
  24. ; del sistema y también en la pantalla del ordenador.
  25. ;
  26. ; El programa debe permitir modificar facilmente en posteriores revisiones en el hardware de
  27. ; la salida. Es decir, para activar las salidas conviene utilizar el direccionamiento por bit
  28. ; en lugar de por byte (utilizar instrucciones "bsf" y "bcf", en lugar de "mov..").
  29. ;
  30. ; ZONA DE DATOS **********************************************************************
  31.  
  32.        
  33.         __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
  34.         LIST       P=16F84A
  35.         INCLUDE  <P16f84A.INC>    
  36.  
  37.  
  38.  
  39.  
  40.         org 0x0040
  41.     INCLUDE  <RS232.INC>
  42.        
  43.         org 0x200
  44.         INCLUDE  <RS232MEN.INC>
  45.        
  46.         org 0x400
  47.         INCLUDE  <LCD_4BIT.INC>
  48.        
  49.         org 0x600
  50.         INCLUDE  <LCD_MENS.INC>
  51.  
  52.         org 0x800
  53.         INCLUDE  <RETARDOS.INC>
  54.  
  55.        
  56.  
  57.         CBLOCK   0x0C          
  58.         TeclaPulsada                    ; Va a guardar el contenido de la tecla pulsada.
  59.         MensajeApuntado                 ; Va a guarda la dirección del mensaje apuntado.
  60.         ENDC
  61.  
  62. #DEFINE  SalidaAdelante PORTB,3         ; Define dónde se sitúan las salidas.
  63. #DEFINE  SalidaAtras    PORTB,2
  64. #DEFINE  SalidaIzquierda        PORTB,1
  65. #DEFINE  SalidaDerecha  PORTB,0
  66.  
  67. TeclaAdelante   EQU     't'             ; Código de las teclas utilizadas.
  68. TeclaAtras      EQU     'b'
  69. TeclaIzquierda  EQU     'a'
  70. TeclaDerecha    EQU     'l'
  71. TeclaParada     EQU     ' '             ; Código de la tecla espaciadora, (hay un espacio,
  72.                                         ; tened cuidado al teclear el programa).
  73. ; ZONA DE CÓDIGOS ********************************************************************
  74.  
  75.         ORG     0
  76. Inicio
  77.         call    LCD_Inicializa
  78.         call    RS232_Inicializa
  79.         bsf     STATUS,RP0              ; Configura como salidas las 4 líneas del
  80.         bcf     SalidaAdelante          ; del Puerto B respetando la configuración del
  81.         bcf     SalidaAtras             ; resto de las líneas.
  82.         bcf     SalidaIzquierda
  83.         bcf     SalidaDerecha
  84.         bcf     STATUS,RP0
  85.         call    Parado                  ; En principio todas las salidas deben estar
  86. Principal                                       ; apagadas.
  87.         call    RS232_LeeDato           ; Espera a recibir un carácter.
  88.         call    TesteaTeclado
  89.         goto    Principal
  90.  
  91. ; "Mensajes" ----------------------------------------------------------------------------
  92. ;
  93. Mensajes
  94.         addwf   PCL,F
  95. MensajeParado
  96.         DT "Sistema PARADO", 0x00
  97. MensajeAdelante
  98.         DT "Marcha ADELANTE", 0x00
  99. MensajeAtras
  100.         DT "Marcha ATRAS", 0x00
  101. MensajeIzquierda
  102.         DT "Hacia IZQUIERDA", 0x00
  103. MensajeDerecha
  104.         DT "Hacia DERECHA", 0x00
  105.  
  106. ; Subrutina "TesteaTeclado" -------------------------------------------------------------
  107. ;
  108. ; Testea el teclado y actúa en consecuencia.
  109.  
  110. TesteaTeclado
  111.         movwf   TeclaPulsada            ; Guarda el contenido de la tecla pulsada.
  112.         xorlw   TeclaAdelante           ; ¿Es la tecla del movimiento hacia adelante?
  113.         btfsc   STATUS,Z
  114.         goto    Adelante                        ; Sí, se desea movimiento hacia adelante.
  115. ;
  116.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  117.         xorlw   TeclaAtras              ; ¿Es la tecla del movimiento hacia atrás?
  118.         btfsc   STATUS,Z
  119.         goto    Atras                   ; Sí, se desea movimiento hacia atrás.
  120. ;
  121.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  122.         xorlw   TeclaIzquierda          ; ¿Es la tecla del movimiento hacia la izquierda?
  123.         btfsc   STATUS,Z
  124.         goto    Izquierda                       ; Sí, se desea movimiento hacia la izquierda.
  125. ;
  126.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  127.         xorlw   TeclaDerecha            ; ¿Es tecla del movimiento hacia la derecha?
  128.         btfsc   STATUS,Z
  129.         goto    Derecha                 ; Sí, se desea movimiento hacia la derecha.
  130. ;
  131.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  132.         xorlw   TeclaParada             ; ¿Es la tecla de parada?.
  133.         btfss   STATUS,Z
  134.         goto    Fin                     ; No es ninguna tecla de movimiento. Sale.
  135. Parado
  136.         bcf     SalidaAdelante          ; Como se ha pulsado la tecla de parada se
  137.         bcf     SalidaAtras             ; desactivan todas las salidas.
  138.         bcf     SalidaIzquierda
  139.         bcf     SalidaDerecha
  140.         movlw   MensajeParado
  141.         goto    Visualiza
  142. Adelante
  143.         bcf     SalidaAtras
  144.         bsf     SalidaAdelante
  145.         bcf     SalidaIzquierda
  146.         bcf     SalidaDerecha
  147.         movlw   MensajeAdelante
  148.         goto    Visualiza
  149. Atras
  150.         bcf     SalidaAdelante
  151.         bsf     SalidaAtras
  152.         bcf     SalidaIzquierda
  153.         bcf     SalidaDerecha
  154.         movlw   MensajeAtras
  155.         goto    Visualiza
  156. Izquierda
  157.         bcf     SalidaAdelante
  158.         bcf     SalidaAtras
  159.         bsf     SalidaIzquierda
  160.         bcf     SalidaDerecha
  161.         movlw   MensajeIzquierda
  162.         goto    Visualiza
  163. Derecha
  164.         bcf     SalidaAdelante
  165.         bcf     SalidaAtras
  166.         bcf     SalidaIzquierda
  167.         bsf     SalidaDerecha
  168.         movlw   MensajeDerecha
  169.  
  170. ; Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
  171. ; el monitor del ordenador.
  172.  
  173. Visualiza
  174.         movwf   MensajeApuntado         ; Guarda la posición del mensaje.
  175.         call    LCD_Borra               ; Borra la pantalla del modulo LCD.
  176.         movf    MensajeApuntado,W       ; Visualiza el mensaje en la pantalla
  177.         call    LCD_Mensaje             ; del visualizador LCD.
  178.         call    RS232_LineasBlanco      ; Borra la pantalla del ordenador.
  179.         movf    MensajeApuntado,W
  180.         call    RS232_Mensaje           ; Lo visualiza en el HyperTerminal.
  181.         call    RS232_LineasBlanco
  182. Fin     return
  183.  
  184.        
  185.         END
  186.        
  187. ;       ===================================================================
  188. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  189. ;         E. Palacios, F. Remiro y L. López.
  190. ;         Editorial Ra-Ma.  www.ra-ma.es
  191. ;       ===================================================================

Ahora, según creo yo, da errores de solapamiento de memoria, es decir, cargará las librerías. Bien, según el error que tengo en pantalla, que es el siguiente :
Código: ASM
  1. Release build of project `C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.disposable_mcp' started.
  2. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
  3. Wed Sep 08 02:39:33 2010
  4. ----------------------------------------------------------------------
  5. Clean: Deleting intermediary and output files.
  6. Clean: Done.
  7. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.asm" /l"RS232_11.lst" /e"RS232_11.err" /o"RS232_11.o"
  8. Message[313] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232.INC 23 : CBLOCK constants will start with a value of 0.
  9. Message[302] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\LCD_4BIT.INC 90 : Register in operand not in bank 0.  Ensure that bank bits are correct.
  10. Warning[219] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\LCD_4BIT.INC 91 : Invalid RAM location specified.
  11. Warning[219] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\LCD_4BIT.INC 101 : Invalid RAM location specified.
  12. Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p16F84A "RS232_11.o" /z__MPLAB_BUILD=1 /o"RS232_11.cof" /M"RS232_11.map" /W
  13. MPLINK 4.37, Linker
  14. Copyright (c) 1998-2010 Microchip Technology Inc.
  15. Error - section '.org_2' can not fit the absolute section. Section '.org_2' start=0x00000400, length=0x00000108
  16. Errors    : 1
  17.  
  18. Link step failed.
  19. ----------------------------------------------------------------------
  20. Release build of project `C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.disposable_mcp' failed.
  21. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
  22. Wed Sep 08 02:39:35 2010
  23. ----------------------------------------------------------------------
  24. BUILD FAILED
sumo 0x00000400 ( donde digo que empieze ) y lse sumo la longitud de length=0x00000108, que hace la suma de 0x00561. Así la siguiente librería la carga en la dirección ( según he puesto yo ) 600 ( tiene espacio mas que suficiente). Pero me dice que la "pisa" ??

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: RS232 con Pic18F84A.
« Respuesta #3 en: 08 de Septiembre de 2010, 10:43:20 »
este pic solo tiene 4 bancos de 255 bytes.

asi que la ultima direccion es la 03FFh   no puedes poner org 0x400 ni ninguna direccion superior.

ademas tu programa esta mal para el 16F84

seria:

org    0

goto    inicio

org     5
inicio     "de aqui en adelante puedes poner codigo hasta la direccion 03FFh

el vector de reset esta en la direccion 0x0000 y aqui se pone un goto a la direccion 0x0005h ya que las direcciones 0x0001,0x0002,0x0003 estan reservadas.

y la direccion 0x0004 es el vector de interrupciones.aqui es donde salta el CP cuando se produce una interrupcion.y normalmente se pone ina instruccion de
salto a un subprograma para la gestion de esta.

tambien veo que el LCD_4BIT.inc esta escribiendo en una direccion de memoria que esta reserbada a un registro interno del pic.
me parece que el programa que estas usando no es para el 16F84.

revisalo bien.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic18F84A.
« Respuesta #4 en: 08 de Septiembre de 2010, 13:56:10 »
Bueno esto se empieza a complicar.

 Bien, entiendo que me he pasado con la dioreccion 0x400, ya que no existe. Viendo el datasheet (http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf    paginas -->5 y 6) Veo que hay una mapa " ¿ general? de memoria, que indica las posiciones de memoria tal como dices, de la0x004 a la 0x3FF.

Dentro de estas posiciones, las hay reservadas ( vector de reset 0x004), pero en la página de abajo, solo veo 2 bancos , BANK 0 y BANK 1, que por lo que veo son para implementar registros especiales y generales ( no memoria de programa pues?). El unico espacio que veo ( creo) libre para mi como programador, es el 0x0C al 0xCF del BANK 1. Bueno corríjeme si eso es así o no, la verdad que menudo lio... directamente he aprendido a programar en C desde la familia PIC18 ( que no tiene esto de los indices...).

EL programa si está escrito para ese PIC, de echo es de un libro . En el libro ( el código) no pone tampoco nada de org, pero tambien en algun lado del tecto ponen " correjir errores y compilar" ( o al reves) . Toma ya.

Bueno sigo, no entiendo ese mapa de memoria, no me queda nada claro desde que posicion debo poner todo lo que me dices.

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic18F84A.
« Respuesta #5 en: 08 de Septiembre de 2010, 13:57:57 »
ok , ya entiendo. El titulo del post esta mal ( me equivoque ) no es del pic 18.... el post deberia titularse como "RS232 con Pic16F84A."

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: RS232 con Pic18F84A.
« Respuesta #6 en: 08 de Septiembre de 2010, 16:09:33 »
Por que no pruebas a poner esto y despues ver que errores te da:

Código: [Seleccionar]
__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC34.

LIST    P=16F84A
INCLUDE  <P16f84A.INC>

                org 0
                goto inicio
                org 5

inicio:       INCLUDE  <RS232.INC>
               INCLUDE  <RS232MEN.INC>
               INCLUDE  <LCD_4BIT.INC>
               INCLUDE  <LCD_MENS.INC>
               INCLUDE  <RETARDOS.INC>

               CBLOCK   0x0C

el resto del programa
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: RS232 con Pic18F84A.
« Respuesta #7 en: 08 de Septiembre de 2010, 16:15:40 »
Tambien puedes realizarlo del siguiente modo:
Por que no pruebas a poner esto y despues ver que errores te da:

Código: [Seleccionar]
__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC34.

LIST    P=16F84A
INCLUDE  <P16f84A.INC>

                org 0
                goto inicio
                org 5

inicio:       CBLOCK   0x0C

el resto del programa

               INCLUDE  <RS232.INC>
               INCLUDE  <RS232MEN.INC>
               INCLUDE  <LCD_4BIT.INC>
               INCLUDE  <LCD_MENS.INC>
               INCLUDE  <RETARDOS.INC>
               END
Todos los días se aprende algo nuevo.

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic18F84A.
« Respuesta #8 en: 08 de Septiembre de 2010, 17:41:05 »
Hola, como me has dicho simplemente agrego esto al programa, y estos son los errores que me salen :


codigo:
Código: ASM
  1. ;************************************ RS232_11.asm **************************************
  2.         __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC34.
  3.  
  4.         LIST       P=16F84A
  5.         INCLUDE  <P16f84A.INC>
  6.  
  7.                 org 0
  8.                 goto inicio
  9.                 org 5
  10.  
  11.   inicio:      CBLOCK   0x0C
  12.  
  13.        
  14.  
  15.                INCLUDE  <RS232.INC>
  16.                INCLUDE  <RS232MEN.INC>
  17.                INCLUDE  <LCD_4BIT.INC>
  18.                INCLUDE  <LCD_MENS.INC>
  19.                INCLUDE  <RETARDOS.INC>
  20.                END

errores:
Código: ASM
  1. Release build of project `C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.disposable_mcp' started.
  2. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
  3. Wed Sep 08 22:39:28 2010
  4. ----------------------------------------------------------------------
  5. Clean: Deleting intermediary and output files.
  6. Clean: Done.
  7. Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.asm" /l"RS232_11.lst" /e"RS232_11.err" /o"RS232_11.o"
  8. Error[113]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 2 : Symbol not previously defined (_XT_OSC34.)
  9. Error[113]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 8 : Symbol not previously defined (inicio)
  10. Warning[207] C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 11 : Found label after column 1. (inicio)
  11. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 11 : Illegal label (inicio)
  12. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 15 : Illegal label (INCLUDE  <RS232.INC>)
  13. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 16 : Illegal label (INCLUDE  <RS232MEN.INC>)
  14. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 17 : Illegal label (INCLUDE  <LCD_4BIT.INC>)
  15. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 18 : Illegal label (INCLUDE  <LCD_MENS.INC>)
  16. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 19 : Illegal label (INCLUDE  <RETARDOS.INC>)
  17. Error[121]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 20 : Illegal label (END)
  18. Error[129]   C:\PROGRAM FILES\MICROCHIP\PROYECTOS\PICRS232\RS232_11.ASM 21 : Expected (END)
  19. Halting build on first failure as requested.
  20. ----------------------------------------------------------------------
  21. Release build of project `C:\Program Files\Microchip\Proyectos\PicRS232\RS232_11.disposable_mcp' failed.
  22. Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
  23. Wed Sep 08 22:39:30 2010
  24. ----------------------------------------------------------------------
  25. BUILD FAILED

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: RS232 con Pic16F84A.
« Respuesta #9 en: 08 de Septiembre de 2010, 21:26:59 »
tienes que poner el programa completo.no lo que has insertado.porque si lo has insertado mal,te van a seguir saliendo errores.

por ejemplo el CBLOCK  0X0C. hay que poner los registros que quieras insertar desde la direccion 0x0C. y al final poner ENDC

esta directiva se usa para registros que no necesiten ser nombrados.
                       
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic16F84A.
« Respuesta #10 en: 09 de Septiembre de 2010, 06:32:09 »
Hombre, he visto que alguien me ha cambiado el título, grácias (ayer traté de hacerlo yo pero no vi cómo). Bueno, tras meter esto aqui, volver a ponerlo allá, y no se que ( realmente) me ha compilado, pero me sigue dnado un error ( que no esá en el seguimiento de errores del MpLab). Este error sale en una ventana de aviso de windows, y pone lo siguiente :

"Failed to load C:\Program Files\Microchip\Proyectos\PicRS232\PicRS232.cof"

Bueno, eta bastante bien , ha compilado, pero eso del .cof
Este archivo creo que es el que se carga en Proteus, al micro. Sin este archivo, todo el trabajo es inutil ( porque en Proteus no puedo cargar el HEX no..?). Estoy mirando a ver si es que me pide que habilite la opcion de generar dicho archivo, pero no lo veo...

Por cierto, el ASM queda asi ( directo del libro y vuelta a pegar debajo de todo los includes... cosa que es rara, pero si funciona...)
Código: ASM
  1. ;************************************ RS232_11.asm **************************************
  2. ;
  3. ;       ===================================================================
  4. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  5. ;         E. Palacios, F. Remiro y L. López.
  6. ;         Editorial Ra-Ma.  www.ra-ma.es
  7. ;       ===================================================================
  8. ;
  9. ; SISTEMA DE GOBIERNO DESDE ORDENADOR: Desde el teclado de un ordenador se desea comandar
  10. ; el movimiento de una estructura móvil, según la siguiente tabla:
  11. ;
  12. ;       TECLA (Por ejemplo)     MOVIMIENTO
  13. ;       -------------------             ----------
  14. ;               t               Adelante
  15. ;               b               Atrás
  16. ;               a               Izquierda
  17. ;               l               Derecha
  18. ;            Espacio            Parada
  19. ;
  20. ; La pulsación de cualquiera de estas teclas activa el estado de las salidas correspondiente
  21. ; RB3 (Adelante), RB2 (Atrás), RB1 (Izquierda), RB0 (Derecha) y apaga el resto.
  22. ;
  23. ; El movimiento que se está realizando aparece reflejado en un mensaje en el visualizador LCD
  24. ; del sistema y también en la pantalla del ordenador.
  25. ;
  26. ; El programa debe permitir modificar facilmente en posteriores revisiones en el hardware de
  27. ; la salida. Es decir, para activar las salidas conviene utilizar el direccionamiento por bit
  28. ; en lugar de por byte (utilizar instrucciones "bsf" y "bcf", en lugar de "mov..").
  29. ;
  30. ; ZONA DE DATOS **********************************************************************
  31.  
  32.         __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
  33.         LIST       P=16F84A
  34.         INCLUDE  <P16f84A.INC>
  35.  
  36.         CBLOCK   0x0C          
  37.         TeclaPulsada                    ; Va a guardar el contenido de la tecla pulsada.
  38.         MensajeApuntado                 ; Va a guarda la dirección del mensaje apuntado.
  39.         ENDC
  40.  
  41. #DEFINE  SalidaAdelante PORTB,3         ; Define dónde se sitúan las salidas.
  42. #DEFINE  SalidaAtras    PORTB,2
  43. #DEFINE  SalidaIzquierda        PORTB,1
  44. #DEFINE  SalidaDerecha  PORTB,0
  45.  
  46. TeclaAdelante   EQU     't'             ; Código de las teclas utilizadas.
  47. TeclaAtras      EQU     'b'
  48. TeclaIzquierda  EQU     'a'
  49. TeclaDerecha    EQU     'l'
  50. TeclaParada     EQU     ' '             ; Código de la tecla espaciadora, (hay un espacio,
  51.                                         ; tened cuidado al teclear el programa).
  52. ; ZONA DE CÓDIGOS ********************************************************************
  53.  
  54.         ORG     0
  55. Inicio
  56.         call    LCD_Inicializa
  57.         call    RS232_Inicializa
  58.         bsf     STATUS,RP0              ; Configura como salidas las 4 líneas del
  59.         bcf     SalidaAdelante          ; del Puerto B respetando la configuración del
  60.         bcf     SalidaAtras             ; resto de las líneas.
  61.         bcf     SalidaIzquierda
  62.         bcf     SalidaDerecha
  63.         bcf     STATUS,RP0
  64.         call    Parado                  ; En principio todas las salidas deben estar
  65. Principal                                       ; apagadas.
  66.         call    RS232_LeeDato           ; Espera a recibir un carácter.
  67.         call    TesteaTeclado
  68.         goto    Principal
  69.  
  70. ; "Mensajes" ----------------------------------------------------------------------------
  71. ;
  72. Mensajes
  73.         addwf   PCL,F
  74. MensajeParado
  75.         DT "Sistema PARADO", 0x00
  76. MensajeAdelante
  77.         DT "Marcha ADELANTE", 0x00
  78. MensajeAtras
  79.         DT "Marcha ATRAS", 0x00
  80. MensajeIzquierda
  81.         DT "Hacia IZQUIERDA", 0x00
  82. MensajeDerecha
  83.         DT "Hacia DERECHA", 0x00
  84.  
  85. ; Subrutina "TesteaTeclado" -------------------------------------------------------------
  86. ;
  87. ; Testea el teclado y actúa en consecuencia.
  88.  
  89. TesteaTeclado
  90.         movwf   TeclaPulsada            ; Guarda el contenido de la tecla pulsada.
  91.         xorlw   TeclaAdelante           ; ¿Es la tecla del movimiento hacia adelante?
  92.         btfsc   STATUS,Z
  93.         goto    Adelante                        ; Sí, se desea movimiento hacia adelante.
  94. ;
  95.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  96.         xorlw   TeclaAtras              ; ¿Es la tecla del movimiento hacia atrás?
  97.         btfsc   STATUS,Z
  98.         goto    Atras                   ; Sí, se desea movimiento hacia atrás.
  99. ;
  100.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  101.         xorlw   TeclaIzquierda          ; ¿Es la tecla del movimiento hacia la izquierda?
  102.         btfsc   STATUS,Z
  103.         goto    Izquierda                       ; Sí, se desea movimiento hacia la izquierda.
  104. ;
  105.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  106.         xorlw   TeclaDerecha            ; ¿Es tecla del movimiento hacia la derecha?
  107.         btfsc   STATUS,Z
  108.         goto    Derecha                 ; Sí, se desea movimiento hacia la derecha.
  109. ;
  110.         movf    TeclaPulsada,W          ; Recupera el contenido de la tecla pulsada.
  111.         xorlw   TeclaParada             ; ¿Es la tecla de parada?.
  112.         btfss   STATUS,Z
  113.         goto    Fin                     ; No es ninguna tecla de movimiento. Sale.
  114. Parado
  115.         bcf     SalidaAdelante          ; Como se ha pulsado la tecla de parada se
  116.         bcf     SalidaAtras             ; desactivan todas las salidas.
  117.         bcf     SalidaIzquierda
  118.         bcf     SalidaDerecha
  119.         movlw   MensajeParado
  120.         goto    Visualiza
  121. Adelante
  122.         bcf     SalidaAtras
  123.         bsf     SalidaAdelante
  124.         bcf     SalidaIzquierda
  125.         bcf     SalidaDerecha
  126.         movlw   MensajeAdelante
  127.         goto    Visualiza
  128. Atras
  129.         bcf     SalidaAdelante
  130.         bsf     SalidaAtras
  131.         bcf     SalidaIzquierda
  132.         bcf     SalidaDerecha
  133.         movlw   MensajeAtras
  134.         goto    Visualiza
  135. Izquierda
  136.         bcf     SalidaAdelante
  137.         bcf     SalidaAtras
  138.         bsf     SalidaIzquierda
  139.         bcf     SalidaDerecha
  140.         movlw   MensajeIzquierda
  141.         goto    Visualiza
  142. Derecha
  143.         bcf     SalidaAdelante
  144.         bcf     SalidaAtras
  145.         bcf     SalidaIzquierda
  146.         bsf     SalidaDerecha
  147.         movlw   MensajeDerecha
  148.  
  149. ; Según el estado de las salidas visualiza el estado del sistema en el visualizador LCD y en
  150. ; el monitor del ordenador.
  151.  
  152. Visualiza
  153.         movwf   MensajeApuntado         ; Guarda la posición del mensaje.
  154.         call    LCD_Borra               ; Borra la pantalla del modulo LCD.
  155.         movf    MensajeApuntado,W       ; Visualiza el mensaje en la pantalla
  156.         call    LCD_Mensaje             ; del visualizador LCD.
  157.         call    RS232_LineasBlanco      ; Borra la pantalla del ordenador.
  158.         movf    MensajeApuntado,W
  159.         call    RS232_Mensaje           ; Lo visualiza en el HyperTerminal.
  160.         call    RS232_LineasBlanco
  161. Fin     return
  162.  
  163.         INCLUDE  <RS232.INC>
  164.         INCLUDE  <RS232MEN.INC>
  165.         INCLUDE  <LCD_4BIT.INC>
  166.         INCLUDE  <LCD_MENS.INC>
  167.         INCLUDE  <RETARDOS.INC>
  168.         END
  169.        
  170. ;       ===================================================================
  171. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  172. ;         E. Palacios, F. Remiro y L. López.
  173. ;         Editorial Ra-Ma.  www.ra-ma.es
  174. ;       ===================================================================
« Última modificación: 09 de Septiembre de 2010, 06:35:12 por PICYO »

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic16F84A.
« Respuesta #11 en: 09 de Septiembre de 2010, 07:32:26 »
Vale, ya se que era, estaba en modo debug, y no release !

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: RS232 con Pic16F84A.
« Respuesta #12 en: 09 de Septiembre de 2010, 07:53:34 »
Hombre cuando te puse como deberias de escribirlo te puse:


el resto del programa


deberias de haber puesto eso TODO el programa.
De todas formas me alegro que te haya funcionado ;-) ;-) ;-)

F.
Todos los días se aprende algo nuevo.

Desconectado PICYO

  • PIC16
  • ***
  • Mensajes: 104
Re: RS232 con Pic16F84A.
« Respuesta #13 en: 09 de Septiembre de 2010, 17:41:49 »
uhm, si, lo que eso ya fué un poco mas cosa mia, digo... si simplemente cargo estas librerías... se me quejará sólo por eso el programa ?
Bueno me ha compilado, eso está bien. Ahora falta que no me falle el circuito del Isis y el envio de los datos con el VC++ , vamos, que el tema está aún abierto. Aunque por asm creo que no..gracias a los dos !!

Desconectado lalo92_1

  • PIC10
  • *
  • Mensajes: 5
Re: RS232 con Pic16F84A.
« Respuesta #14 en: 24 de Enero de 2013, 13:54:38 »
Hola encontraste por que te salia el archivo .cof??
"Failed to load C:\Program Files\Microchip\Proyectos\PicRS232\PicRS232.cof"
 a mi me sale pero no me funciona bien en el isis.
saludos.


 

anything