
Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02

8051 (også kjent som MCS-51) er et MCU-design fra 80-tallet som fortsatt er populært i dag. Moderne 8051-kompatible mikrokontroller er tilgjengelige fra flere leverandører, i alle fasonger og størrelser, og med et bredt utvalg av eksterne enheter. I denne instruksen vil vi se på AT89C2051 MCU fra Atmel.
AT89C2051 er en liten (2Kbyte Flash, 128byte RAM), billig (~ $ 1,40 per brikke) mikrokontroller.
- 2,7-6V drift
- 15 I/O -linjer
- 2 tidtakere (16 bit)
- Interne og eksterne avbrudd
- UART
- On-chip analog komparator
- Opptil 2 MIPS med en 24 MHz klokke
Trinn 1: Krav

Krav:
- Linux PC (nødvendig programvare: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051 -brikke (DIP20 -pakke)
- 20-pinners ZIF-kontakt
- Optokobler (helst MOSFET-utgang)
- Arduino prototypeskjold
- 12V strømforsyning
- 5V strømforsyning
- 16MHz krystalloscillator
- 2x 30pF kondensator
- 100nF kondensator
- Diode (eks: 1N400X)
- Motstander (1K, 3K3)
- Protoboard
- Gensere
- Kobbertråd
Se etter nødvendig programvare:
hvilken python3
som lager hvilken sdcc hvilken git
Trinn 2: Bygg programmereren



Denne delen vil være kort, ettersom jeg bygde programmeringsskjoldet mitt for en tid siden. Jeg har lagt ved skjemaet og bildene av det monterte brettet. PDF -en til skjemaet finnes i depotet.
Du må programmere programmererkortet:
1. Klon depotet.
git -klon
2. Åpne filen AT89C2051_programmer/AT89_prog/AT89_prog.ino i Arduino IDE.
3. Bygg og last opp skissen fra Arduino IDE.
Trinn 3: Installere programmeringsprogramvare


1. Lag et virtuelt python -miljø.
python3 -m venv venv
. venv/bin/aktivere
2. Installer at89overlord. at89overlord er en åpen kildekode -programmerer for AT89C2051 -brikken skrevet av meg. kildekoden finner du her.
pip installere at89overlord
3. Kontroller installasjonen.
at89overlord -h
Trinn 4: Programmering av brikken




1. Klon et enkelt blinkprosjekt.
cd ~
git-klon https://github.com/piotrb5e3/hello-8051.git cd hello-8051/
2. Bygg programmet.
gjøre
3. Koble Arduino til PC -en, koble 12V -forsyningen, plasser AT89C2051 -brikken i ZIF -kontakten.
4. Finn Arduinos serielle port.
ls /dev /tty*
5. Last opp den innebygde IntelHex -filen til brikken. Hvis Arduino -porten din er forskjellig fra /dev /ttyACM0, må du sende den riktige verdien med kommandolinjeparameteren -p.
at89overlord -f./hello.ihx
Trinn 5: Montering



Monter kretsen i henhold til skjematisk. Du finner en PDF -versjon i depotet.
Du bør se den grønne LED blinke med en frekvens på rundt 0,5 Hz.
Trinn 6: Forklaring av kode

#inkludere
#inkludere
Vi starter med å inkludere AT89X051 -overskriften fra SDCC. Den inneholder makroer for interaksjon med registre som om de var variabler. Vi inkluderer også stdint.h som inneholder definisjoner av uint8_t og uint16_t heltallstyper.
// Antar at oscillatoren er 16MHz
#define INTERRUPTS_PER_SECOND 5208
Et avbrudd oppstår når Timer0 flyter over. Den er konfigurert som en enkelt 8 -biters timer, så dette skjer hver 2.^8 prosessorsyklus. En prosessorsyklus tar 12 klokkesykluser, og dermed kommer vi frem til 16000000/12/2^8 = 5208.33333.
flyktig uint8_t led_state = 0;
flyktig uint16_t timer_counter = INTERRUPTS_PER_SECOND;
Vi erklærer ledet tilstandskontroll og avbryter tellervariabler.
void Timer0_ISR (void) _interrupt (1) {
timer_teller--; hvis (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}
Hver gang Timer0 overløper, reduseres telleren. Hvis den er lik null, tilbakestilles den, og LED -tilstanden endres. Dette skjer omtrent en gang i sekundet, noe som resulterer i ~ 0,5 Hz LED -blinkfrekvens.
int main () {
TMOD = 0x3; // Timer -modus - 8bits, ingen forhåndskalkulator. freq = OSCFREQ/12/2^8 TL0 = 0; // Fjern teller TH0 = 0; // Slett register TR0 = 1; // Still timeren til å kjøre. ET0 = 1; // Sett avbrudd. EA = 1; // Angi global avbrudd. mens (1) {if (led_state) {P1 = 0xFF; } annet {P1 = 0x00; }}}
Vi konfigurerer timermodulen og venter på endringer i led -tilstandskontrollvariabelen. TMOD er timermodus -kontrollregisteret. TL0 og TH0 er Timer0 kontrollregistre. ET0 er aktiverings-timer0-bit i timer-kontrollregisteret (TCON). TR0 og EA er biter i interrupt enable register (IE).
Trinn 7: Ytterligere ressurser
- AT89C2051 datablad:
- Liten enhet C -kompilator (sdcc):
- 8051 ressurser:
- AT89C2051 programmeringslager:
- hei-8051 depot:
Anbefalt:
Covid Sikkerhetshjelm Del 1: en introduksjon til Tinkercad Circuits !: 20 trinn (med bilder)

Covid Sikkerhetshjelm Del 1: en introduksjon til Tinkercad Circuits !: Hei, venn! I denne todelte serien lærer vi hvordan du bruker Tinkercad's Circuits - et morsomt, kraftig og lærerikt verktøy for å lære om hvordan kretser fungerer! En av de beste måtene å lære er å gjøre. Så vi skal først designe vårt eget prosjekt:
Introduksjon til IR -kretser: 8 trinn (med bilder)

Introduksjon til IR -kretser: IR er et komplekst stykke teknologi, men likevel veldig enkelt å jobbe med. I motsetning til LED eller LASER kan infrarød ikke sees med det menneskelige øyet. I denne instruksen vil jeg demonstrere bruken av infrarød gjennom 3 forskjellige kretser. Kretsene vil ikke være u
Introduksjon til manipulatorer: 8 trinn (med bilder)

Introduksjon til manipulatorer: Å lage riktig manipulator for en utfordring er en av de vanskeligste delene av FIRST Robotics Competition (FRC). I mine fire år som student var det alltid lagets største fiasko. Selv om spillutfordringen i FRC endres fra år til
Conductive Jelly Donuts - en introduksjon til sykretser med Makey Makey: 4 trinn (med bilder)

Conductive Jelly Donuts - en introduksjon til sykretser med Makey Makey: Vi la merke til på Twitter at mange av våre Scratch- og Makey Makey -fanatikere ønsket å vite mer om sykretser, så vi laget denne opplæringen for å gi deg en rask introduksjon om sykretser. og hvordan du kan sy noen modulbiter. (Dette er
Introduksjon til stemmegjenkjenning med Elechouse V3 og Arduino .: 4 trinn (med bilder)

Introduksjon til stemmegjenkjenning med Elechouse V3 og Arduino .: Hei der …! Tekstgjenkjenningsteknologi har vært her de siste årene. Vi husker fortsatt den store spenningen vi hadde da vi snakket med den første Siri -aktiverte iPhone. Siden den gang har stemmekommando -enheter vokst til et meget avansert nivå