Sunteți pe pagina 1din 13

; TIRO ; definicin de registros pc equ 02h status equ 03h ptoa equ 05h ptob equ 06h seleccion

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

;indica que el resultado se guarda en w

reset

org goto org

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 ;

movwf call movlw movwf btfsc goto

ptoa retardo1 b'00000000' ; enfrenta ptoa ptoa,4 ; pregunta start presionado manual ; control manual de siluetas

;-----------------------------------------------------------------------

ciclo suelte suelte1 suelte3

movlw movwf call goto call btfss goto goto call

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

dec ressele ledind

decfsz goto movlw movwf movf movwf

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

a1 temporal cont5 a0 a0 temporal a6 a6

;------------------------------------------------------------------------------------------------------------------------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

; pita 3 veces ; pita 3 veces ; pita 3 veces

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

; pregunta set presionado

pulldown

; pita 2 veces largas

a1

bsf movlw movwf movlw movwf movlw movwf bcf

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

selecc1 btfsc down goto ;regresa btfsc goto goto

;------------------------------------------------------------------------------------------------------------------------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

; pita 2 veces largas

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

; pregunta reset presionado

pulldown

; pita 2 veces largas

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

; pregunta reset presionado

pulldown

; pita 2 veces largas

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

; pregunta reset presionado

pulldown

; pita 2 veces largas

ptoa,0 ; pita b'01000000' ptob d'5' veces ; reset veces de duelo

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

; pregunta reset presionado

pulldown

; pita 2 veces largas

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

; pregunta reset presionado

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 ;

tap1 top3 top4

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 ;

; ;

; ; pita 3 veces largas ; enciende ready

; ;

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

; espera suelto start

; pregunta start presionado

; 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

;======================================================================

S-ar putea să vă placă și