Autor Tema: Código para PIC16F887 MPLAB.  (Leído 92 veces)

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

Desconectado ERos

  • PIC10
  • *
  • Mensajes: 2
Código para PIC16F887 MPLAB.
« en: 11 de Febrero de 2019, 20:31:54 »
Necesito saber este microcontrolador. Tengo el siguiente código
Código: [Seleccionar]
#include "p16f887.inc"

; CONFIG1
; __config 0xEFC4
 __CONFIG _CONFIG1, _FOSC_INTRC_NOCLKOUT & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _IESO_ON & _FCMEN_ON & _LVP_OFF
; CONFIG2
; __config 0xFFFF
 __CONFIG _CONFIG2, _BOR4V_BOR40V & _WRT_OFF
REGISTROS UDATA 0X0020
INICIO
        BANKSEL TRISA
BCF     TRISA, RA0
BCF     TRISA, RA1
BCF     TRISA, RA2
BSF     TRISB, RB0
BSF     TRISB, RB1
BSF     TRISB, RB2
BSF     TRISB, RB3
BSF     TRISB, RB4
BSF     TRISB, RB5
BSF     TRISB, RB6
BSF     TRISB, RB7
BSF     TRISA, RA3
BSF     TRISA, RA4
BANKSEL ANSEL
CLRF    ANSEL
BANKSEL ANSELH
CLRF    ANSELH
GOTO    BUCLE

BUCLE
MOVF    TRISB, W
ADDWF   W
MOVWF   TRISA, RA3
NOP
SUBLW   7
XORWF   TRISA, RA3
BTFSS   TRISA, RA3
GOTO    CONDICION1
GOTO    CONDICION2

CONDICION1   
MOVLW   1
MOVWF   TRISA, RA1
END
   
   Explico a continuación: Mi idea es hacer que PORTB sume todos los bits en alto y al sumarlo restar el total de bits (que son ocho); la resta se debe guardar en PORTA, RA3, luego XOR la resta (PORTA, RA3) con el resultado de la suma, y si es igual a uno hará una serie de condiciones
   Sin embargo me aparecen una serie de errores al parecer de archivo. Mis dudas son ¿Cómo se puede definir una entrada y una Salida en este microcontrolador con MPLAB de forma correcta?

"C:\Program Files (x86)\Microchip\MPLABX\v4.05\mpasmx\mpasmx.exe" -q -p16f887 -l"build/default/production/newAsmTemplate.lst" -e"build/default/production/newAsmTemplate.err" -o"build/default/production/newAsmTemplate.o" "newAsmTemplate.asm"
Error[152]   C:\USERS\ERICK\MPLABXPROJECTS\9.X\NEWASMTEMPLATE.ASM 11 : Executable code and data must be defined in an appropriate section
Error[152]   C:\USERS\ERICK\MPLABXPROJECTS\9.X\NEWASMTEMPLATE.ASM 11 : Executable code and data must be defined in an appropriate section
Message[302] C:\USERS\ERICK\MPLABXPROJECTS\9.X\NEWASMTEMPLATE.ASM 12 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[152]   C:\USERS\ERICK\MPLABXPROJECTS\9.X\NEWASMTEMPLATE.ASM 12 : Executable code and data must be defined in an appropriate section
Message[302] C:\USERS\ERICK\MPLABXPROJECTS\9.X\NEWASMTEMPLATE.ASM 13 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[152]   C:\USERS\ERICK\MPLABXPROJECTS\9.X\NEWASMTEMPLATE.ASM 13 : Executable code and data must be defined in an appropriate section
« Última modificación: 11 de Febrero de 2019, 21:18:10 por ERos »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7051
Re:Código para PIC16F887 MPLAB.
« Respuesta #1 en: 11 de Febrero de 2019, 21:04:31 »
Lo que pasa es que udata comienza la seccion de variable no inicializadas... Y nunca haces comenzar la seccion de codigo... Deberias, luego de REGISTROS UDATA 0x0020, deberia quedarte asi:


Código: ASM
  1.  __CONFIG _CONFIG2, _BOR4V_BOR40V & _WRT_OFF
  2.  
  3. REGISTROS UDATA 0X0020
  4.  
  5.     CODE 0x0000 ; Aca tu inicio de codigo y posicion en la FLASH, sino pone CODE solo
  6.  
  7. INICIO
  8.         BANKSEL TRISA