TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Jhonny en 14 de Julio de 2011, 23:50:27
-
Hola , bueno les cuento que estoy armando un proyecto y tengo problemas con el programa , el problema es que no temporiza ... , una vez que lo grabo y lo pongo en la plaqueta hace todo el proceso lo mas bien pero en una parte del proceso no temporiza.. les paso el codigo para ver si me pueden dar una mano , voy a marcar en rojo la parte que no funciona , bueno espero que me puedan ayudar , muchas gracias y si tienen algun recomendacion para ayudarme , muchisimas gracias
; __config _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_on
processor 16f84a
include <p16f84a.inc>
__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_ON
;------------------------------------------------------------
; Declaración de Registros
;------------------------------------------------------------
w equ 0x0000
status equ 0x0003
PORT_A equ 05h
portb equ 0x0006
pclath equ 0x000a
_np_tiempo equ 0x000d
_np_tiempo1 equ 0x000f
_np_tiempo2 equ 0x0010
_np_tiempo3 equ 0x0011
trisb equ 0x0086
;------------------------------------------------------------
; Declaración de Bits
;------------------------------------------------------------
c equ 0 ;carry / borrow bit
rp0 equ 5 ;registrer bank select bit
rp1 equ 6 ;registrer bank select bit
z equ 2 ;bit cero
;------------------------------------------------------------
; Declaración de Registros EEPROM
;------------------------------------------------------------
;------------------------------------------------------------
; Inicio
;------------------------------------------------------------
org 0
goto paso2
;------------------------------------------------------------
; programa principal
;------------------------------------------------------------
paso2
bcf status,rp0 ;cambiar a banco 0
clrf _np_tiempo
clrf _np_tiempo1
clrf _np_tiempo2
clrf _np_tiempo3
clrf portb
movlw b'00000000' ;configurar el puerto b como ssssssss
bsf status,rp0 ;cambiar a banco 1
movwf trisb
movlw b'00000111' ;configura puerto 'A
tris PORT_A
bcf status,rp0
movlw h'10'
movwf PORT_A
;Prueba de 5v
pruebadisp
movlw .1
call tmp_1_mgc
btfss PORT_A,d'1'
goto pruebadisp
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
btfss PORT_A,d'1'
goto pruebadisp
movlw .1
call tmp_1_mgc ;temporizador 3 seg
btfss PORT_A,d'1'
goto pruebadisp
movlw .2
call tmp_1_mgc
paso4
led1 ;Pone Celular en 0
movlw b'00000001'
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .1
call tmp_1_mgc
movlw b'00000001'
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .1
call tmp_1_mgc
led2 ;
movlw b'00000010' ;
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .3 ;temporizador 3 seg
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .1 ;Pulso de 1 segundo
call tmp_1_mgc
led3
movlw b'00000100' ;Tiempo de llamado
movwf portb
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
;escribir en el puerto b
movlw b'00000000'
movwf portb
movlw .20 ;temporizador 20 seg
call tmp_1_mgc
movlw b'00000001' ;
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .1 ;Pulso de 1 segundo
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .3
call tmp_1_mgc
paso6
led4 ;
movlw b'00000001'
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .1
call tmp_1_mgc
movlw b'00000001'
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .1
call tmp_1_mgc
led5
movlw b'00001000'
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .3 ;temporizador 3 seg
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .1 ;Pulso de 1 segundo
call tmp_1_mgc
led6
movlw b'00000100'
movwf portb
movlw .1 ;temporizador 3 seg
call tmp_1_mgc
;escribir en el puerto b
movlw b'00000000'
movwf portb
movlw .20 ;temporizador 20 seg
call tmp_1_mgc
movlw b'00000001'
bcf status,rp0 ;cambiar a banco 0
movwf portb
movlw .1 ;Pulso de 1 segundo
call tmp_1_mgc
movlw b'00000000'
movwf portb
movlw .15
call tmp_1_mgc
btfss PORT_A,d'1'
goto paso2
goto paso4 ;cierra el ciclo
goto paso6
-
No es que no lo haga, es que no hace lo que vos esperas. Lo mas probable es que los registros que usas para la llamada a la subrutina no esten inicializados bien antes de llamar a la subrutina o tengas registros que usas para varias surutinas y que se cargan con basura. Revisa la declaracion de los regsitros y la inicializacion de los mismos
-
Hola a Todos
fijate esta rutina:
btfss PORT_A,d'1'
goto paso2
goto paso4 ;cierra el ciclo
goto paso6
si la entrada 1 del PORTA es 1 ejecuta paso4 si es 0 ejecuta paso2 :shock:
el paso6 se ejecuta por desarrollo del programa :shock: pero no por salto en esta rutina :shock:
Saludos!
-
Hola a Todos
fijate esta rutina:
btfss PORT_A,d'1'
goto paso2
goto paso4 ;cierra el ciclo
goto paso6
si la entrada 1 del PORTA es 1 ejecuta paso4 si es 0 ejecuta paso2 :shock:
el paso6 se ejecuta por desarrollo del programa :shock: pero no por salto en esta rutina :shock:
Saludos!
Y que tendria que hacer para que salte en la rutina?...
y mi pregunta tambien es por que no temporiza los 3 segundos que tiene que temporizar?
-
Hola Jhonny ,mirando por arriba tu programa hay cosas que no entiendo ,si ves al inicio (paso2) configuras los
puertos portb como salida y parte de porta como entrada ,luego pones en 1 el porta,1 que lo tienes configurado
como entrada? el porta como lo utilizas? :shock: la rutina tmp_1_mgc no esta en el programa? :shock:
Saludos!
-
Hola Jhonny ,mirando por arriba tu programa hay cosas que no entiendo ,si ves al inicio (paso2) configuras los
puertos portb como salida y parte de porta como entrada ,luego pones en 1 el porta,1 que lo tienes configurado
como entrada? el porta como lo utilizas? :shock: la rutina tmp_1_mgc no esta en el programa? :shock:
Saludos!
Hola , el porta , no lo utilizo , solo uso el portb como salida ...