hola amigos.
he hecho un programilla para comunicar el pic con el ordenador y q este ultimo reciba datos de un sensor (no se si estara bien)
el problema es que al pasar de asm a hex me da a entender como que no programo bien los bancos. os envio el archivo con los errores por si sabeis una solucion porque la cosa es qe justo antes de que me de el error estoy cambiando de banco. sera que no me lo detecta? o que esty poniendo mal el banco?
gracias
MPASM 02.30 Released PIC1.ASM 4-3-2006 9:44:42 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 Title "primer programa"
00002 ;queremos que teniendo una entrada analogica
00003 ;los datos que entren por esta salgan por el puerto serie y vayan al pc
00004
00005
00006 list p=16f876 ; processor type
00007 include <p16f876.inc>
00001 LIST
00002 ; P16F876.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
00357 LIST
00008
00000020 00009 TEMP equ 0x20
00010
00011 ;-------
00012 ; RESET
00013 ;-------
0000 00014 org 00h ; direccion de comienzo = 0000
00015 ; cuando se produce un reset o comienza el programa
0000 2801 00016 goto INICIO ; va a la primera instruccion del programa
00017
00018
00019 ; --------------------
00020 ; INICIO DE PROGRAMA
00021 ; --------------------
00022
0001 1283 00023 INICIO bcf STATUS,RP0 ; BANCO 0
0002 1303 00024 bcf STATUS,RP1
00025
0003 0187 00026 clrf PORTC ; Limpia todos los bits de PORTC
0004 0186 00027 clrf PORTB ; Limpia todos los bits de PORTB
00028
0005 1683 00029 bsf STATUS,RP0 ; BANCO 1
0006 1303 00030 bcf STATUS,RP1
00031
0007 3001 00032 movlw b"00000001"
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0008 0085 00033 movwf TRISA ; PORTA como entradas
00034
0009 1283 00035 bcf STATUS,RP0 ; BANCO 0
000A 1303 00036 bcf STATUS,RP1
00037
000B 1798 00038 bsf RCSTA,SPEN ; Activamos la USART (bit SPEN del
00039 ; registro RCSTA) 7=habilito puerto serie
00040
000C 1683 00041 bsf STATUS,RP0 ; BANCO 1
000D 1303 00042 bcf STATUS,RP1
00043
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000E 0186 00044 clrf TRISB ; puertab como salida
000F 30FF 00045 movlw b"11111111" ; RC7/RX entrada
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0010 0087 00046 movwf TRISC ; RC6/TX salida
00047
MPASM 02.30 Released PIC1.ASM 4-3-2006 9:44:42 PAGE 2
primer programa
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0011 3024 00048 movlw b"00100100" ; Configuramos USART para high speed y
00049 ; permitimos transmisión
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0012 0098 00050 movwf TXSTA ; y activacion de transmision (asincrono)
00051
0013 3019 00052 movlw d"25" ; Miramos la tablas del datasheet y
00053 ; escribimos 25 en SPBRG
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0014 0099 00054 movwf SPBRG ; para configurar una velocidad de
00055 ; transmisión de 9600 BAUDIOS a 4 MHz
00056
0015 1283 00057 bcf STATUS,RP0 ; BANCO0
0016 1303 00058 bCf STATUS,RP1
00059
0017 3080 00060 movlw b"10000000"
0018 0098 00061 movwf RCSTA ; habilito puerto serie
00062
0019 1683 00063 bsf STATUS,RP0 ; banco1
001A 1303 00064 bCf STATUS,RP1
00065
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
001B 1698 00066 bsf TXSTA,TXEN ; 5=TXEN habilita la transmision
00067
001C 2021 00068 call INICIAAD ; configura modulo A/D
001D 2038 00069 call ENVIAR ; envia datos por puerto serie
00070
001E 3080 00071 movlw b"10000000" ; hago parpadear led q indica que funciona
001F 0686 00072 xorwf PORTB,F
0020 2821 00073 goto INICIAAD
00074
00075 ;---------------------------------------------------------
00076 ; IniciaAD - inicializa e instala el hardware a/d.
00077 ; Selecion de AN0 como entrada analogica, RC clock.
00078 ; Permire interrupciones
00079 ;---------------------------------------------------------
00080
0021 1683 00081 INICIAAD bsf STATUS,RP0 ; Pasar a RAM BANCO1
0022 1303 00082 bCf STATUS,RP1
00083
0023 308E 00084 movlw B"10001110" ; RA0 analog inputs(el resto RAx I/O digitales)
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0024 009F 00085 movwf ADCON1 ; justificado a la derecha
00086 ; 8 bits mas significativos en ADRESH
00087
0025 1283 00088 bcf STATUS,RP0 ; elegimos BANCO0
0026 1303 00089 bCf STATUS,RP1
00090
0027 3041 00091 movLW B"01000001" ; Selecciono RC osc (FOSC/8), AN0
0028 009F 00092 movWF ADCON0 ; A/D habilitado
0029 130C 00093 bcf PIR1,ADIF ; cuando finaliza una conversion este bit se activa
002A 151F 00094 bsf ADCON0,GO ; 2=GO , la conversion esta en proceso
00095
002B 081E 00096 UPDATE movf ADRESH,w ; convsigue valor a/d
MPASM 02.30 Released PIC1.ASM 4-3-2006 9:44:42 PAGE 3
primer programa
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
002C 0087 00097 movwf PORTC ; output a portc
002D 2033 00098 call ESPERA
002E 151F 00099 bsf ADCON0,GO ; comienza nueva conversion
00100
002F 191F 00101 LOOP btfsc ADCON0,GO ; si go=0 la siguiente instruccion es descartada
00102 ; (ejecuta NOP) saltando a la siguiente
00103 ; si go=1 ejecuta la siguiente instruccion
0030 282B 00104 goto UPDATE
0031 282F 00105 goto LOOP
00106
0032 0008 00107 return
00108
00109 ;-------------------------------------------------------
00110 ; ESPERA - necesitamos un tiempo de retraso
00111 ; para que se pueda asegurar la adquisicion de datos.
00112 ;-------------------------------------------------------
00113
0033 3003 00114 ESPERA movlw 3
0034 00A0 00115 movwf TEMP
0035 0BA0 00116 SD decfsz TEMP, F
0036 2835 00117 goto SD
0037 0008 00118 return
00119
00120 ;----------------------------------------------------
00121 ; ENVIAR datos por puerto serie
00122 ;----------------------------------------------------
00123
0038 0099 00124 ENVIAR movwf TXREG ; Movemos lo que queremos transmitir
00125 ; (debe estar en el registro W)
00126 ; al registro TXREG y empezamos a transmitir
00127
0039 1F98 00128 FIN_TX btfss RCSTA,SPEN ; Compruebo si el bit TMRT del registro esta
00129 ; a "1" o a "0".
003A 2839 00130 goto FIN_TX ; Si esta a "0" es que esta lleno TMRT y no
00131 ; ha terminado de transmitir,
00132 ; para ello TRMT tiene que estar a 1, hasta
00133 ; entonces esperamos.
003B 0008 00134 return
00135
00136 END
MPASM 02.30 Released PIC1.ASM 4-3-2006 9:44:42 PAGE 4
primer programa
.
.
.
.
MEMORY USAGE MAP ("X" = Used, "-" = Unused)
0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXX----
All other memory blocks unused.
Program Memory Words Used: 60
Program Memory Words Free: 8132
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 7 reported, 0 suppressed