INHOUDSOPGAWE:

Inleiding tot 8051 -programmering met AT89C2051 (gastrolle: Arduino): 7 stappe (met foto's)
Inleiding tot 8051 -programmering met AT89C2051 (gastrolle: Arduino): 7 stappe (met foto's)

Video: Inleiding tot 8051 -programmering met AT89C2051 (gastrolle: Arduino): 7 stappe (met foto's)

Video: Inleiding tot 8051 -programmering met AT89C2051 (gastrolle: Arduino): 7 stappe (met foto's)
Video: Вощение нити своими руками (3 способа) 2024, Julie
Anonim
Inleiding tot 8051 -programmering met AT89C2051 (gastrolle: Arduino)
Inleiding tot 8051 -programmering met AT89C2051 (gastrolle: Arduino)

Die 8051 (ook bekend as MCS-51) is 'n MCU-ontwerp uit die 80's wat vandag nog steeds gewild bly. Moderne 8051-versoenbare mikrobeheerders is beskikbaar by verskeie verskaffers, in alle vorms en groottes, en met 'n wye verskeidenheid randapparatuur. In hierdie instruksies kyk ons na die AT89C2051 MCU van Atmel.

AT89C2051 is 'n klein (2Kbyte Flash, 128byte RAM), goedkoop (~ $ 1,40 per chip) mikrokontroleerder.

  • 2.7-6V werking
  • 15 I/O lyne
  • 2 timers (16 bit)
  • Interne en eksterne onderbrekings
  • UART
  • On-chip analoog vergelyker
  • Tot 2MIPS met 'n 24MHz -horlosie

Stap 1: Vereistes

Vereistes
Vereistes

Vereistes:

  • Linux -rekenaar (vereiste sagteware: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 -chip (DIP20 -pakket)
  • 20-pins ZIF-aansluiting
  • Optokoppelaar (verkieslik MOSFET-uitvoer)
  • Arduino prototipe skild
  • 12V kragtoevoer
  • 5V kragtoevoer
  • 16MHz kristal ossillator
  • 2x 30pF kapasitor
  • 100nF kapasitor
  • Diode (byvoorbeeld: 1N400X)
  • Weerstande (1K, 3K3)
  • Protobord
  • Springers
  • Koperdraad

Kyk vir die nodige sagteware:

watter luislang3

wat maak watter sdcc watter git

Stap 2: Bou die programmeerder

Die bou van die programmeerder
Die bou van die programmeerder
Die bou van die programmeerder
Die bou van die programmeerder
Die bou van die programmeerder
Die bou van die programmeerder

Hierdie afdeling sal kort wees, aangesien ek 'n tyd gelede my programmeerskild gebou het. Ek het die skets en foto's van die saamgestelde bord aangeheg. Die PDF van die skema kan in die bewaarplek gevind word.

U moet die programmeerderbord programmeer:

1. Kloon die bewaarplek.

git -kloon

2. Maak die AT89C2051_programmer/AT89_prog/AT89_prog.ino -lêer oop in Arduino IDE.

3. Bou en laai die skets op van die Arduino IDE.

Stap 3: Installeer programmeersagteware

Installeer programmeerdersagteware
Installeer programmeerdersagteware
Installeer programmeerdersagteware
Installeer programmeerdersagteware

1. Skep 'n virtuele python -omgewing.

python3 -m venv venv

. venv/bin/aktiveer

2. Installeer at89overlord. at89overlord is 'n Open Source -programmeerder vir die AT89C2051 -chip wat deur my geskryf is, en u kan die bronkode hier vind.

pip installeer at89overlord

3. Verifieer die installasie.

at89overlord -h

Stap 4: Programmering van die chip

Die programmering van die chip
Die programmering van die chip
Die programmering van die chip
Die programmering van die chip
Die programmering van die chip
Die programmering van die chip
Die programmering van die chip
Die programmering van die chip

1. Kloon 'n eenvoudige knipoogprojek.

cd ~

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

2. Bou die aansoek.

maak

3. Koppel Arduino aan op die rekenaar, koppel die 12V -voeding aan, plaas die AT89C2051 -chip in die ZIF -aansluiting.

4. Vind die seriële poort van Arduino.

ls /dev /tty*

5. Laai die geboude IntelHex -lêer op na die skyfie. As die poort van u Arduino verskil van /dev /ttyACM0, moet u die korrekte waarde deurgee met die -p -opdragreëlparameter.

at89overlord -f./hello.ihx

Stap 5: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Monteer die stroombaan volgens skema. 'N PDF -weergawe kan in die bewaarplek gevind word.

U moet die groen LED -flits met 'n frekwensie van ongeveer 0,5 Hz sien.

Stap 6: Kode Uitleg

Kode Verduideliking
Kode Verduideliking

#insluit

#insluit

Ons begin deur die AT89X051 -opskrif van sdcc op te neem. Dit bevat makros vir interaksie met registers asof dit veranderlikes is. Ons bevat ook stdint.h wat definisies bevat van uint8_t en uint16_t heelgetal tipes.

// Gestel ossillator is 16MHz

#definieer INTERRUPTS_PER_SECOND 5208

'N Onderbreking vind plaas wanneer die Timer0 oorloop. Dit is opgestel as 'n enkele 8 -bits timer, so dit gebeur elke 2^8 verwerkersiklusse. Een verwerkersiklus neem 12 kloksiklusse, en dus kom ons by 16000000/12/2^8 = 5208.33333.

vlugtige uint8_t led_state = 0;

vlugtige uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Ons verklaar die geleide staatsbeheer en onderbreek teenveranderlikes.

void Timer0_ISR (void) _interrupt (1) {

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

Elke keer as die timer 0 oorloop, word die toonbank verminder. As dit gelyk is aan nul, word dit herstel en word die led -toestand verander. Dit gebeur ongeveer een keer per sekonde, wat lei tot ~ 0.5Hz LED knipperfrekwensie.

int main () {

TMOD = 0x3; // Timer -modus - 8 bits, geen voorverkoeler. freq = OSCFREQ/12/2^8 TL0 = 0; // Maak toonbank skoon TH0 = 0; // Verwyder register TR0 = 1; // Stel die timer in om uit te voer. ET0 = 1; // Stel onderbreking in. EA = 1; // Stel globale onderbreking in. terwyl (1) {if (led_state) {P1 = 0xFF; } anders {P1 = 0x00; }}}

Ons stel die tydmodule op en wag vir veranderinge in die veranderlike in die led -toestandbeheer. TMOD is die timer -modusregister. TL0 en TH0 is Timer0 -kontroleregisters. ET0 is die enable-timer0 bit in die timer control register (TCON). TR0 en EA is stukkies in die interrupt enable register (IE).

Stap 7: Bykomende hulpbronne

  • Gegevensblad AT89C2051:
  • Klein toestel C samesteller (sdcc):
  • 8051 bronne:
  • AT89C2051 programmeerder -bewaarplek:
  • hello-8051-bewaarplek:

Aanbeveel: