Amusez-vous avec PIC Assembly - Episode 2 (3 / 4 étapes)

Étape 3: logiciel

Le lien du logiciel est répertorié ci-dessous. Alors qu’il est visé pour le 12F683, il est facilement porté à plus grandes versions de l’image. Pour la plupart il nécessite un changement des noms comme TRISIO TRISA et GPIO à PORTA. Vous devrez également modifier la ligne qui identifie la version PIC (liste =) et le fichier INCLUDE, mais ceux qui sont
changements intuitives. La ligne __CONFIG devez également peaufiner tout simplement parce qu’un ou deux des étiquettes utilisées soient orthographiés différemment dans certains des fichiers INCLUDE. Assurez-vous juste que la photo que vous utilisez a une broche qui permet une entrée d’interruption externe (habituellement appelée EXT).

Autres que la broche de commande LCD change, ce programme a quelques différences fondamentales de celle simple dans l’épisode 1. En particulier, il utilise un gestionnaire d’interruption pour les emplacements de mémoire définie pour le programme de réarmement et le début du gestionnaire d’interruption ont été ajoutés. Le vecteur de réinitialisation (adresse 0) a une simple instruction GOTO pour sauter le début réel du programme. C’est nécessaire parce que le gestionnaire d’interruption commence toujours à l’adresse 4. Un caprice, que j’ai trouvé, c’est que le programme MPE X IDE qui compile le code n’aime pas un GOTO saut directement à une déclaration de BANKSEL. C’est pourquoi la première instruction dans « MAIN » est un NOP. La routine « Init » comprend également des instructions pour utiliser l’horloge interne de 8 MHz au lieu de l’horloge de 4 MHz par défaut. Cela signifie aussi que les routines de retard doivent avoir des valeurs différentes que celles dans les routines de l’Episode 1.

La routine LCD_Init adhère assez bien à la séquence d’initialisation spécifiés pour la puce de 1602. La routine LCD_Line1 affiche « Adresse/commande » sur la ligne 1. La routine LCD_Line2 met en place pour écrire les codes IR reçus pour la ligne 2 de l’écran LCD. Ligne 2 obtient écrasée à chaque fois qu'un nouveau message de IR est reçu.

Le cœur du code IR message capture est à l’intérieur du gestionnaire d’interruption. N’oubliez pas du schéma que nous avons branché la sortie de données série du récepteur IR à l’entrée d’interruption externe du PIC. Cela nous permet de synchroniser avec le début du message et de décoder chaque bit de données en mesurant simplement des largeurs d’impulsion. L’entrée d’interruption externe est réglée pour interrompre sur le front descendant qui indique toujours un bit de départ. La routine d’interruption vérifie Timer1 pour voir combien de temps il a été depuis la dernière interruption et puis réinitialise le minuteur. Nous pourrions mesurer les impulsions diverses exactement, mais l’approche paresseux fonctionne très bien. Comme nous l’avons vu dans la section précédente, l’impulsion de démarrage est facilement identifiable, mais les bits de données sont différenciées par l’espace de temps après les bits de données. Par la mesure front descendant à front descendant, nous incluons la fraise et l’espace temps. De cette façon, que nous n’avons pas à être trop précis lors du test de largeur d’impulsion. Étant donné que la fréquence d’horloge PIC est fixée à 8 MHz, Timer1 incrémentera chaque 500ns. Pour simplifier le logiciel, nous ignorons les 8 bits de poids faible du Timer1 (127us maximum) et juste tester les 8 bits supérieurs. Chaque chef d’accusation dans les supérieurs 8 bits est égal à 128us. Un bit de données « 0 » aura un nombre supérieur à 5, mais moins de 9 et un bit « 1 » les données auront double cette gamme. C’est pourquoi les chefs d’accusation vérifiés dans le logiciel sont mis à 6 pour un peu de données « 0 » et 12 pour un peu de données « 1 ». La vérification de bit de départ est pour un nombre supérieur à 24 (plus de 3 ms). Pas trop précis, mais très efficace.

La routine Main_Lp1 est où les bits de données décodées par la routine d’interruption sont emballés dans les quatre octets attendus. L’appel à Make_ASCII est envoyé un grignotement au moment de chaque octet et convertit la valeur numérique de 0 à 15 en un caractère lisible de 0.-f. Il utilise un procédé lisse qui permet à un programmeur construire une table de choix et puis mettre le compteur de programme à sauter dans l’emplacement approprié dans le tableau. Chaque emplacement de la table est une instruction return sous-routine particulière (RETLW) qui transporte une valeur littérale spécifiée dans le registre W retour à la routine. Après que tous les quatre octets ont été reçus et envoyés à l’écran il y a un appel à LCD_Line2 pour réinitialiser le pointeur affichage en prévision du prochain message IR. Il n’inclut pas une commande pour effacer l’affichage car le prochain message écrasera tout les emplacements d’affichage actuel.

Articles Liés

Amusez-vous avec PIC Assembly - Episode 12

Amusez-vous avec PIC Assembly - Episode 12

OK, donc je suis un de ceux qui est heureux quand j'aurai Enfin quelque chose ne fonctionne mais il me ronge si je ne comprends pas les détails de pourquoi ça marche. Tel est le cas avec cet épisode. Le fond est que je travaille sur un petit projet p
Amusez-vous avec PIC Assembly - Episode 1

Amusez-vous avec PIC Assembly - Episode 1

Retour dans les jours anciens, quelle hommes étaient des hommes et disquettes étaient énormes, nous avons programmé les premiers microprocesseurs en langage d'assemblage - et nous l'avons aimé ça. Maintenant que je suis à la retraite, j'ai décidé de
Amusez-vous avec PIC Assembly - Episode 20

Amusez-vous avec PIC Assembly - Episode 20

Dans l'Episode 19 que je l'ai mentionné en passant qu'il serait assez facile au port de la conception à la 16F1837 plus moderne que nous avons utilisé dans l'épisode 13 pour l'affichage de graphiques. Qui pourrait nous sortir de devoir copier les cha
Amusez-vous avec PIC Assembly - Episode 13

Amusez-vous avec PIC Assembly - Episode 13

Il y a quelques mois, j'envisageais de faire un capacimètre à l'aide de la photo. J'ai fait quelques recherches sur le web et vérifié diverses conceptions. Puis j'ai fait l'erreur de vérification d'eBay pour voir combien on coûterait. Les versions mo
Amusez-vous avec PIC Assembly - Episode 14

Amusez-vous avec PIC Assembly - Episode 14

Comme je le disais dans un précédent épisode, je suis bénévole dans un centre de recyclage à but non lucratif. Pour la plupart, nous fixons les ordinateurs et les écrans LCD, mais dernièrement j'ai pris la tâche d'obtenir certains anciens systèmes de
Amusez-vous avec PIC Assembly - Episode 7

Amusez-vous avec PIC Assembly - Episode 7

Avez-vous jamais souhaité que vous aviez un réveil qui vous me réveillais toutes les quelques minutes alors que vous pourriez faire quelque chose de rapide et puis se pour rendormir ? Non, moi ou l'autre. Mais dans le monde du microcontrôleur, une te
Amusez-vous avec PIC Assembly - Episode 21

Amusez-vous avec PIC Assembly - Episode 21

Je ne suis pas un voyageur du monde, mais j'ai été à un certain nombre d'endroits qui diffèrent radicalement de température et d'humidité. Je n'aime pas qu'on en dise, « chaleur sèche » ne veut rien dire lorsque le thermomètre est supérieure à 110 de
Amusez-vous avec PIC Assembly - Episode 18

Amusez-vous avec PIC Assembly - Episode 18

Mots à la mode et les slogans sont toujours être générés, principalement dans les domaines de la technologie ou de la politique. Dilbert même reçu la tendance avec « Buzzword Bingo » en de la 90. Une des phrases actuellement chauds est « Internet des
Amusez-vous avec PIC Assembly - Episode 22

Amusez-vous avec PIC Assembly - Episode 22

Le dicton est que « la nécessité est la mère de l'invention ». En réalité, cependant, il y a beaucoup de « mères » de l'invention. Mon préféré est « paresse » mais parfois trucs obtient inventé juste parce que c'est un plaisir au défi de comprendre u
Amusez-vous avec PIC Assembly - Episode 16

Amusez-vous avec PIC Assembly - Episode 16

Jusqu'à présent j'ai résisté à ajouter aux millions de projets de "Clignoter une LED" qui sont sur le web. Cela ne veut ne pas dire que je n'ai effectivement pas un projet « Clignoter une LED » quand j'ai commencé à déconner avec le PIC parce qu
Amusez-vous avec PIC Assembly - Episode 17

Amusez-vous avec PIC Assembly - Episode 17

Les mauvais vieux jours chaque compagnie de téléphone avait une interface propriétaire et souvent différentes interfaces pour téléphones différents dans leur gamme de produits. De nos jours, cependant, presque tous les téléphones utilise une interfac
Amusez-vous avec PIC Assembly - Episode 8

Amusez-vous avec PIC Assembly - Episode 8

J'ai connu quelques changements intéressants de la température dans ma vie dont un juste il y a quelques années où nous avons mis un record un jour et puis définissez un seuil record le lendemain. La plus intéressante que j'ai vécu était il y a longt
Amusez-vous avec PIC Assembly - Episode 15

Amusez-vous avec PIC Assembly - Episode 15

Une de mes récents projets consistait en la construction d'un petit amplificateur 2.1 à l'aide de quelques chips d'amplificateur de puissance TDA que j'ai grappillé d'après un moulage hors circuit électronique. Depuis que je suis en mesure de décider
Amusez-vous avec PIC Assembly - Episode 19

Amusez-vous avec PIC Assembly - Episode 19

Une de mes phrases favorites est « c'est facile si vous savez comment. » Je ne sais pas si j'ai ramassé que quelque part il y a longtemps ou il inventé moi-même, mais il y a beaucoup de vérité en lui. C'est le genre de ce qui s'est passé quand je sui