Paso 5: El código explicado
; Código Morse consiste en
; puntos, que son cortos parpadea;
; guiones, que son largos, parpadea tres veces tan largos como un punto;
; y, que son periodos en los que la luz está apagada.
; espaciamientos vienen en varias longitudes:
; En una carta, puntos y guiones están separados por un
; espacio que es la misma longitud que un punto.
; Letras separadas por un espaciamiento de la misma longitud que un guión.
; Y palabras están separadas por una distancia cinco veces tanto como un punto.
;
; El código: (más o menos. Es un largo tiempo desde Boy Scouts)
; A .- * B -... * C -.-. * D -..
; E. * F .. -. * G --. * H ....
; I .-. * J .--- * K -.- * L .-..
; M -- * N -. * O --- * P .--.
; Q --.- * R .-. * S ... * T -
; U... - * V ...- * W .-- * X -.. -
; Y -.-- * Z --..
;
;
Comentarios en lenguaje ensamblador PIC (que es el lenguaje con el que se este programa) comienzan con un carácter de punto y coma y continuarán hasta el final de la línea. Comentarios están destinados a la próxima persona que trabaja en el código y realmente no dan las instrucciones para el microcontrolador. Así que esta tabla de valores de código Morse de la letra no dice la computadora cualquier cosa. Las instrucciones para la computadora aparecen más abajo.
Cuando el microcontrolador se inicia, comienza pasando por las instrucciones empezando en posición cero. En este programa, las instrucciones empezando en la línea 45 se colocará en posición cero, debido a la org 0 en línea 44. (En Bloc de notas, usted puede encontrar líneas numeradas tirando hacia abajo el menú edición y haga clic en línea Goto. Bloc de notas deshabilita la línea Goto si wordwrap está habilitada; Si línea Goto no parecen funcionar (está atenuado) Tire hacia abajo el menú Formato y desmarque wordwrap.)
org 0; vector de RESET
Inicio:
Goto principal
org 4; vector de interrupción
retfie; no hacer nada
principal:
banksel TRISIO; selecciona Banco 1, donde se almacena el TRISIO.
movlw 0; establecer GP0-GP5 todas las salidas.
movwf TRISIO
banksel GPIO; selecciona banco 0, para utilizar GPIO
BCF GPIO, 2;; Apagar LED
bucle:
llamar al letterF
llamada S
llamar al letterC
llamada de espaciado
Goto bucle
Sobre TRISIO es inicialización para configurar el microcontrolador. Para entenderlo completamente, necesita leer la hoja de datos para el PIC12F683.
El programa va a través de la instrucción en cada línea, a continuación, se mueve a la siguiente línea, a menos que la instrucción es un goto, call, retorno o retfie
Es lógico concluir que la línea llamada letterF hace que el microcontrolador a flash una F en código Morse. También es cierto, pero la razón es cierto que es un bloque de código llamado letterF() ya ha sido definido en este programa. Que el bloque se ve así:
; Es el código para F... -.
letterF:
punto de llamada
punto de llamada
tablero de llamada
punto de llamada
llamada de espaciado
volver
Puesto que la tabla de letras nos dice que la letra F es... -. otra vez es lógico creer que eso es lo que hace este código--dice el microcontrolador flash primero un punto, luego un punto, luego un guión, etc.. Una vez más, también es cierto, pero otra vez, porque tenemos código adecuado en otros lugares en el programa. Por ejemplo, tenemos:
DOT:
BSF GPIO, 2;; enciende LED
llamar a dotTime;; esperar un poco
BCF GPIO, 2;; Apagar LED
llamar a dotTime;; esperar un poco
volver
El colon sugiere que esta es la definición de punto; que es correcto y se permite solamente una definición para un símbolo en un programa. Podemos usarlo tantas veces como queramos, sin embargo.
Para entender esto necesitamos saber que punta de la GPIO 2 está conectada al pin 5, que es donde conectamos el LED. Cuando la punta de la GPIO 2 se establece en 1, pin 5 tiene 5 voltios. Cuando envía el valor 0 al pin GPIO 2, el voltaje en el pin cambia a 0 voltios. Los nombres de los pines en el esquema del circuito insinúan.
Así que un punto es flasheado por encender el LED, espera un rato, luego apagarlo y esperar un rato. Necesitamos una espera después del punto para evitar que los destellos corriente unreadably juntos, y eso es lo que hace el código de dotTime.
Los nombres de los varios pernos PIC12F683 y registros están ocultos dentro de un archivo que se incluye en la parte superior del programa en la línea de
#include < p12F683.H >
El bloque de dotTime tiene este aspecto
dotTime:
Call retardo;; esperar un poco
volver
retraso es todavía otro bloque de código, probablemente el más complicado en este programa:
; define las variables de programa. Estos resultan ser en el banco 0
me equ 0 x 20
j equ 0x21
k equ 0x22
demora:; retrasos ~ 1 segundo en 4MHz reloj
movlw 5
movwf i; utiliza un bucle anidado triplemente
Topi: clrf j
topj: clrf k
topk: incfsz k, 1; cuenta a 256
Goto topk; bucle interno es de 3 ciclos
incfsz j, 1
topj Goto
decfsz i, 1
Goto topi
volver
Necesita un programador para programar el código en el chip.