L.T.R. LIVET TS2EN
Ph. Dessertenne
ELECTRONIQUE
OBJECTIF : n. m. But précis à atteindre : atteindre l'objectif qu'on c'était fixé. || Mil. Point, ligne ou zone de terrain à battre par le feu (bombardement) ou à conquérir par le mouvement et le choc (attaque).
SUPPORT : En l'occurrence ici et jusqu'à nouvel ordre, le support reste une banale table beige flanquée de quatre pieds bêtement cylindriques de couleur noire.
CONDITIONS :
· On a déjà : travaillé sur le sujet avec le plus grand sérieux. Tous les documents sont autorisés y compris les fichiers des TP précédents.
· On dispose : d'un Pécé, des cartes XEVA et XEVADEMO, d'un Minitel et d'une carte d'interfaçage performante.
PERFORMANCES :
ATTENTION : TOUS LES PROGRAMMES DEVRONT IMPERATIVEMENT ETRE TRUFFES DE COMMANTAIRES PERTINANTS
1) Dans votre volume de travail (disque E: du réseau) créer un répertoire eval_tp_tartampion (remplacez tartampion par votre nom ceci est impératif, sinon c'est zéro patate) puis créez-y un projet que vous nommerez du même sobriquet idiot. Attention aux caractères accentués dans les noms de fichiers qui donnent des boutons à WRKIT (c'est ce qu'on à maintenant l'habitude d'appeler: "le phénomène de RAISONNANCE !").
2) Créer en s'inspirant de ce qui a été fait en TP un fichier en langage d'assemblage 8051 ( minitel_serie.A5l ) décrivant les fonctions putchar et _getkey compatibles avec le mode de transmission série du Minitel (7 bits parité paire. Putchar rajoute le bit de parité et _getkey le supprime )
3) Créer un programme en langage C qui affiche sur l'écran du minitel le code ASCII dans un format hexadécimal du caractère saisi au clavier de celui-ci suivi d'un espace puis du caractère saisi s'il est imprimable c'est à.dire si son code est supérieur à 20h.
Exemple:
0x41 A
4) Certaines touches du clavier envoient des séquences de plusieurs caractères que le programme que vous venez d'écrire ne peut afficher.
a) expliquez pourquoi
b) il existe deux solutions au problème. ta première que nous n'étudierons pas met en oeuvre un tampon de réception géré par interruptions. La seconde est basée sur l'algorithme suivant:
tempo et i sont des entiers.
TAMPON est un tableau de 5 caractères
i = 0 |
répéter |
si RI = 1 | //RI est le flag de réception série de microcontrôleur |
alors |
lire le caractère reçu | //utiliser getkey() | |||
stocker le caractère reçu dans TAMPON [I] | ||||
incrémenter i | ||||
tempo ppv 0 |
sinon |
incrémenter tempo |
jusqu'à ( tempo = 1000 ) | // on arrête d'attendre des caractères |
Traduire cet algorithme en langage C puis compléter le programme pour qu'il affiche le nombre de caractères reçu suivi des codes ASCII en hexa.
Exemple :
RECU 3 CARACTERES : 0X1B 0X4F 0X50
5) BONUS LEVEL pour les super programmeurs de compétition : Etudier la solution par interruptions.