Llenar 4 bancos de la pic MPLAB PIC16F886

Hola compañeros de este foro pues veran tengo una duda de por que no me funciona mi programa estoy usando el simulador de MPLAB trabajando con la pic 16F886 el objetivo principal es llenar el banco 0 con el número 75, el banco 1 con una numeración ascendente, el banco 2 con una numeración descendente, y el banco 3 con el número AA, hasta ahora eh logrado cumplir lo que tengo que hacer el el banco 0,1 Y 3 pero en el banco 2 me copia la informacion del banco 0 y no realiza lo que tiene que hacer les dejo mi programa y una captura espero que me puedan ayudar

Código:
  list        p=16f886    ; list directive to define processor
    #include    <p16f886.inc>   ; processor specific variable definitions

    __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
    __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V

RESET_VECTOR    CODE    0x0000 ; processor reset vector    NOP
	NOP
    goto    start              ; go to beginning of program



MAIN_PROG       CODE 0x05

start
	BANCOZERO
	CLRF 0X7F 
	MOVLW 0x20
	MOVWF FSR
	PROG
	MOVLW 0X75
	MOVWF INDF
	MOVFW 0X7F
	SUBLW 0X75
	BTFSC STATUS,Z
	GOTO BANCO1
	INCF FSR 
	GOTO PROG

	BANCO1 ;ETIQUETA PARA
	CLRF STATUS
	BSF STATUS,RP0
	MOVLW 0xA0
	MOVWF FSR
	PROG1
	INCF 0XC0
	MOVFW 0XC0
	MOVWF INDF
	MOVFW 0XEF
	SUBLW 0X03
	BTFSC STATUS,Z
	GOTO BANCO2
	INCF FSR 
	GOTO PROG1

	BANCO2 ;ETIQUETA PARA
	CLRF STATUS
	BSF STATUS,IRP
	BSF STATUS,RP1
	BSF STATUS,RP0
	MOVLW 0X120
	MOVWF FSR
	PROG2
	DECF 0X122
	MOVFW 0X122
	MOVWF INDF
	MOVFW 0X16F
	SUBLW 0X77
	BTFSC STATUS,Z
	GOTO BANCO3
	INCF FSR 
	GOTO PROG2
	
	BANCO3 ;ETIQUETA PARA
	CLRF STATUS
	BSF STATUS,IRP
	BSF STATUS,RP1
	BSF STATUS,RP0
	MOVLW 0X1A0 
	MOVWF FSR 
	PROG3   
	MOVLW 0XAA
	MOVWF INDF 
	MOVFW 0X1EF  
	SUBLW 0X34
	BTFSC STATUS,Z  
	GOTO BANCO3   
	INCF FSR 
	GOTO PROG3
	PARA
	GOTO PARA	
	END
...
 

Adjuntos

  • bankpart1.png
    bankpart1.png
    21.7 KB · Visitas: 7
  • bankpart2.png
    bankpart2.png
    19.7 KB · Visitas: 6
Última edición:
no he analizado .. al detalle tu codigo, pero lo he simulado... :)

lo que tu dices sucede.. porque cierto grupo de direcciones estan mapeadas en todos los bancos por igual... se pueden acceder desde cualquier banco y comparten el mismo "registro"..

bueno, eso tengo entendido..
el datasheet lo especifica, en el mapa de memoria :)

0x70-0x7F (banco 0) son lo mismo para:
0xF0-0xFF(banco 1)
0x170-0x17F(banco 2)
0x1F0-0x1FF(banco 3)
 

Adjuntos

  • dibujo.jpg
    dibujo.jpg
    148.7 KB · Visitas: 10
Última edición:
Atrás
Arriba