Hola:
Puedo hacer un desplazamiento por el puerto B con este código.
	
	
	
		
Lo que me falta ahora es con un pulsador en el PORTA, el que sea que se desplace solo 4 bits del PORTB llamado RB4, RB5, RB6 y RB7. Cuando llegue al último bits RB7, vuelva a desplazarse directamente al RB4.
Un ejemplo, si introducimos un pulso (no interruptor) en el RA0, se daplaza el bits a la derecha que es la instrucción rrf.
		
		
	
	
		
	
Cuando llegue al paso 5), el bit 1 del RB7 del paso 4) vuelve al RB4 del paso 5).
Es todo lo que quiro hacer.
				
			Puedo hacer un desplazamiento por el puerto B con este código.
		Código:
	
	; ZONA DE DATOS *********************************************************************
    LIST       P=16F84A            ; Procesador utilizado.
    INCLUDE  <P16F84A.INC>        ; Definición de algunos operandos utilizados.
    __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
; ZONA DE CÓDIGOS ********************************************************************
    ORG     0                    ; El programa comienza en la dirección 0.
Inicio
    bsf        STATUS,RP0            ; Acceso al Banco 1.
    clrf    TRISB                ; Las líneas del Puerto B se configuran como salida.
    movlw    b'00011111'            ; Las 5 líneas del Puerto A se configuran como entrada.
    movwf    TRISA
    bcf        STATUS,RP0            ; Acceso al Banco 0.
Principal
     bcf        STATUS,C            ; Este "0" es el que entrará por la izquierda.
    rrf        PORTA,W                ; Rota los bits una posición a la derecha y lo
    movwf    PORTB                ; lleva al Puerto B para que se visualice.
    goto     Principal            ; Se crea un bucle cerrado e infinito.
    END                            ; Fin del programa.
	Un ejemplo, si introducimos un pulso (no interruptor) en el RA0, se daplaza el bits a la derecha que es la instrucción rrf.
Cuando llegue al paso 5), el bit 1 del RB7 del paso 4) vuelve al RB4 del paso 5).
Es todo lo que quiro hacer.