Étape 5: Le Code a expliqué
; Le code Morse est composé de
; points, qui sont courtes clignote ;
; tirets, qui sont longs clignote trois fois tant qu’un point ;
; et espacements, qui sont des périodes où la lumière est éteinte.
; espacements viennent dans différentes longueurs :
; Dans une lettre, les points et les tirets sont séparées par un
; espacement qui a la même longueur comme un point.
; lettres sont séparées par un espacement de la même longueur qu’un tableau de bord.
; Et les mots sont séparés par un espacement cinq fois aussi longtemps qu’un point.
;
; Le code: (plus ou moins. C’est un temps long depuis 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 --..
;
;
Commentaires en assembleur PIC (qui est la langue dans laquelle ce programme est écrit) commencent par un caractère point-virgule et continuent jusqu’au bout de la ligne. Commentaires sont destinés à la prochaine personne qui travaille sur le code et ne donnent pas en fait des instructions pour le microcontrôleur. Si ce tableau de valeurs de code Morse lettre ne dit pas l’ordinateur quoi que ce soit. Les instructions à l’ordinateur apparaissent plues bas.
Le microcontrôleur au démarrage, il commence en passant par les instructions commençant à la position zéro. Dans ce programme, les instructions commençant à la ligne 45 seront placées à la position zéro, à cause de l’org 0 sur la ligne 44. (Dans le bloc-notes, vous pouvez trouver les lignes numérotées en tirant vers le bas le menu Edition puis sur ligne Goto. Le bloc-notes désactive Goto ligne si wordwrap est activée ; Si la ligne Goto ne semble pas fonctionner (sont grisées) déroulez le menu Format et décochez wordwrap.)
org 0 ; réinitialiser le vecteur
Départ :
Goto principal
org 4 ; vecteur d’interruption
retfie ; ne rien faire
principal :
banksel TRISIO ; sélectionnez Banque 1, où est stockée les TRISIO.
movlw 0; définir GP0-GP5 toutes les sorties.
movwf TRISIO
banksel GPIO ; sélectionnez Banque 0, utiliser GPIO
BCF GPIO, 2; ; désactiver les LED
boucle :
appel letterF
appel S
appel letterC
espacement des appels
Goto boucle
Le peu de TRISIO est l’initialisation de mettre en place le microcontrôleur. Pour le comprendre complètement, vous devez lire attentivement la fiche technique pour le PIC12F683.
Le programme passe par l’instruction sur chaque ligne, puis se déplace vers la ligne suivante, sauf si l’instruction est un goto, call, retour ou retfie
Il est logique de conclure que la ligne appel letterF provoque le microcontrôleur à clignoter un F en code Morse. Il est vrai aussi, mais la raison est l’est qui est un bloc de code nommé letterF() a déjà été définie dans ce programme. Ce bloc ressemble à ceci :
; Le code de F est... -.
letterF :
point d’appel
point d’appel
composez le tableau de bord
point d’appel
espacement des appels
retour
Étant donné que la table de lettres nous dit que la lettre F est... -. encore une fois, il est logique de croire que c’est ce que ce code--raconte le microcontrôleur au premier flash, un point, puis un point, puis un tiret, etc.. Encore une fois, il est également vrai, mais encore une fois, parce que nous avons d’ailleurs code approprié dans le programme. Par exemple, nous avons :
dot :
BSF GPIO, 2; ; allumer la LED
appeler dotTime ; ; attendre un peu
BCF GPIO, 2; ; désactiver les LED
appeler dotTime ; ; attendre un peu
retour
Le côlon suggère que c’est la définition de dot ; C’est exact, et qu’une seule définition est autorisée pour un symbole dans un programme. Nous pouvons l’utiliser aussi souvent que nous voulons, bien que.
Pour avoir un sens de la présente, il faut savoir que GPIO bit 2 est connecté à la broche 5, qui est où nous avons connecté le LED. Lorsque le bit GPIO 2 est défini sur 1, broche 5 a 5 volts sur elle. Lorsque nous envoyons la valeur 0 à la broche GPIO 2, la tension sur la broche passe à 0 volt. Les noms des broches sur le schéma de circuit allusion à cela.
Si un point est flashé par allumer la LED, attendre un certain temps, puis l’éteindre et attendre un certain temps. Nous devons attendre après le point pour éviter que les éclairs en cours d’exécution unreadably ensemble, et c’est ce que le code de dotTime.
Les noms des différentes broches PIC12F683 et registres sont cachés à l’intérieur d’un fichier que nous incluons dans la partie supérieure du programme en ligne
#include < p12F683.H >
Le bloc de dotTime ressemble à ceci
dotTime :
appel de retard ; ; attendre un peu
retour
retard est encore un autre bloc de code, probablement le plus compliqué dans ce programme :
; définir les variables de programme. Ceux-ci se trouvent dans la Banque 0
J’ai equ 0 x 20
j equ 0 x 21
k equ 0 x 22
retard:; retards ~ 1 seconde sur un 4MHz horloge
movlw 5
movwf i; utilise une boucle imbriquée triplement
Topi : clrf j
topJ : clrf k
TopK : incfsz k, 1; compter jusqu'à 256
Goto topk ; boucle interne est 3 cycles
incfsz j, 1
topj Goto
decfsz i, 1
Goto topi
retour
vous auriez besoin d’un programmeur pour programmer le code dans la puce.