Uf ... lo conseguí.
Este es el programa, esta hecho para un motor pap unipolar que es el que trae el PROTEUS.
De todas formas el asunto de los grados en el motor pap de PROTEUS creo que no va bien.
Tuve que depurarlo en MPLAB paso a paso y funciona de perlas.
Si te pediría dragón33 que lo probases físicamente y me dijeses si funciona.
Ahí va:
; PaPunip4.asm
;
List p=16F876 ;Tipo de procesador
include "P16F876.INC" ;Definiciones de registros internos
TEMP1 EQU 0x20 ;TEMP1 y TEMP2 --> temporización de 50ms aprox.
TEMP2 EQU 0x21
TEMP3 EQU 0x22 ;Temporal para almacenar el valor anterior PORTA
CONTADOR EQU 0x23 ;CONTADOR3=PORTAanterior-PORTApresente
org 0x00 ;Vector de Reset
goto INICIO
org 0x05
INICIO bsf STATUS,RP0 ;Seleccionamos el banco 1
movlw 0x06
movwf ADCON1
movlw 0xFF
movwf TRISA ;PORTA entradas
clrf TRISB ;PORTB salidas
clrf CONTADOR
clrf TEMP3
bcf STATUS,RP0 ;Seleccionamos el banco 0
clrf PORTB
clrf INTCON
BUCLE1 movfw TEMP3
subwf PORTA,0 ;PORTApresente-TEMP3(PORTAanterior) --> W
btfsc STATUS,Z
goto BUCLE1 ;Paro
movwf CONTADOR ;Número de pasos hacia delante o atrás
movfw PORTA ;Almacena PORTApresente en TEMP3
movwf TEMP3
btfss STATUS,C ;Si C=0 hay acarreo
goto ANTIHORARIO ;Como C=0 la resta es (-) --> antihorario
goto HORARIO ;Como C=1 la resta es (+) --> horario
;*************************************************************************
HORARIO
PASO1H movlw b"00001100"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO2H
goto BUCLE1
PASO2H movlw b"00000110"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO3H
goto BUCLE1
PASO3H movlw b"00000011"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO4H
goto BUCLE1
PASO4H movlw b"00001001"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO1H
goto BUCLE1
;*************************************************************************
ANTIHORARIO
comf CONTADOR,1 ;Complemento a 1
incf CONTADOR,1 ;más 1 y tenemos el número positivo
PASO1A movlw b"00001001"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO2A
goto BUCLE1
PASO2A movlw b"00000011"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO3A
goto BUCLE1
PASO3A movlw b"00000110"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO4A
goto BUCLE1
PASO4A movlw b"00001100"
movwf PORTB
call DELAY
decfsz CONTADOR,1
goto PASO1A
goto BUCLE1
;*************************************************************************
DELAY movlw 0x50 ;Temporización entre pasos de aprox.50ms
movwf TEMP1
clrf TEMP2
DELAY_1 decfsz TEMP2,F
goto DELAY_1
decfsz TEMP1,F
goto DELAY_1
RETURN
END