Innehållsförteckning:

Introduktion till 8051 -programmering med AT89C2051 (gästskådespelare: Arduino): 7 steg (med bilder)
Introduktion till 8051 -programmering med AT89C2051 (gästskådespelare: Arduino): 7 steg (med bilder)

Video: Introduktion till 8051 -programmering med AT89C2051 (gästskådespelare: Arduino): 7 steg (med bilder)

Video: Introduktion till 8051 -programmering med AT89C2051 (gästskådespelare: Arduino): 7 steg (med bilder)
Video: Introduction to 8051 Microcontroller | Part 1 | Bharat Acharya Education 2024, November
Anonim
Introduktion till 8051 -programmering med AT89C2051 (gästskådespelare: Arduino)
Introduktion till 8051 -programmering med AT89C2051 (gästskådespelare: Arduino)

8051 (även känd som MCS-51) är en MCU-design från 80-talet som fortfarande är populär idag. Moderna 8051-kompatibla mikrokontroller finns tillgängliga från flera leverantörer, i alla former och storlekar, och med ett brett utbud av kringutrustning. I denna instruerbara tittar vi på AT89C2051 MCU från Atmel.

AT89C2051 är en liten (2Kbyte Flash, 128byte RAM), billig (~ $ 1,40 per chip) mikrokontroller.

  • 2,7-6V drift
  • 15 I/O -linjer
  • 2 timers (16 bitar)
  • Interna och externa avbrott
  • UART
  • On-chip analog komparator
  • Upp till 2 MIPS med en 24 MHz klocka

Steg 1: Krav

Krav
Krav

Krav:

  • Linux -dator (obligatorisk programvara: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 -chip (DIP20 -paket)
  • 20-stifts ZIF-uttag
  • Optokopplare (helst MOSFET-utgång)
  • Arduino prototypsköld
  • 12V strömförsörjning
  • 5V strömförsörjning
  • 16MHz kristalloscillator
  • 2x 30pF kondensator
  • 100nF kondensator
  • Diod (ex: 1N400X)
  • Motstånd (1K, 3K3)
  • Protoboard
  • Tröjor
  • Koppartråd

Sök efter nödvändig programvara:

vilken python3

som gör vilken sdcc vilken git

Steg 2: Bygga programmeraren

Bygga programmeraren
Bygga programmeraren
Bygga programmeraren
Bygga programmeraren
Bygga programmeraren
Bygga programmeraren

Det här avsnittet blir kort, eftersom jag byggde min programmeringssköld för en tid sedan. Jag har bifogat schemat och bilderna på det monterade kortet. PDF -filen för schemat finns i förvaret.

Du måste programmera programmeringskortet:

1. Klona förvaret.

git -klon

2. Öppna filen AT89C2051_programmer/AT89_prog/AT89_prog.ino i Arduino IDE.

3. Skapa och ladda upp skissen från Arduino IDE.

Steg 3: Installera programmerarprogramvara

Installera programmeringsprogramvara
Installera programmeringsprogramvara
Installera programmeringsprogramvara
Installera programmeringsprogramvara

1. Skapa en virtuell python -miljö.

python3 -m venv venv

. venv/bin/aktivera

2. Installera at89overlord. at89overlord är en Open Source -programmerare för AT89C2051 -chipet skrivet av mig, källkoden hittar du här.

pip installera at89overlord

3. Verifiera installationen.

at89overlord -h

Steg 4: Programmering av chippet

Programmering av chippet
Programmering av chippet
Programmering av chippet
Programmering av chippet
Programmering av chippet
Programmering av chippet
Programmering av chippet
Programmering av chippet

1. Klona ett enkelt blinkprojekt.

cd ~

git-klon https://github.com/piotrb5e3/hello-8051.git cd hello-8051/

2. Skapa programmet.

göra

3. Anslut Arduino till datorn, anslut 12V -matningen, placera AT89C2051 -chipet i ZIF -uttaget.

4. Leta reda på Arduinos serieport.

ls /dev /tty*

5. Ladda upp den inbyggda IntelHex -filen till chipet. Om din Arduinos port skiljer sig från /dev /ttyACM0 måste du skicka rätt värde med kommandoradsparametern -p.

at89overlord -f./hello.ihx

Steg 5: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Montera kretsen enligt schemat. En PDF -version finns i förvaret.

Du bör se den gröna lysdioden blinka med en frekvens på cirka 0,5 Hz.

Steg 6: Förklaring av kod

Kod Förklaring
Kod Förklaring

#omfatta

#omfatta

Vi börjar med att inkludera AT89X051 -rubriken från SDCC. Den innehåller makron för att interagera med register som om de vore variabler. Vi inkluderar också stdint.h som innehåller definitioner av uint8_t och uint16_t heltalstyper.

// Antar oscillatorn är 16MHz

#define INTERRUPTS_PER_SECOND 5208

Ett avbrott inträffar när timern0 flyter över. Den är konfigurerad som en enda 8 -bitars timer, så detta händer var 2^8 processorcykler. En processorcykel tar 12 klockcykler, och därmed kommer vi fram till 16000000/12/2^8 = 5208.33333.

flyktig uint8_t led_state = 0;

flyktig uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Vi deklarerar ledda tillståndskontrollen och avbryter motvariabler.

void Timer0_ISR (void) _interrupt (1) {

timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Varje gång timern0 rinner över minskar räknaren. Om det är lika med noll återställs det och LED -tillståndet ändras. Detta sker ungefär en gång per sekund, vilket resulterar i ~ 0,5 Hz LED blinkande frekvens.

int main () {

TMOD = 0x3; // Timer -läge - 8 bitar, ingen förkalkning. freq = OSCFREQ/12/2^8 TL0 = 0; // Rensa räknaren TH0 = 0; // Rensa register TR0 = 1; // Ställ in timern för att köra. ET0 = 1; // Ställ in avbrott. EA = 1; // Ställ in globalt avbrott. medan (1) {if (led_state) {P1 = 0xFF; } annat {P1 = 0x00; }}}

Vi konfigurerar timermodulen och väntar på ändringar i ledstatusstyrvariabeln. TMOD är timerregistreringsregistret. TL0 och TH0 är Timer0 -kontrollregister. ET0 är aktiverings-timer0-biten i timerkontrollregistret (TCON). TR0 och EA är bitar i avbrottsaktiveringsregistret (IE).

Steg 7: Ytterligare resurser

  • AT89C2051 datablad:
  • Liten enhet C -kompilator (sdcc):
  • 8051 resurser:
  • AT89C2051 programmerarförvar:
  • hej-8051-förvaret:

Rekommenderad: