Realidad Vs Simulación 3PWM con PIC16F84A

Hola buenas

Hace tiempo no me conectaba a estos foros =P.

Tengo un problema y me gustaría ver si me pueden ayudar. Tengo el siguiente problema.

He programado un PIC16F84A con el siguiente programa, al simularlo corre perfectamente y hace todos los cambios, el programa hace la función de 3 PWM´s y lo he colocado en un LED RGB y e podido programar varios colores, pero al querer que cada cierto tiempo cambie, este si lo hace 1 ves del original al siguiente del tercero en adelante no los cambia, pero en los simuladores si hace todos los cambios.

En resumen es un problema de Realidad Vs. Simulación. Alguien sabe que me falla en la realidad?


Aquí les pongo el programa

Código:
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON

	list	P=16f84A

	INCLUDE	"P16F84A.INC"	


#DEFINE		PWMR		PORTB, 1
#DEFINE		PWMA		PORTB, 2
#DEFINE		PWMV		PORTB, 3
#DEFINE		RETOMAR		0X30, 0
TMR0AUX		EQU			0X20
VALORR		EQU			0X21
VALORA		EQU			0X22
VALORV		EQU			0X23
ROJO			EQU			0X24
AZUL			EQU			0X25
VERDE		EQU			0X26
SIGUI1		EQU			0X27
SIGUI2		EQU			0X28
SIGCOLOR		EQU			0X29

		ORG		0X00
		GOTO		INICIO
		ORG		0X04

		BSF		RETOMAR
		BCF		INTCON, 2
		INCFSZ	SIGUI1
		GOTO		NADA
		INCFSZ	SIGUI2
		GOTO		NADA
	
		INCF		SIGCOLOR
PRIMERO	MOVF		SIGCOLOR, 0
		XORLW	D'1'
		BTFSS	STATUS, Z
		GOTO		SEGUNDO
		MOVLW	D'254'
		MOVWF	ROJO
		MOVLW	D'0'
		MOVWF	VERDE
		MOVLW	D'254'
		MOVWF	AZUL
		GOTO		NADA

SEGUNDO	MOVF		SIGCOLOR, 0
		XORLW	D'2'
		BTFSS	STATUS, Z
		GOTO		TERCERO
		MOVLW	D'253'
		MOVWF	ROJO
		MOVLW	D'0'
		MOVWF	VERDE
		MOVLW	D'254'
		MOVWF	AZUL
		GOTO		NADA

TERCERO	MOVF		SIGCOLOR, 0
		XORLW	D'3'
		BTFSS	STATUS, Z
		GOTO		CUARTO
		MOVLW	D'0'
		MOVWF	ROJO
		MOVLW	D'0'
		MOVWF	VERDE
		MOVLW	D'254'
		MOVWF	AZUL
		GOTO		NADA

CUARTO	MOVF		SIGCOLOR, 0
		XORLW	D'4'
		BTFSS	STATUS, Z
		GOTO		QUINTO
		MOVLW	D'0'
		MOVWF	ROJO
		MOVLW	D'254'
		MOVWF	VERDE
		MOVLW	D'254'
		MOVWF	AZUL
		GOTO		NADA

QUINTO	MOVF		SIGCOLOR, 0
		XORLW	D'5'
		BTFSS	STATUS, Z
		GOTO		SEXTO
		MOVLW	D'0'
		MOVWF	ROJO
		MOVLW	D'254'
		MOVWF	VERDE
		MOVLW	D'64'
		MOVWF	AZUL
		GOTO		NADA

SEXTO	MOVF		SIGCOLOR, 0
		XORLW	D'6'
		BTFSS	STATUS, Z
		GOTO		SEPTIMO
		MOVLW	D'254'
		MOVWF	ROJO
		MOVLW	D'254'
		MOVWF	VERDE
		MOVLW	D'0'
		MOVWF	AZUL
		GOTO		NADA

SEPTIMO	MOVF		SIGCOLOR, 0
		XORLW	D'7'
		BTFSS	STATUS, Z
		GOTO		OCTAVO
		MOVLW	D'254'
		MOVWF	ROJO
		MOVLW	D'128'
		MOVWF	VERDE
		MOVLW	D'0'
		MOVWF	AZUL
		GOTO		NADA

OCTAVO	MOVF		SIGCOLOR, 0
		XORLW	D'8'
		BTFSS	STATUS, Z
		GOTO		NOVENO
		MOVLW	D'183'
		MOVWF	ROJO
		MOVLW	D'180'
		MOVWF	VERDE
		MOVLW	D'72'
		MOVWF	AZUL
		GOTO		NADA

NOVENO	MOVF		SIGCOLOR, 0
		XORLW	D'9'
		BTFSS	STATUS, Z
		GOTO		DECIMO
		MOVLW	D'111'
		MOVWF	ROJO
		MOVLW	D'145'
		MOVWF	VERDE
		MOVLW	D'139'
		MOVWF	AZUL
		GOTO		NADA

DECIMO	MOVLW	D'254'
		MOVWF	ROJO
		MOVLW	D'0'
		MOVWF	AZUL
		MOVLW	D'0'
		MOVWF	VERDE
		CLRF		SIGCOLOR
		GOTO		NADA

NADA		RETFIE

INICIO	CLRF		STATUS
		BSF		STATUS, RP0
		CLRF		TRISA
		CLRF		TRISB
		MOVLW	B'10100000'
		MOVWF	0X0B
		MOVLW	B'10000101'
		MOVWF	OPTION_REG
		BCF		STATUS, RP0
		CLRF		SIGCOLOR

		MOVLW	D'254'
		MOVWF	ROJO
		MOVWF	VALORR
		MOVLW	D'0'
		MOVWF	AZUL
		MOVWF	VALORA
		MOVLW	D'0'
		MOVWF	VERDE
		MOVWF	VALORV
		CLRF		PORTA
		CLRF		PORTB


;SECCION DEL PWM PARA EL COLOR ROJO--------------------------------------------------

SIGPWMR	MOVF		TMR0,0
		MOVWF	TMR0AUX
		MOVF		VALORR, 0
		BTFSC	STATUS, Z
		GOTO		NOROJO
		BCF		PWMR
		XORWF	TMR0AUX, 0
		BTFSS	STATUS, Z
		GOTO		SIGPWMA
NOROJO	BSF		PWMR
		CLRF		VALORR


;SECCION DEL PWM PARA EL COLOR AZUL--------------------------------------------------


SIGPWMA	MOVF		VALORA, 0
		BTFSC	STATUS, Z
		GOTO		NOAZUL
		BCF		PWMA
		XORWF	TMR0AUX, 0
		BTFSS	STATUS, Z
		GOTO		SIGPWMV
NOAZUL	BSF		PWMA
		CLRF		VALORA

;SECCION DEL PWM PARA EL COLOR VERDE-------------------------------------------------


SIGPWMV	MOVF		VALORV, 0
		BTFSC	STATUS, Z
		GOTO		NOVERDE
		BCF		PWMV
		XORWF	TMR0AUX, 0
		BTFSS	STATUS, Z
		GOTO		RELLENO
NOVERDE	BSF		PWMV
		CLRF		VALORV

;SECCION DEL RELLENADO DE COLOR-------------------------------------------------------

RELLENO	BTFSS	RETOMAR
		GOTO		SIGPWMR
		MOVF		ROJO, 0
		MOVWF	VALORR
		MOVF		AZUL, 0
		MOVWF	VALORA
		MOVF		VERDE, 0
		MOVWF	VALORV
		BCF		RETOMAR
		GOTO		SIGPWMR

END
 
Última edición por un moderador:
El error mas comun es por corto circuito o por errores al armar el hardware, revisa que el oscilador funcione adecuadamente y que los pines esten bien soldados...

Tambien revisa que el PIC este bien grabado con el programa...
 
Muchas gracias pero ya lo resolví, saque mal el calculo. El cambio se efectuaba cada 25 minutos aproximadamente, en lugar de cada 6-8 seg. Error de calculo.

Solo elimine las 2 siguientes lineas

INCFSZ SIGUI2
GOTO NADA


muchas gracias =)
 
Atrás
Arriba