hola queria hacerles una pregunta ya que trbaje un programa sencillo ya que estaba haciendo una placa de pruebas con leds y me ocurre lo siguiente
el programa deberia de encender todos los leds del puerto b uno a uno hasta llegar a rb7 y luego los apaga desde rb0 hasta rb7 y se queda haciendo un ciclo en eso pero mi problema es que se encienden todos uno a uno y cuando llega a rb6 y rb7 se prende y apaga solo ... no espera a el ciclo de apagado como se ve en el programa mas abajo .. que sera ? tiene alguna particularidad esos pines ??
;------------------------------------------------------------------------------
; PROCESSOR DECLARATION
;------------------------------------------------------------------------------
LIST p=16F88 ; list directive to define processor
#INCLUDE <P16F88.INC> ; processor specific variable definitions
;------------------------------------------------------------------------------
;
; CONFIGURATION WORD SETUP
;
; The 'CONFIG' directive is used to embed the configuration word within the
; .asm file. The lables following the directive are located in the respective
; .inc file. See the data sheet for additional information on configuration
; word settings.
;
;------------------------------------------------------------------------------
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_ON & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_OFF & _WDT_OFF & _XT_OSC
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
;------------------------------------------------------------------------------
;VARIABLES
;------------------------------------------------------------------------------
PDel0 EQU 0x20 ; VARIABLE PARA DELAY
PDel1 EQU 0x21 ; VARIABLE PARA DELAY
;------------------------------------------------------------------------------
; RESET VECTOR
;------------------------------------------------------------------------------
ORG 0x0000 ; processor reset vector
RESET:
PAGESEL START
GOTO START ; go to beginning of program
;------------------------------------------------------------------------------
; MAIN PROGRAM
;------------------------------------------------------------------------------
START
BANKSEL TRISB
MOVLW 0X00
MOVWF TRISB
BANKSEL PORTB
MAIN CALL DELAY
BSF PORTB,0
CALL DELAY
BSF PORTB,1
CALL DELAY
BSF PORTB,2
CALL DELAY
BSF PORTB,3
CALL DELAY
BSF PORTB,4
CALL DELAY
BSF PORTB,5
CALL DELAY
BSF PORTB,6
CALL DELAY
BSF PORTB,7 ; aqui se enciende e inmediatamente luego del delay se apaga solo al igual q rb6
CALL DELAY
BCF PORTB,0
CALL DELAY
BCF PORTB,1
CALL DELAY
BCF PORTB,2
CALL DELAY
BCF PORTB,3
CALL DELAY
BCF PORTB,4
CALL DELAY
BCF PORTB,5
CALL DELAY
BCF PORTB,6
CALL DELAY
BCF PORTB,7
GOTO MAIN
;------------------------------------------------------------------------------
; SUBRUTINAS
;------------------------------------------------------------------------------
;-------------------------------------------------------------
; Generado con PDEL ver SP r 1.0 el 16/11/2008 Hs 04:21:31 p.m.
; Descripcion: Delay 500000 ciclos
;-------------------------------------------------------------
DELAY:
DEMORA movlw .239 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .232 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;-------------------------------------------------------------
;------------------------------------------------------------------------------
end
desde ya muchas gracias por la ayuda