pic 16f877a assembler poner lo que introdusca en un puerto y me salga en otro

mi problema es el siguiente, debo que con pulsadores poner x valor en el puerto c usando los todos los pines y ese mismo numero mostrarlo en la salidas del puerto d que son los ocho pines y eso unicament va apasar cuando yo pulse otro pulsador que esta conectado en el puerto e,0
tengo esta programacion pero el problema es que cuando estoy simulando en mplab, no me cambia el status a cero y me queda en (hex:1c) no se como hacer para que funcione si aguien me puede a y u d a r -a g r a d e c e r i a de todo corazón

la programacion es en assembler
list p=16F877a
#include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF
ORG 0X000

CLRF STATUS
CLRF PORTC
CLRF PORTD
CLRF PORTE
BSF STATUS,RP0
MOVLW 0X02
MOVWF ADCON1
MOVLW 0X01
MOVWF TRISE
MOVLW 0X00
MOVWF TRISD
MOVLW 0XFF
MOVWF TRISC

BCF STATUS,RP0
CLRF PORTD

INICIO
BTFSS PORTE,0
GOTO INICIO
GOTO ENCENDER

ENCENDER
MOVF PORTC,0
MOVWF PORTD
GOTO INICIO
END
 
No puedes borrar Status... es imposible ya que es el registro donde el PIC reporta que sucedio con la ultima instruccion... lees 1C por las siguientes razones:

1.- Los bits 3 y 4 solo son de lectura y se colocan a 1 automaticamente al encender el micro
2.- Al ejecutar clrf status, se activa la bandera Z (bit 3) indicando que el resultado de la ultima instruccion fue cero
 
Atrás
Arriba