Aqui tenéis el Código Fuente de KikeBot1. Para
seguir el programa y entenderlo mejor es recomendable seguirlo
con el Diagrama (en la sección Diagramas).
Voy a explicar cada una de las líneas de código,
para que podáis (si lo necesitáis) modificar el
programa a vuestro gusto, como esta ahora es como funciona en
el vídeo.
Para escribir el código, se hace con el Bock de Notas
de Windows (NotePad), solo tendreis que cambiar la extensión
[.txt] por [.asm]
para que despues el compilador de PIC pueda abrir el fichero y
compilarlo.
Por ultimo me gustaria daros animo para cuando leais el codigo,
asi de golpe es normal que no entendais nada!, pensar que para
el que no ha hecho el programa es lo normal (cada programador
tenemos nuestra metodologia), si no estais familiarizados con
el lenguaje echarle un ojo a la seccion Paso1:
Programa tu PIC para "entender" mas que hace el programa,
como ya dije antes voy a ir poniendo que hace cada linea.
Podeis descargaros el codigo fuente (.asm) y el compilado (.hex)
;=============== INICIO =============
list p=16f84
RADIX HEX
STATUS EQU 0x03
PORTA EQU 0x05
PORTB EQU 0x06
RP0 EQU 0x05
CONT EQU 0x0F
CONTA EQU 0x1A
CONTB EQU 0x1B
CONT_3 EQU 0x1C
CONTC EQU 0x1D
CONTD EQU 0x1E
CONTE EQU 0x1F
CONTF EQU 0x2A
CONTG EQU 0x2B
ORG 0
goto INICIO
ORG 5
;********************************************
INICIO: bsf STATUS, RP0
clrf PORTA
movlw b'00000111'
movwf PORTB
bcf STATUS, RP0
;*********************************************
GO_1: btfsc PORTB, 2
goto GO_2
goto SUB_4
GO_2: btfsc PORTB, 0
goto GO_3
goto GO_4
GO_3: btfsc PORTB, 1
goto SUB_2
goto SUB_1
GO_4 btfsc PORTB, 1
goto SUB_3
goto SUB_1
;*********************************************
SUB_1:
ALANTE1: bsf PORTA, 1
call RETARDO
bcf PORTA, 1
call RETARDO
ATRAS0: bsf PORTA, 0
call RETARDO
bcf PORTA, 0
call RETARDO
goto GO_1
;*********************************************
SUB_2:
ALANT1: bsf PORTA, 1
call RETARDO
bcf PORTA, 1
call RETARDO
ALANT0: bsf PORTA, 0
call RETARDO3
bcf PORTA, 0
call RETARDO3
goto GO_1
;*********************************************
SUB_3:
ATRAS1: bsf PORTA, 1
call RETARDO3
bcf PORTA, 1
call RETARDO3
ALANTE0: bsf PORTA, 0
call RETARDO3
bcf PORTA, 0
call RETARDO3
goto GO_1
********************************************
SUB_4:
bcf PORTA, 0
bcf PORTA, 1
movlw d'10'
movwf CONTG
BUUU: movlw d'250'
movwf CONTF
BUU: movlw d'250'
movwf CONTE
BU: NOP
decfsz CONTE, 1
goto BU
decfsz CONTF, 1
goto BUU
decfsz CONTG, 1
goto BUUU
movlw d'4'
movwf CONTB
REP: movlw d'250'
movwf CONTA
BARRIDO:
bsf PORTA, 2
call RETARDO
bcf PORTA, 2
call RETARDO
decfsz CONTA, 1
goto BARRIDO
decfsz CONTB, 1
goto REP
movlw d'2'
movwf CONTD
REP2: movlw d'250'
movwf CONTC
BARRID2:
bsf PORTA, 2
call RETARDO3
bcf PORTA, 2
call RETARDO3
decfsz CONTC, 1
goto BARRID2
decfsz CONTD, 1
goto REP2
goto GO_1
;******************************************
RETARDO: movlw d'200'
movwf CONT
BUCLE2: decfsz CONT,1
goto BUCLE2
return
;******************************************
RETARDO3: movlw d'6'
movwf CONT_3
BUCLE3: call RETARDO
decfsz CONT_3,1
goto BUCLE3
return
END
=========== FIN ==================