Inhoudsopgave:
- Stap 1: Vereisten
- Stap 2: De programmeur bouwen
- Stap 3: Programmeersoftware installeren
- Stap 4: Programmeren van de chip
- Stap 5: Montage
- Stap 6: Code Uitleg
- Stap 7: Aanvullende bronnen
Video: Inleiding tot 8051 programmeren met AT89C2051 (gastrollen: Arduino): 7 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
De 8051 (ook bekend als MCS-51) is een MCU-ontwerp uit de jaren 80 dat vandaag de dag nog steeds populair is. Moderne 8051-compatibele microcontrollers zijn verkrijgbaar bij meerdere leveranciers, in alle soorten en maten, en met een breed scala aan randapparatuur. In deze instructable zullen we kijken naar de AT89C2051 MCU van Atmel.
AT89C2051 is een kleine (2Kbyte Flash, 128byte RAM), goedkope (~ $1,40 per chip) microcontroller. Kenmerken:
- 2.7-6V werking
- 15 I/O-lijnen
- 2 timers (16 bits)
- Interne en externe onderbrekingen
- UART
- On-chip analoge comparator
- Tot 2MIPS met een 24MHz klok
Stap 1: Vereisten
Vereisten:
- Linux-pc (benodigde software: Arduino IDE, git, make, sdcc)
- Arduino UNO
- AT89C2051-chip (DIP20-pakket)
- 20-pins ZIF-aansluiting
- Optocoupler (bij voorkeur MOSFET-uitgang)
- Arduino prototyping schild
- 12V voeding
- 5V voeding
- 16MHz kristaloscillator
- 2x 30pF condensator
- 100nF condensator
- Diode (bijv: 1N400X)
- Weerstanden (1K, 3K3)
- Protobord
- Truien
- Koperdraad
Controleer op vereiste software:
welke python3
welke maken welke sdcc welke git
Stap 2: De programmeur bouwen
Dit gedeelte zal kort zijn, aangezien ik enige tijd geleden mijn programmeerschild heb gebouwd. Ik heb het schema en de foto's van het gemonteerde bord bijgevoegd. De PDF van het schema is te vinden in de repository.
U moet het programmeerbord programmeren:
1. Kloon de repository.
git clone
2. Open het bestand AT89C2051_programmer/AT89_prog/AT89_prog.ino in Arduino IDE.
3. Bouw en upload de schets vanuit de Arduino IDE.
Stap 3: Programmeersoftware installeren
1. Maak een virtuele Python-omgeving.
python3 -m venv venv
. venv/bin/activeren
2. Installeer at89overlord. at89overlord is een Open Source-programmeur voor de AT89C2051-chip die door mij is geschreven. De broncode is hier te vinden.
pip install at89overlord
3. Controleer de installatie.
at89overlord -h
Stap 4: Programmeren van de chip
1. Kloon een eenvoudig blink-project.
cd ~
git kloon https://github.com/piotrb5e3/hello-8051.git cd hallo-8051/
2. Bouw de applicatie.
maken
3. Sluit Arduino aan op de pc, sluit de 12V-voeding aan, plaats de AT89C2051-chip in de ZIF-socket.
4. Zoek de seriële poort van Arduino.
ls /dev/tty*
5. Upload het ingebouwde IntelHex-bestand naar de chip. Als de poort van uw Arduino verschilt van /dev/ttyACM0, moet u de juiste waarde doorgeven met de -p opdrachtregelparameter.
at89overlord -f./hallo.ihx
Stap 5: Montage
Monteer de schakeling volgens schema. Een pdf-versie is te vinden in de repository.
U zou de groene LED moeten zien knipperen met een frequentie van ongeveer 0,5 Hz.
Stap 6: Code Uitleg
#erbij betrekken
#erbij betrekken
We beginnen met het opnemen van de AT89X051-header van sdcc. Het bevat macro's voor interactie met registers alsof het variabelen zijn. We nemen ook stdint.h op, die definities bevat van de typen uint8_t en uint16_t integer.
// Ervan uitgaande dat de oscillator 16MHz is
#define INTERRUPTS_PER_SECOND 5208
Een interrupt treedt op wanneer de Timer0 overloopt. Het is geconfigureerd als een enkele 8-bits timer, dus dit gebeurt elke 2^8 processorcycli. Eén processorcyclus duurt 12 klokcycli, en zo komen we uit op 16000000/12/2^8 = 5208.33333.
vluchtig uint8_t led_state = 0;
vluchtig uint16_t timer_counter = INTERRUPTS_PER_SECOND;
We declareren de led-statuscontrole en interrupt-tellervariabelen.
void Timer0_ISR(void) _interrupt (1) {
timer_teller--; if (timer_counter == 0) { led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; } }
Elke keer dat de Timer0 overloopt, wordt de teller verlaagd. Als het gelijk is aan nul, wordt het gereset en wordt de led-status gewijzigd. Dit gebeurt ongeveer één keer per seconde, wat resulteert in ~0,5 Hz LED-knipperfrequentie.
int hoofd() {
TMOD = 0x3; // Timermodus - 8 bits, geen prescaler. freq = OSCFREQ/12/2^8 TL0 = 0; // Wis teller TH0 = 0; // Wis register TR0 = 1; // Stel de timer in om te lopen. ET0 = 1; // Onderbreking instellen. EA = 1; // Globale onderbreking instellen. while(1) { if (led_state) { P1 = 0xFF; } anders { P1 = 0x00; } } }
We configureren de timermodule en wachten op wijzigingen in de regelvariabele van de led-status. TMOD is het controleregister van de timermodus. TL0 en TH0 zijn Timer0-besturingsregisters. ET0 is de enable-timer0 bit in het timer control register (TCON). TR0 en EA zijn bits in het interrupt enable register (IE).
Stap 7: Aanvullende bronnen
- AT89C2051 gegevensblad:
- C-compiler voor klein apparaat (sdcc):
- 8051 bronnen:
- AT89C2051 programmeur repository:
- hallo-8051 repository:
Aanbevolen:
Inleiding tot IR-circuits: 8 stappen (met afbeeldingen)
Inleiding tot IR-circuits: IR is een complex stukje technologie en toch heel eenvoudig om mee te werken. In tegenstelling tot LED's of LASER's kan infrarood niet met het menselijk oog worden gezien. In deze Instructable zal ik het gebruik van infrarood demonstreren via 3 verschillende circuits. De circuits zullen niet
Inleiding tot het programmeren van Raspberry Pi zonder handcodering - Ajarnpa
Inleiding tot het programmeren van Raspberry Pi zonder handcodering: Hallo, deze instructable laat je zien hoe je je Raspberry Pi kunt veranderen in een volledig programmeerbaar automatiseringsapparaat dat compatibel is met grafisch georiënteerde programmeertaal voor PLC's genaamd Function Block Diagram (onderdeel van IEC 61131-3 standaard). Dit kan zijn
Inleiding tot manipulatoren: 8 stappen (met afbeeldingen)
Inleiding tot manipulatoren: Het creëren van de juiste manipulator voor een uitdaging is een van de moeilijkste onderdelen van de FIRST Robotics Competition (FRC). In mijn vier jaar als student was het altijd het grootste falen van mijn team. Hoewel de speluitdaging in FRC van jaar tot jaar verandert
Inleiding tot spraakherkenning met Elechouse V3 en Arduino: 4 stappen (met afbeeldingen)
Inleiding tot spraakherkenning met Elechouse V3 en Arduino.: Hallo daar…! Spraakherkenningstechnologie is hier de laatste jaren. We herinneren ons nog steeds de grote opwinding die we hadden tijdens het praten met de eerste Siri-compatibele iPhone. Sindsdien zijn apparaten voor spraakopdrachten uitgegroeid tot een zeer geavanceerd niveau dat verder gaat dan
Inleiding tot de (Headless) Raspberry Pi: 12 stappen (met afbeeldingen)
Intro tot de (Headless) Raspberry Pi: Eindelijk! Gebruik je Raspberry Pi zonder dat je voor altijd externe randapparatuur moet aansluiten en moet omgaan met een kabelgedrocht: configureer je Pi om zonder hoofd te zijn! (niet het enge soort tho) Dit is vooral handig voor mensen die lesgeven in wo