Le HC12 de Motorola Introduction La famille de microcontrôleurs 68HC12 a été introduite en 1996 en guise de mise à jour de la famille 68HC11. Les membres de cette famille implémentent le même jeu d’instructions et les mêmes modes d’adressage mais diffèrent en termes de mémoire et de fonctions périphériques. Les membres de la famille 68HC12 possèdent les caractéristiques suivantes : - UPC 16 bit - Supporte 64k d’espace d’adresse - Quelques membres supportent la pagination de la mémoire avec des fenêtres prédéfinies de l’espace mémoire - Entre 768 octets et 4 Ko de EEPROM - De 1Ko à 12 Ko de SRAM - Convertisseur analogique numérique de 8 bit ou 10 bit - Module Timer avec les fonctions input capture, output compare, accumulateur d’impulsions. - Modulation de largeur d’impulsion (PWM) - Interface de périphérique synchrone - Interface de communication série asynchrone - Communication Byte Data Link (BDLC) - Controller Area Network (CAN) - Computer operating properly (COP); mécanisme d’assurance de bon fonctionnement - Mode de déboguage à un fil fonctionnant en arrière plan (BDM) - Instructions supportant la logique floue Les membres de la famille 68HC12 ont entre 80 et 112 broches. Voici un diagramme à bloc du 912BC32 utilisé dans nos laboratoires : Les registres du HC12 Le HC12 a plusieurs registres qui peuvent être classés sous deux catégories : registres UPC et registres E/S. Les registres UPC sont utilisés pour faire des opérations mathématiques, logiques et de contrôle de flot de processus. Les registres E/S sont utilisés principalement pour configurer les périphériques, effectuer des entrées/sorties de données et pour afficher le statut de ces opérations. Les registres sont intégrés à l’espace mémoire du HC12 donc on peut y écrire ou lire en écrivant ou en lisant dans la mémoire. Voici les registres UPC du HC12 : Accumulateurs tout usage A et B : Ce sont des registres 8 bit avec lesquels la plupart des opérations mathématiques sont effectués. Ils peuvent être concaténés pour former un registre 16 bit nommé accumulateur D. Registres index X et Y : Ces deux registres sont utilisé principalement lors de la formation d’adresses des opérandes durant l’exécution d’instructions mais peuvent être utilisés dans quelques opérations mathématiques. Pointeur de la pile SP : La pile est une structure dernier entré, premier sorti (LIFO). Le HC12 a un pointeur 16 bit qui contient l’adresse du sommet de la pile. Lors de l’insertion, le pointeur est décrémenté. Compteur ordinal PC : Ce registre 16 bit contient l’adresse de la prochaine instruction à exécuter. Après exécution d’une instruction, le PC est incrémenté par le nombre d’octets dans l’instruction exécuté. Modes d’adressage du HC12 Le 68HC12 a un bus d’adresse 16 bit et un bus de données 16 bit. Ceci permet au HC12 d’accéder à 16 bits de données en une opération de transfert. Les 16 bit d’adresse permettent au HC12 d’accéder à 65536 adresses différentes. Une instruction sur le HC12 contient un ou deux octets spécifiant l’instruction et entre zéro et cinq octets spécifiant les paramètres de l’instruction. Les modes d’adressage spécifient comment l’UPC accède aux espaces mémoire. Voici un sommaire des modes d’adressage du HC12 : Mode inhérent Dans ce mode, il peut ne pas y avoir d’opérandes ou ils sont contenus entièrement dans les registres internes de l’UPC. L’UPC n’a donc pas besoin d’accéder à la mémoire lors de l’exécution de l’instruction. Ex : - NOP ; instruction sans opérandes - INX ; opérande est un registre interne de l’UPC Mode Immédiat Les opérandes de ce mode sont inclus dans l’instruction. L’UPC n’accède pas à la mémoire. Une valeur immédiate peut être 8 bit ou 16 bit selon le contexte de l’instruction. Un valeur immédiate est précédée de # lors de l’écriture en langage assembleur. Ex : - LDAA #55 ;place 55 en hexadécimal dans A - LDX #$2000 ;place 2000 en hexadécimal dans X Mode Direct Ce mode est utilisé pour accéder aux données situés aux adresses dans les 256 premiers octets de mémoire. Il n’est donc pas nécessaire de stocker une adresse de plus de 8 bits en mémoire. Ex : - LDAA $20 ;charge le contenu de l’adresse située à 32 octets de l’adresse du compteur ordinal Mode Étendu Dans ce mode, 16 bits sont utilisés pour spécifier l’adresse de la donnée mémoire. Ex : - LDAA $2000 ordinal ;charge le contenu de l’adresse située à 8Ko de l’adresse du compteur Mode relatif Ce mode est utilisé par les instructions de branchement parce qu’il permet d’accéder aux adresses situés à moins de 128 octets de l’adresse du compteur ordinal. Ex : - BRA #$20 Instructions principales Instructions de stockage et de chargement Instructions d’échange et de transfert Instruction de déplacement Instructions d’addition et de soustraction