Documente Academic
Documente Profesional
Documente Cultură
equ 10h trisa equ 85h trisb equ 86h loops equ 11h loops1 equ 12h loops2 equ 13h loops3 equ 14h loops4 equ 19h loops5 equ 0ah loops6 equ 20h vuelta equ 0dh loopa equ 0ch vecesx equ 0eh vuelta2 equ 0fh veces equ 16h temporal equ 17h tempo1 equ 18h w equ 00h
;el puerto a est en la direccin 05 de la ram ;el puerto b est en la direccin 06 de la ram ;registro de configuracin del puerto a ;registro de configuracin del puerto b
reset
0 inicio 5 status,5 b'00011010' trisa 0h trisb status,5 b'11111111' ptob retardo3 b'01111100' ptob retardo3 b'00111000' ptob retardo3 b'00010000' ptob retardo3 b'00000000' ptob b'11110001'
;el vector de reset es la direccin 00 ;se salta al inicio del programa ;el programa empieza en la direccin de memoria 5 ;se ;se ;se ;se ;se ubica en el segundo carga el registro w programan los pines carga el registro w programan los pines banco de ram con 0f del puerto a con 0 del puerto b como salid
inicio
bsf movlw movwf movlw movwf bcf movlw movwf call movlw movwf call movlw movwf call movlw movwf call movlw movwf movlw
as ;se ubica en el primer banco de memoria ram ; prende todo ; ; ; ; apaga todo ;
ptoa retardo1 b'00000000' ; enfrenta ptoa ptoa,4 ; pregunta start presionado manual ; control manual de siluetas
;-----------------------------------------------------------------------
d'7' seleccion retardo2 suelte3 retardo3 ptoa,3 dec suelte1 retardo3 seleccion ledind d'7' seleccion seleccion,0 temporal
; programas de tiro 7
; anti rebote ; pregunta seleccion suelto. pulldown ; cuando suelta va a decrementar ; si no suelta se queda en un ciclo sin fin ; anti rebote ; decrementa si es cero resetea a 7 ; resetea seleccion ; programas de tiro 7
decfsz temporal goto cont0 goto a5 goto a5 ;------------------------------------------------------------------------------------------------------------------------cont0 decfsz goto goto goto cont1 decfsz goto goto goto cont2 decfsz goto goto goto cont3 decfsz goto goto temporal cont4 a1 temporal cont3 a2 a2 temporal cont2 a3 a3 temporal cont1 a4 a4
goto cont4 decfsz goto goto goto cont5 decf goto goto
;------------------------------------------------------------------------------------------------------------------------a0 bsf movlw movwf movlw movwf movlw movwf bcf btfsc down goto ;regresa btfsc goto goto goto ptoa,4 p4sec selecc0 selecc0 ; pregunta start presionado suelte ptoa,0 ; pita b'00000010' ptob d'5' veces ; reset veces de duelo b'00000000' ; enfrenta ptoa ptoa,0 ; no pita ptoa,3 ; pregunta seleccion programa presionado pull
selecc0
;------------------------------------------------------------------------------------------------------------------------p4sec movlw movwf call call call movlw movwf call call call call movlw movwf movlw movwf call call call call call call call b'00000100' ptoa retardo1 retardo1 retardo1 b'00000000' ptoa retardo1 retardo1 retardo1 retardo1 b'00000100' ptoa b'00000011' ptob retardo2 retardo3 retardo2 retardo3 retardo2 retardo3 retardo2 ; perfila
; enfrenta
; perfila ; ready
termina
btfss goto call call call call call call call call call goto goto
ptoa,1 termina retardo2 retardo2 retardo2 retardo2 retardo3 retardo2 retardo2 retardo2 retardo2 a0 a0
pulldown
a1
ptoa,0 ; pita b'00000100' ptob d'5' veces ; reset veces de duelo b'00000000' ; enfrenta ptoa ptoa,0 ; no pita ptoa,3 suelte ptoa,4 p6sec selecc1 ; pregunta start presionado ; pregunta seleccion programa presionado pull
;------------------------------------------------------------------------------------------------------------------------p6sec movlw movwf call call call movlw movwf call call call call call call movlw movwf movlw movwf call call call call b'00000100' ptoa retardo1 retardo1 retardo1 b'00000000' ptoa retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000100' ptoa b'00000101' ptob retardo2 retardo3 retardo2 retardo3 ; perfila
; enfrenta
; perfila ; ready
; pita 3 veces
call call call termina1 btfss goto call call call call call call call call call goto goto a2 bsf movlw movwf movlw movwf movlw movwf bcf btfsc down goto ;regresa
retardo2 retardo3 retardo2 ptoa,1 termina1 retardo2 retardo2 retardo2 retardo2 retardo3 retardo2 retardo2 retardo2 retardo2 a1 a1 ; pregunta reset presionado pulldown
ptoa,0 ; pita b'00001000' ptob d'5' veces ; reset veces de duelo b'00000000' ; enfrenta ptoa ptoa,0 ; no pita ptoa,3 suelte ; pregunta seleccion programa presionado pull
selecc2
btfsc ptoa,4 ; pregunta start presionado goto p8sec goto selecc2 goto selecc2 ;------------------------------------------------------------------------------------------------------------------------p8sec movlw movwf call call call movlw movwf call call call call call call call call movlw movwf movlw movwf b'00000100' ptoa retardo1 retardo1 retardo1 b'00000000' ptoa retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000100' ptoa b'00001001' ptob ; perfila
; enfrenta
; perfila ; ready
call call call call call call call termina2 btfss goto call call call call call call call call call goto goto a3 bsf movlw movwf movlw movwf movlw movwf bcf selecc3 btfsc down goto ;regresa
retardo2 retardo3 retardo2 retardo3 retardo2 retardo3 retardo2 ptoa,1 termina2 retardo2 retardo2 retardo2 retardo2 retardo3 retardo2 retardo2 retardo2 retardo2 a2 a2
; pita 3 veces
pulldown
ptoa,0 ; pita b'00010000' ptob d'5' veces ; reset veces de duelo b'00000000' ; enfrenta ptoa ptoa,0 ; no pita ptoa,3 suelte ; pregunta seleccion programa presionado pull
btfsc ptoa,4 ; pregunta start presionado goto p10sec goto selecc3 goto selecc3 ;------------------------------------------------------------------------------------------------------------------------p10sec movlw movwf call call call call call call call movlw movwf call call call call b'00000100' ptoa retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000000' ptoa retardo1 retardo1 retardo1 retardo1 ; perfila
; enfrenta
call call call call call call movlw movwf movlw movwf call call call call call call call termina3 btfss goto call call call call call call call call call goto goto a4 bsf movlw movwf movlw movwf movlw movwf bcf btfsc down goto ;regresa
retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000100' ptoa b'00010001' ptob retardo2 retardo3 retardo2 retardo3 retardo2 retardo3 retardo2 ptoa,1 termina3 retardo2 retardo2 retardo2 retardo2 retardo3 retardo2 retardo2 retardo2 retardo2 a3 a3
; perfila ; ready
; pita 3 veces
pulldown
ptoa,0 ; pita b'00100000' ptob d'5' veces ; reset veces de duelo b'00000000' ; enfrenta ptoa ptoa,0 ; no pita ptoa,3 suelte ; pregunta seleccion programa presionado pull
selecc4
btfsc ptoa,4 ; pregunta start presionado goto p20sec goto selecc4 goto selecc4 ;------------------------------------------------------------------------------------------------------------------------p20sec movlw movwf call call call b'00000100' ptoa retardo1 retardo1 retardo1 ; perfila
call call call call movlw movwf call call call call call call call call call call call call call call call call call call call call movlw movwf movlw movwf call call call call call call call termina4 btfss goto call call call call call call call call call goto goto a5 bsf movlw movwf movlw movwf
retardo1 retardo1 retardo1 retardo1 b'00000000' ptoa retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000100' ptoa b'00100001' ptob retardo2 retardo3 retardo2 retardo3 retardo2 retardo3 retardo2 ptoa,1 termina4 retardo2 retardo2 retardo2 retardo2 retardo3 retardo2 retardo2 retardo2 retardo2 a4 a4
; enfrenta
; perfila ; ready
; pita 3 veces
pulldown
movlw movwf bcf selecc5 btfsc down goto ;regresa btfsc goto goto goto
b'00000000' ; enfrenta ptoa ptoa,0 ; no pita ptoa,3 suelte ptoa,4 p150sec selecc5 selecc5 ; pregunta start presionado ; pregunta seleccion programa presionado pull
;------------------------------------------------------------------------------------------------------------------------p150sec movlw movwf call call call call call call call movlw movwf movlw movwf decfsz goto movlw movwf movlw movwf call call call call call call call termina5 btfss goto call call call call call call call call call goto goto b'00000100' ptoa retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000000' ptoa d'150' vecesx vecesx ret b'00000100' ptoa b'01000001' ptob retardo2 retardo3 retardo2 retardo3 retardo2 retardo3 retardo2 ptoa,1 termina5 retardo2 retardo2 retardo2 retardo2 retardo3 retardo2 retardo2 retardo2 retardo2 a5 a5 ; perfila
; enfrenta
sigue
; perfila ; ready
; pita 3 veces
pulldown
ret a6
call goto bsf movlw movwf movlw movwf movlw movwf bcf btfsc
retardo1 sigue ptoa,0 ; pita b'10000000' ptob d'5' veces ; reset veces de duelo b'00000000' ; enfrenta ptoa ptoa,0 ;no pita ptoa,3 suelte ; pregunta seleccion programa presionado pull
selecc6 down goto ;regresa btfsc ptoa,4 ; pregunta start presionado goto duelo goto selecc6 goto selecc6 ;------------------------------------------------------------------------------------------------------------------------duelo movlw movwf call call call call call call call movlw movwf call call call movlw movwf decfsz goto movlw movwf call call call call call call call termina6 btfss goto call call call call b'00000100' ptoa retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 retardo1 b'00000000' ptoa retardo1 retardo1 retardo1 b'00000100' ptoa veces duelo b'10000001' ptob retardo2 retardo3 retardo2 retardo3 retardo2 retardo3 retardo2 ptoa,1 termina6 retardo2 retardo2 retardo2 retardo2 ; perfila
; enfrenta
; perfila
sigue2
; ready
; pita 3 veces
pulldown
call retardo3 call retardo2 call retardo2 call retardo2 ; pita 2 veces largas call retardo2 goto a6 goto a6 ;------------------------------------------------------------------------------------------------------------------------retardo3 ; movlw movwf movlw movwf nop decfsz goto decfsz goto return d'175' loops4 d'200' loops6 loops6 tip loops4 tip2 ; 150 el registro loops contiene el nmero ;de milisegundos del retardo ; ; ;pregunta si termino 1 ms ;pregunta si termina el retardo
tip2 tip
;------------------------------------------------------------------------------------------------------------------------retardo2 ;subrutina de retardo bsf ptoa,0 movlw d'100' movwf loops movlw d'200' movwf loops2 nop decfsz loops2 goto tup decfsz loops goto tup2 bcf ptoa,0 return de 1000 milisegundos ; pita ;el registro loops contiene el nmero ;de milisegundos del retardo ; ; ;pregunta si termino 1 ms ;pregunta si termina el retardo ; para pito
tup2 tup
;------------------------------------------------------------------------------------------------------------------------retardo1 movlw movwf bsf bsf movlw movwf movlw movwf nop decfsz goto decfsz goto bcf bcf decfsz d'26' loopa ptob,0 ptoa,0 d'50' loops1 d'191' loops3 loops3 top4 loops1 top3 ptob,0 ptoa,0 loopa ;
goto return
tap1
;------------------------------------------------------------------------------------------------------------------------manual movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call movlw movwf call call movlw movwf call call movlw movwf call call movlw movwf call b'00000001' ptob retardo2 retardo3 b'00000000' ptob retardo2 retardo3 b'00000001' ptob retardo2 retardo3 b'00000000' ptob retardo2 retardo3 b'00000001' ptob retardo3 b'00000000' ptob retardo2 retardo3 b'00000001' ptob retardo2 retardo3 b'00000000' ptob retardo2 retardo3 b'00000001' ptob retardo2 retardo3 b'00000000' ptob retardo3 b'00000001' ptob retardo2 retardo3 b'00000000' ptob retardo2 retardo3 b'00000001' ptob retardo2 retardo3 b'00000000' ptob retardo2 ;
; ;
; ;
call espe movlw movwf btfsc goto goto goto perfi call movlw movwf soltar btfsc goto call sige btfsc goto goto goto enfre call movlw movwf solter btfsc goto movlw movwf call goto goto end
retardo3 b'00000001' ; enciende ready ptob ptoa,4 ; pregunta start presionado perfi espe espe retardo2 b'00000100' ptoa ptoa,4 soltar retardo3 ptoa,4 enfre sige sige retardo2 b'00000000' ptoa ; perfila
; enfrenta
ptoa,4 ; espera suelto start solter b'00000000' ; apaga ready ptob retardo3 espe espe
;====================================================================== ; fusibles de programacin ; ; ; ; ; osc watchdog code protect power-up-timer micro. xt off off on pic16f84
;======================================================================