Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/06/2011 #1


Una pequeÑa ayuda en secuencia de leds
Bueno que tal amigos tengo un problema con este programa en PIC16f877A.El programa tiene 4 secuencias y trata de encender 11 Leds (8 del puerto C y 3 del puerto D). En el encendido de los 8 leds del puerto C no hay ningun problema pero los 3 del puerto D no encienden para nada. Quisiera ver si le pueden dar una mirada a la programacion y decirme en que estoy fallando porfavor.gracias

PD: adjunto la programacion que esta en asm (mplab) y la imagen del proteus.



Código HTML:
		INCLUDE		<P16F877A.INC>
        __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
    
	
        CBLOCK      0X20
SEC		
REG1
REG2	
REG3	
        ENDC


		ORG		0x00
		GOTO		MAIN
		ORG		0x04
		GOTO		PAUSA
		
		
MAIN	
		BCF 		STATUS,RP1
		BSF		STATUS,RP0
		CLRF		PORTC
        	CLRF            TRISD
		MOVLW		B'11111111'
		MOVFW       	PORTB
		BCF		STATUS,RP0
		BSF		INTCON,7		;CONFIGURO INTERRUPCION
		BSF		INTCON,3
		BCF		INTCON,0
		
INICIO	
		CLRF		PORTC
		CLRF        	PORTD
		CLRF		SEC

PREG1	
		BTFSS		SEC,0
		GOTO		PREG2
		GOTO 		S1
PREG2	
		BTFSS		SEC,1
		GOTO		PREG3
		GOTO		S2
PREG3	
		BTFSS		SEC,2
		GOTO		PREG4
		GOTO		S3
PREG4	
		BTFSS		SEC,3
		GOTO		PREG1
		GOTO		S4
		
S1
		MOVLW		B'10101010'
		MOVWF		PORTC
        	MOVLW		B'00000111'
		MOVWF		PORTD
		CALL		RETARDO
		CLRF		PORTC
		CLRF		PORTD
		CALL		RETARDO
		GOTO		PREG1
		
S2
		MOVLW		B'11001100'
		MOVWF		PORTC
		MOVLW		B'00000111'
		MOVWF		PORTD
		CALL		RETARDO
var1
		BTFSS		SEC,1
		GOTO		PREG1
		COMF		PORTC,F
       		COMF		PORTD,F
		CALL		RETARDO
		GOTO		var1
S3
		MOVLW		B'00110000'
		MOVWF		PORTC
		MOVLW		B'00000111'
		MOVWF		PORTD
		CALL		RETARDO
var2	
		BTFSS		SEC,2
		GOTO		PREG1
		RLF		PORTC
		RLF		PORTD
		CALL		RETARDO
		GOTO		var2
		
S4		MOVLW		B'00010000'
		MOVWF		PORTC
		MOVLW		B'00000111'
		MOVWF		PORTD
		CALL		RETARDO
var3
		BTFSS		SEC,3
		GOTO		PREG1
		RRF		PORTC
		RRF		PORTD
		CALL		RETARDO
		GOTO		var3
		
		
PAUSA	
		BCF		INTCON,7		

CHECA_BOTON
		BTFSC		PORTB,4
		GOTO		$+4
		CALL		ANTIRREBOTES
		MOVLW		B'00000001'
		MOVWF		SEC
		BTFSC		PORTB,5
		GOTO		$+4
		CALL		ANTIRREBOTES
		MOVLW		B'00000010'
		MOVWF		SEC
		BTFSC		PORTB,6
		GOTO		$+4
		CALL		ANTIRREBOTES
		MOVLW		B'00000100'
		MOVWF		SEC
		BTFSC		PORTB,7
		GOTO		$+4
		CALL		ANTIRREBOTES
		MOVLW		B'00001000'
		MOVWF		SEC
		GOTO		SALIDA

ANTIRREBOTES
		BTFSS		PORTB,4
		GOTO		ANTIRREBOTES
		BTFSS		PORTB,5
		GOTO		ANTIRREBOTES
		BTFSS		PORTB,6
		GOTO		ANTIRREBOTES
		BTFSS		PORTB,7
		GOTO		ANTIRREBOTES
		RETURN
		
SALIDA	
		BSF		INTCON,7
		BCF		INTCON,0
		retfie

RETARDO	
		MOVLW		10
		MOVWF		REG1
TRES
		MOVLW		20
		MOVWF		REG2
DOS
		MOVLW		30
		MOVWF		REG3

UNO		DECFSZ		REG3,1
		GOTO		UNO
		DECFSZ		REG2,1
		GOTO		DOS
		DECFSZ		REG1,1
		GOTO		TRES
		RETURN

		
		END
[IMG][/IMG]
23/06/2011 #2

Avatar de wlopez

Si estuviera en C....te ayudaria...pero aun no programo mplab..... disculpa.
Espeto tengas suerte..... y que sin duda alguien mas te ayudara
23/06/2011 #3


gracias por tu respuesta wlopez. Como tu dices ojala que alguien lo mire, por que estoy tratando de ver cual puede ser el error y nada.
23/06/2011 #4


Hola

No he tenido tiempo de simular con el MPLAB pero si el puerto C te hace la operacion
correctamente y el puerto D no te enciende ningun led puede ser que la configuracion no sea la correcta
BCF STATUS,RP1
BSF STATUS,RP0
CLRF PORTC
CLRF TRISD
MOVLW B'11111111'
MOVFW PORTB
BCF STATUS,RP0

Unos puertos los pones como PORTC,PORTB y el que no hace nada esta como TRISD

Un saludo
24/06/2011 #5


Si quieres que te ayuden facilitanos el archivo en isis, seria mucho trabajo estar armando el circuito configurando para simular eso toma tiempo.
Si ya lo tienes en ISIS.
24/06/2011 #6

Avatar de Chelouruguay

Hola, prueba en usar el WATCH en VIEW del MPLAB.

Ahi selecciona el PORTD y veras si cambian los bits.

Saludos.

Perdon, pero eso siempre y cuando estes en modo Debugger y corras algun simulador, como el MPLAB SIM y si tenes pulsadores tendras que usar el STIMULUS dentro de Debugger.

Saludos
25/06/2011 #7


Un saludo
Siento el haberme precipitado en mi primer post
Al simular el programa me he dado cuenta , pues si que muestra el puerto D los bits en alto, es que los bits activados son RD0,RD1,RD2 y en el diagrama de proteus los diodos estan conectados a RD7,RD6,RD5

Los diodos no efectuan el encendido en la primera secuencia pero si en el resto

Revisa el circuito o el programa y efectuara las secuencias que deseas

Un saludo
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.