Problema con sumulacion en proteus PIC16F887

Hola que tal, tengo un problema con un programa de mi microcontrolador, se trata de lo siguiente:

Realizar el programa que haga que se monitore el estado del puerto C en el puerto B

Significa que en el circuito de simulacion, a todas las entradas del puerto C, les puse switches para que la palabra de entrada en el puerto C, fuera en la salida del puerto B, y lo he puesto en PROTEUS, en el MPlab hice el programa, que es el siguiente:

Código:
			LIST		P=16F887
			INCLUDE 	<P16F887.INC>
			ORG			0


INICIO		BSF			STATUS,	RP0;  
			CLRF		        TRISB;   
			MOVLW		b'11111111
			MOVWF		TRISC    
			BCF		        STATUS,	RP0;  
               
			MOVLW		PORTC
			MOVWF		PORTB
               
END

y en la simulacion del proteus solo me prenden los primeros 3 LEDs y no sucede nada, aqui adjunto ambas, el archivo en MPlab y el circuito de simulacion en PROTEUS para ver si pudieran ayudarme, gracias comunidad! :)
 

Adjuntos

  • 2.rar
    41 KB · Visitas: 14
hola, veo tu codigo y noto que faltan algunas cosas:

la instruccion movlw, se usa para mover un literal al al "registro" W, cuando usas movlw portc estas moviendo el "número" que se encuentra en el registro w a tu puerto C, lo cual no deberia ser puesto que el puerto C lo estas configutando como entradas, otra cosa, si lo que deseas es trabajar con los datos del puerto c y verlos en el puerto b , no lo puedes hacer directamente osea, no puedes pasarlo en 2 pasos, debes usar la instruccion movf portc, 0 de esa forma mueves el contenido del puerto C al acumulador W, luego de eso ya puedes traladar eso al puerto b con la instruccioón movwf. el programa te quedaria algo asi.

BCF STATUS, RP0;
s1
MOVF PORTC, 0 ; mueves el contenido del puerto C y lo almacenas en W
MOVWF PORTB ; mueves el contenido del acumulador al puerto B
goto S1
end

el goto S1 es para que realice un bucle y este constantemente monitoreando el estado del puerto.

p.d. lo que no debes hacer es la instruccion movlw a un puerto que esta como entrada, no es recomendado ya que esta configurado como entrada.

espero haberte ayudado, prueba el cambio tal vez se me olvido algo jeje ando un poco cansado
 
hola, veo tu codigo y noto que faltan algunas cosas:

la instruccion movlw, se usa para mover un literal al al "registro" W, cuando usas movlw portc estas moviendo el "número" que se encuentra en el registro w a tu puerto C, lo cual no deberia ser puesto que el puerto C lo estas configutando como entradas, otra cosa, si lo que deseas es trabajar con los datos del puerto c y verlos en el puerto b , no lo puedes hacer directamente osea, no puedes pasarlo en 2 pasos, debes usar la instruccion movf portc, 0 de esa forma mueves el contenido del puerto C al acumulador W, luego de eso ya puedes traladar eso al puerto b con la instruccioón movwf. el programa te quedaria algo asi.

BCF STATUS, RP0;
s1
MOVF PORTC, 0 ; mueves el contenido del puerto C y lo almacenas en W
MOVWF PORTB ; mueves el contenido del acumulador al puerto B
goto S1
end

el goto S1 es para que realice un bucle y este constantemente monitoreando el estado del puerto.

p.d. lo que no debes hacer es la instruccion movlw a un puerto que esta como entrada, no es recomendado ya que esta configurado como entrada.

espero haberte ayudado, prueba el cambio tal vez se me olvido algo jeje ando un poco cansado

Muchas gracias, ya corregi el programa perdon po tardarme pero te lo agradesco bro ^^
 
Atrás
Arriba