Table des matières:

Introduction à la programmation 8051 avec AT89C2051 (invité mettant en vedette: Arduino): 7 étapes (avec images)
Introduction à la programmation 8051 avec AT89C2051 (invité mettant en vedette: Arduino): 7 étapes (avec images)

Vidéo: Introduction à la programmation 8051 avec AT89C2051 (invité mettant en vedette: Arduino): 7 étapes (avec images)

Vidéo: Introduction à la programmation 8051 avec AT89C2051 (invité mettant en vedette: Arduino): 7 étapes (avec images)
Vidéo: How to program an analog clock with a microcontroller 2024, Juillet
Anonim
Introduction à la programmation 8051 avec AT89C2051 (invité avec: Arduino)
Introduction à la programmation 8051 avec AT89C2051 (invité avec: Arduino)

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
Conditions

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

Construire le programmeur
Construire le programmeur
Construire le programmeur
Construire le programmeur
Construire le programmeur
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

Installation du logiciel de programmation
Installation du logiciel de programmation
Installation du logiciel de programmation
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

Programmation de la puce
Programmation de la puce
Programmation de la puce
Programmation de la puce
Programmation de la puce
Programmation de la puce
Programmation de la puce
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

Assemblée
Assemblée
Assemblée
Assemblée
Assemblée
Assemblée

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

Explication du code
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é: