list p=16f84 #include p16f84.inc indo equ 00h fsr equ 04h portb equ 06h ;el puerto b esta en la posicion 06h de la ram trisb equ 86h ;regis de config de puerto b esta en la direcc 86h de la ram trisa equ 85h ;regis de config de puerto a esta en la direcc 85h de laram status equ 03h ;registro de estado esta en la direcc 03h de la ram dato1 equ 0ch dato2 equ 0dh dato3 equ 0eh dato4 equ 0fh dato5 equ 10h dato6 equ 11h dato7 equ 12h dato8 equ 13h tempo1 equ 14h tempo2 equ 15h tempo3 equ 16h ;------------------------------- tabla movlw b'00000001' movwf dato1 movlw b'00000010' movwf dato2 movlw b'00000100' movwf dato3 movlw b'00001000' movwf dato4 movlw b'00000100' movwf dato5 movlw b'00000010' movwf dato6 movlw b'00000000' movwf dato7 movlw b'00000000' movwf dato8 ;-------------------------------------------------- ;definicion de la funcion de los puertos bsf status,5 ;se posiciona en banco1 clrf trisb ;define el portb como salida clrf trisa ;define el porta como salida bcf status,5 ;--------------------------------------------------- inicio movlw 0x0c movwf fsr ciclo movf indo,0 movwf portb call retardos incf fsr,1 movf fsr,0 xorlw 0x12; prueba si el contenido de fsr coincide con 12h btfss status,2 ;prueba si el bit2 de status es 1 o sea bit Z operac dio cero goto ciclo goto inicio ;--------------------------------- retardos clrf tempo1 clrf tempo2 clrf tempo3 retardo1 incf tempo1,1 retardo2 incf tempo2,1 retardo3 incf tempo3,1 btfss tempo3,3 ;para cambiar el tiempo goto retardo3 clrf tempo3 btfss tempo2,6 ;para cambiar el tiempo goto retardo2 clrf tempo2 btfss tempo1,6 ;para cambiar el tiempo goto retardo1 return ;--------------------------------------------------------------------- end