Kikebot1 - Codigo Fuente

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.

Una vez compilado se os debe quedar un fichero [.hex] que es el que hay que grabar dentro del PIC con un grabador (podeis ver mas info sobre todos estos pasos aqui).

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