Amusez-vous avec PIC Assembly - Episode 13 (5 / 6 étapes)

Étape 5: logiciels

Les liens de logiciels sont répertoriées ci-dessous. Même si elles sont ciblées pour les 16F1847, ils sont facilement portés d’autres versions de l’image. Vous devrez modifier la ligne qui identifie la version PIC (liste =) et le fichier INCLUDE, mais ceux sont les changements intuitives. Les lignes __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. Les exigences plus grandes sont assez ports i/o et suffisamment de mémoire programme 16 bits capacité d’adressage indirecte.

Comme nous l’avons vu dans la description de l’écran LCD, il a la capacité d’abordées dans un mode parallèle ou un mode série. En mode parallèle, il peut être soit un 4-bit ou une interface de 8 bits à l’instar de l’écran LCD de 1602. Étant donné que j’avais besoin de mettre à niveau la photo pour obtenir la capacité d’adressage indirecte nécessaire, j’ai fini avec assez i/o lignes faire facilement une interface parallèle 8 bits. J’ai aussi créé une version que fonctionne avec la Maj inscrire l’interface que j’ai détaillé Episode 1. Les deux fichiers d’assembly sont incluses ci-dessous.

Il y a quelques autres différences significatives entre les 16F1847 et les photos anciennes nous utilisons. Tout d’abord, l’oscillateur interne dans les vieilles photos seulement passerait à 8 Mhz. Cela a été plus que suffisamment rapide pour ces projets peu mais c’est toujours agréable d’avoir une petite puissance supplémentaire disponible si vous avez besoin d’elle. Oscillateur interne de la 16F1847 peut aller jusqu'à 16 Mhz ses propres et jusqu'à 32 Mhz en sacrifiant une des capacités internes. Une autre différence importante est qu’il y a une tonne de nouveaux registres dans le 16F1847 ce qui signifie que certains de ceux que nous avons besoin ne sont pas en Bank0 ou Bank1. Cela le rend plus important de s’assurer que nous avons la Banque correcte sélectionnée lorsque vous accédez à des registres. Un nouvel ensemble de registres que nous n’utilisons pas ici mais qui peut être très pratique sont les registres LATA et Banff. Ce sont des registres de verrou qui détiennent la dernière valeur qui a été écrit à PORTA ou PORTB. Vous pouvez lire que le LAT enregistre directement si vous voulez faire une opération de lecture / écriture modifier. Vous remarquerez également qu’il y a deux lignes « _CONFIG ». C’est parce que toutes les nouvelles options nécessitent deux registres de configuration. Il est très important de s’assurer que vous obtenez les bonnes options associées auprès du registre de configuration droite car MPLAB ne signalera pas cela comme une erreur. J’ai appris que la manière forte.

Le sélecteur illustré dans le schéma est lu au moment de l’initialisation pour déterminer si le texte doit être affiché ou l’image graphique. Changer l’interrupteur alors que l’appareil est sous tension ne passera pas à l’affichage des autre. Vous devez mettre hors tension, changer l’interrupteur, puis allumez à nouveau. N’oubliez pas, c’est juste une installation de la démo. Les routines appelés d’affichage du texte sont fondamentalement les mêmes que nous avons utilisé pour l’écran LCD de 1602. La première différence est que nous avons quatre routines pour quatre lignes au lieu de deux. La deuxième différence est que les adresses de départ pour les lignes sont légèrement différentes.

Le mode graphique requiert que nous utilisons le jeu d’instructions « prolongée ». Sons effrayants, mais il n’est pas vraiment. Ce qui est en fait un peu plus difficile, c’est comment nous abordons la mémoire graphique. La première différence est que nous nous penchons sur la mémoire comme une matrice, donc nous avons besoin d’envoyer les coordonnées verticales et horizontales de la mémoire pour écrire à. La spécification parle verticales et horizontales des adresses mais c’est peut-être un peu confus. En effet, vertical correspond à la ligne et horizontal correspond à la colonne. Étant donné que nous envoyons un octet à la fois, il y a 16 octets par ligne, ce qui équivaut à 128 bits (pixels). Il y a un total de 64 lignes mais la mémoire d’affichage n’est pas totalement contigue. Il est divisé en deux moitiés supérieures et inférieures, chacun contenant 32 rangs de 16 colonnes. La partie supérieure des demi-colonnes commencent toujours par adresse 80h. La partie inférieure des demi-colonnes commencent toujours par adresse 88h. L’adresse de lignes de 80h à 9Fh dans les deux moitiés. Vous pouvez avoir des ennuis, essaie d’envoyer une adresse de colonne autre que 80 h donc la méthode sécuritaire est toujours écrire une ligne complète de 16 octets. Si vous essayez d’écrire juste une partie d’une ligne, vous devrez envoyer deux octets de données par adresse. La logique de LCD stocke 16 bits par emplacement de mémoire.

En interne, l’écran LCD s’incrémente automatiquement l’adresse horizontal (colonne) chaque fois qu’il reçoit les données et réinitialisera automatiquement revenir à 80h ou 88h selon laquelle la moitié de l’écran, nous vous écrivons pour. L’adresse vertical (ligne) ne sera pas automatiquement incrémenté. Le logiciel a besoin de garder une trace de l’adresse de la ligne réelle, mais il suit également le nombre d’octets écrits par ligne afin qu’il sache quand mettre à jour l’adresse de ligne. Dans notre exemple, nous envoyons une ligne complète de données et ensuite envoyer une mise à jour d’adresse lorsque nous changeons pour une nouvelle ligne. Nous utilisons également l’adresse de la ligne pour savoir à quel moment réinitialiser les adresses pour la partie inférieure la moitié de l’écran.

Nous l’avons vu plus tôt que nous avons défini chaque ligne de données hexagonal avec la directive « données ». Dans ce cas les données seront réellement écrit dans la mémoire de programme lorsque nous programmer la puce. C’est un peu différent que nos méthodes précédentes de l’utilisation des tables de choix où nous avons utilisé les commandes « RETLW » pour renvoyer la valeur désirée. Dans notre exemple actuel, nous voulons simplement lire un emplacement mémoire spécifique si nous allons utiliser une autre forme d’adressage indirect pour y arriver. C’est une des autres raisons pour utiliser une puce PIC plus récente. Il fournit plus de seulement 8 bits adressage indirect. Le logiciel de l’échantillon a fait deux tables graphiques, chacune nécessitant 1 octet k d’espace mémoire programme. Pour modifier l’affichage de graphiques, vous aurez besoin de changer réellement les deux lignes de code dans la routine de « Do_Graph » pour pointer vers « Picture1 » ou « Image2 ».

Une chose importante à garder à l’esprit lorsque vous créez le graphique des tableaux de données dans notre exemple de programme est qu’ils doivent commencer sur une limite de page (xx00h) et doivent contenir exactement 1024 octets. Chaque table est étiqueté séparément et donné une adresse de départ spécifique (l’instruction de CODE). Alors que chaque définition de CODE est une étiquette, ce n’est pas l’étiquette que nous utilisons dans le programme. Les étiquettes utilisées dans le programme sont « Picture1 » et « Image2 » qui précèdent directement leurs lignes respectives des données.

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

Amusez-vous avec PIC Assembly - Episode 2

Bien Episode 1 a été un succès retentissant parce que quelqu'un d'autre que moi en fait le regarda. Alors allons-y avec l'épisode 2. Dans ce Instructable nous recherchons quelques données réelles d'entrée pour envoyer à l'écran LCD de 1602 que nous a
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