Table des matières:
- Étape 1: Exigences
- Étape 2: Construire le programmeur
- Étape 3: Installation du logiciel de programmation
- Étape 4: Programmation de la puce
- Étape 5: Assemblage
- Étape 6: Explication du code
- Étape 7: Ressources supplémentaires
Vidéo: Introduction à la programmation 8051 avec AT89C2051 (invité mettant en vedette: Arduino): 7 étapes (avec images)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Le 8051 (également connu sous le nom de MCS-51) est une conception MCU des années 80 qui reste populaire aujourd'hui. Les microcontrôleurs modernes compatibles 8051 sont disponibles auprès de plusieurs fournisseurs, de toutes formes et tailles, et avec une large gamme de périphériques. Dans ce instructable, nous examinerons le MCU AT89C2051 d'Atmel.
AT89C2051 est un petit microcontrôleur (2 Ko de Flash, 128 octets de RAM) bon marché (~ 1,40 $ par puce).
- 2.7-6V fonctionnement
- 15 lignes d'E/S
- 2 temporisateurs (16 bits)
- Interruptions internes et externes
- UART
- Comparateur analogique sur puce
- Jusqu'à 2MIPS avec une horloge 24MHz
Étape 1: Exigences
Conditions:
- PC Linux (logiciel requis: Arduino IDE, git, make, sdcc)
- Arduino UNO
- Puce AT89C2051 (boîtier DIP20)
- Prise ZIF 20 broches
- Optocoupleur (de préférence sortie MOSFET)
- Bouclier de prototypage Arduino
- Alimentation 12V
- Alimentation 5V
- Oscillateur à cristal 16MHz
- 2x 30pF condensateur
- Condensateur 100nF
- Diode (ex: 1N400X)
- Résistances (1K, 3K3)
- Protoboard
- Pulls
- Fil de cuivre
Vérifiez les logiciels requis:
quel python3
qui font quel sdcc quel git
Étape 2: Construire le programmeur
Cette section sera brève, car j'ai construit mon bouclier de programmation il y a quelque temps. J'ai joint le schéma et les photos de la carte assemblée. Le PDF du schéma peut être trouvé dans le référentiel.
Vous devrez programmer la carte programmeur:
1. Clonez le référentiel.
git clone
2. Ouvrez le fichier AT89C2051_programmer/AT89_prog/AT89_prog.ino dans Arduino IDE.
3. Construisez et téléchargez le croquis à partir de l'IDE Arduino.
Étape 3: Installation du logiciel de programmation
1. Créez un environnement virtuel python.
python3 -m venv venv
. venv/bin/activer
2. Installez at89overlord. at89overlord est un programmeur Open Source pour la puce AT89C2051 écrit par moi. Son code source peut être trouvé ici.
pip installer at89overlord
3. Vérifiez l'installation.
at89overlord -h
Étape 4: Programmation de la puce
1. Clonez un projet Flash simple.
disque ~
git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Générez l'application.
Fabriquer
3. Connectez Arduino au PC, connectez l'alimentation 12V, placez la puce AT89C2051 dans la prise ZIF.
4. Localisez le port série d'Arduino.
ls /dev/tty*
5. Téléchargez le fichier IntelHex construit sur la puce. Si le port de votre Arduino est différent de /dev/ttyACM0, vous devez passer la valeur correcte avec le paramètre de ligne de commande -p.
at89overlord -f./hello.ihx
Étape 5: Assemblage
Assemblez le circuit selon le schéma. Une version PDF est disponible dans le référentiel.
Vous devriez voir la LED verte clignoter avec une fréquence d'environ 0,5 Hz.
Étape 6: Explication du code
#comprendre
#comprendre
Nous commençons par inclure l'en-tête AT89X051 de sdcc. Il contient des macros pour interagir avec les registres comme s'il s'agissait de variables. Nous incluons également stdint.h qui contient les définitions des types entiers uint8_t et uint16_t.
// En supposant que l'oscillateur soit à 16 MHz
#define INTERRUPTIONS_PER_SECOND 5208
Une interruption se produit lorsque le Timer0 déborde. Il est configuré comme une seule minuterie 8 bits, donc cela se produit tous les 2^8 cycles de processeur. Un cycle de processeur prend 12 cycles d'horloge, et nous arrivons donc à 16000000/12/2^8 = 5208,33333.
volatile uint8_t led_state = 0;
volatil uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Nous déclarons les variables de contrôle d'état et de compteur d'interruption.
void Timer0_ISR(void) _interrupt (1) {
timer_counter--; if(timer_counter == 0) { led_state = !led_state; timer_counter = INTERRUPTIONS_PER_SECOND; } }
Chaque fois que le Timer0 déborde, le compteur est diminué. S'il est égal à zéro, il est réinitialisé et l'état de la led est modifié. Cela se produit environ une fois par seconde, ce qui entraîne une fréquence de clignotement de la LED d'environ 0,5 Hz.
int main() {
TMOD = 0x3; // Mode minuteur - 8 bits, pas de pré-échelonneur. fréq = OSCFREQ/12/2^8 TL0 = 0; // Effacement du compteur TH0 = 0; // Effacement du registre TR0 = 1; // Réglez le minuteur pour qu'il s'exécute. ET0 = 1; // Définit l'interruption. AE = 1; // Définit l'interruption globale. while(1) { if (led_state) { P1 = 0xFF; } autre { P1 = 0x00; } } }
Nous configurons le module de minuterie et attendons les changements dans la variable de contrôle d'état de la LED. TMOD est le registre de contrôle du mode minuterie. TL0 et TH0 sont des registres de contrôle Timer0. ET0 est le bit enable-timer0 dans le registre de contrôle du temporisateur (TCON). TR0 et EA sont des bits dans le registre de validation d'interruption (IE).
Étape 7: Ressources supplémentaires
- Fiche technique AT89C2051:
- Compilateur C pour petits périphériques (sdcc):
- 8051 ressources:
- Référentiel du programmeur AT89C2051:
- dépôt hello-8051:
Conseillé:
Horloge LED utilisant 555 et 4017 (aucune programmation nécessaire): 8 étapes (avec images)
Horloge LED utilisant 555 et 4017 (aucune programmation nécessaire): Ici, je vais présenter un projet que j'ai conçu et réalisé il y a environ 7 ans. L'idée du projet est d'utiliser des circuits intégrés de compteur comme 4017 pour générer des signaux qui contrôlent le clignotement des LED disposées comme aiguilles de l'horloge analogique
Introduction à la programmation du Raspberry Pi sans codage manuel : 3 étapes
Introduction à la programmation de Raspberry Pi sans codage manuel : Bonjour, cette instructable vous montrera comment transformer votre Raspberry Pi en un appareil d'automatisation entièrement programmable compatible avec le langage de programmation orienté graphiquement pour les API appelé Function Block Diagram (partie de la norme IEC 61131-3). Cela peut être
Un petit bol mettant en vedette la force Lorentz : 4 étapes
Un petit bol présentant la force de Lorentz : nous avons créé une configuration simple dans laquelle la force de Lorentz peut être visualisée. En laissant un courant traverser un mélange d'eau et de bicarbonate de soude et en plaçant un aimant sous ce mélange, le fluide fera un mouvement de rotation autour des électrodes
Comment démonter un ordinateur avec des étapes et des images faciles : 13 étapes (avec des images)
Comment démonter un ordinateur avec des étapes et des images faciles : Il s'agit d'instructions sur la façon de démonter un PC. La plupart des composants de base sont modulaires et facilement démontables. Cependant, il est important que vous soyez organisé à ce sujet. Cela vous aidera à éviter de perdre des pièces, et aussi à faire le remontage ea
Bienvenue dans la matrice dans l'invite de commande : 5 étapes (avec images)
Bienvenue dans la matrice en invite de commande : voici une petite "astuce" pour impressionner vos amis en invite de commande. Cela fait simplement apparaître votre invite de commande comme s'il s'agissait du thème Matrix, et appuyer continuellement sur Entrée l'aide à le rendre encore plus cool! J'ai appris cela il y a quelques années et j'ai décidé de m