TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: nahueldiaz1992 en 14 de Septiembre de 2013, 15:35:39
-
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
-
esto es lo que pasa
-
Sería bueno que subas el esquema de conexionado.
-
Hola ,lo que te puede suceder es que tengas habilitados los canales analógicos :shock: ,ese pic tiene canales analogicos y en puerto b los pines 6 y 7 son digitales/analógicos ,fíjate si poniendo en el inicio CLRF ANSEL ,si recuerdo bien este registro configura los canales analógicos del puerto a y del puerto b.
Saludos!
-
que tal nahueldiaz1992,
Creo que tu problema esta en los fuses. Necesitas deshabilitar el dubug. Es decir colocarlo en OFF. Ya que esos pines son usados para el DEBUG, asi que al estar habilitado no tienes control de dicho pines.
Saludos.
Elreypic.
-
Hola gracias por la ayuda en cuanto al modo debug en los fuses prove poniendolo en off y sigue en la misma
en cuanto al conexionado es todo el portb con una resistencia y un led por puerto nada fuera de lo comun ...
todavia me falta provar con clrf ansel ahora lo veo ! :)