Talaan ng mga Nilalaman:

Panimula sa 8051 Programming Sa AT89C2051 (Pagbibidahan ng Bisita: Arduino): 7 Mga Hakbang (na may Mga Larawan)
Panimula sa 8051 Programming Sa AT89C2051 (Pagbibidahan ng Bisita: Arduino): 7 Mga Hakbang (na may Mga Larawan)

Video: Panimula sa 8051 Programming Sa AT89C2051 (Pagbibidahan ng Bisita: Arduino): 7 Mga Hakbang (na may Mga Larawan)

Video: Panimula sa 8051 Programming Sa AT89C2051 (Pagbibidahan ng Bisita: Arduino): 7 Mga Hakbang (na may Mga Larawan)
Video: KWENTO NI ANTONIO SA MAALAMAT NA BIRINGAN CITY 2024, Nobyembre
Anonim
Panimula sa 8051 Programming Sa AT89C2051 (Batayan sa Bisita: Arduino)
Panimula sa 8051 Programming Sa AT89C2051 (Batayan sa Bisita: Arduino)

Ang 8051 (kilala rin bilang MCS-51) ay isang disenyo ng MCU mula 80's na nananatiling popular ngayon. Ang mga makabagong 8051 na katugmang microcontroller ay magagamit mula sa maraming mga vendor, sa lahat ng mga hugis at sukat, at may malawak na hanay ng mga peripheral. Sa itinuturo na ito ay titingnan namin ang AT89C2051 MCU mula sa Atmel.

Ang AT89C2051 ay isang maliit (2Kbyte Flash, 128byte RAM), murang (~ $ 1.40 bawat chip) microcontroller. Mga Tampok:

  • 2.7-6V na operasyon
  • 15 I / O mga linya
  • 2 timer (16 bit)
  • Panloob at panlabas na pagkagambala
  • UART
  • Maghahambing na analog na on-chip
  • Hanggang sa 2MIPS na may 24MHz na orasan

Hakbang 1: Mga Kinakailangan

Mga Kinakailangan
Mga Kinakailangan

Mga Kinakailangan:

  • Linux PC (kinakailangang software: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • AT89C2051 chip (DIP20 package)
  • 20-pin na socket ng ZIF
  • Optocoupler (mas mabuti ang MOSFET-output)
  • Arduino prototyping na kalasag
  • 12V supply ng kuryente
  • 5V supply ng kuryente
  • 16MHz crystal oscillator
  • 2x 30pF capacitor
  • 100nF capacitor
  • Diode (hal: 1N400X)
  • Mga Resistor (1K, 3K3)
  • Protoboard
  • Mga jumper
  • Alambreng tanso

Suriin ang kinakailangang software:

aling python3

na gumawa ng aling sdcc kung aling git

Hakbang 2: Pagbuo ng Programmer

Pagbuo ng Programmer
Pagbuo ng Programmer
Pagbuo ng Programmer
Pagbuo ng Programmer
Pagbuo ng Programmer
Pagbuo ng Programmer

Ang seksyon na ito ay magiging maikli, tulad ng pagbuo ko ng aking kalasag sa pagprogram sa ilang sandali. Ikinabit ko ang eskematiko at mga larawan ng binuo board. Ang PDF ng eskematiko ay matatagpuan sa imbakan.

Kailangan mong i-program ang programmer board:

1. I-clone ang repository.

git clone

2. Buksan ang AT89C2051_programmer / AT89_prog / AT89_prog.ino file sa Arduino IDE.

3. Buuin at i-upload ang sketch mula sa Arduino IDE.

Hakbang 3: Pag-install ng Programmer Software

Pag-install ng Programmer Software
Pag-install ng Programmer Software
Pag-install ng Programmer Software
Pag-install ng Programmer Software

1. Lumikha ng isang virtual na kapaligiran ng sawa.

python3 -m venv venv

. venv / bin / buhayin

2. I-install sa89overlord. ang at89overlord ay isang programmer ng Open Source para sa AT89C2051 chip na isinulat ko. Makikita ang source code dito.

pip install sa89overlord

3. I-verify ang pag-install.

at89overlord -h

Hakbang 4: Programming ang Chip

Programming ang Chip
Programming ang Chip
Programming ang Chip
Programming ang Chip
Programming ang Chip
Programming ang Chip
Programming ang Chip
Programming ang Chip

1. I-clone ang isang simpleng proyekto na blink.

cd ~

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

2. Buuin ang aplikasyon.

gumawa

3. Ikonekta ang Arduino sa PC, ikonekta ang 12V supply, ilagay ang AT89C2051 chip sa ZIF socket.

4. Hanapin ang serial port ni Arduino.

ls / dev / tty *

5. I-upload ang built IntelHex file sa maliit na tilad. Kung ang port ng iyong Arduino ay naiiba mula sa / dev / ttyACM0 kailangan mong ipasa ang tamang halaga gamit ang -p command line parameter.

at89overlord -f./hello.ihx

Hakbang 5: Assembly

Assembly
Assembly
Assembly
Assembly
Assembly
Assembly

Ipunin ang circuit ayon sa eskematiko. Ang isang bersyon ng PDF ay matatagpuan sa repository.

Dapat mong makita ang berdeng LED flash na may dalas na sa paligid ng 0.5Hz.

Hakbang 6: Paliwanag sa Code

Paliwanag sa Code
Paliwanag sa Code

# isama

# isama

Nagsisimula kami sa pamamagitan ng pagsasama ng header ng AT89X051 mula sa sdcc. Naglalaman ito ng mga macros para sa pakikipag-ugnay sa mga rehistro na para bang variable ang mga ito. Nagsasama rin kami ng stdint.h na naglalaman ng mga kahulugan ng uint8_t at uint16_t integer na uri.

// Assuming oscillator ay 16MHz

# tukuyin ang INTERRUPTS_PER_SECOND 5208

Nangyayari ang isang nakakagambala kapag umapaw ang Timer0. Na-configure ito bilang isang solong timer ng 8bit, kaya nangyayari ito bawat 2 ^ 8 na cycle ng processor. Ang isang ikot ng processor ay tumatagal ng 12 na mga cycle ng orasan, at sa gayon nakarating kami sa 16000000/12/2 ^ 8 = 5208.33333.

pabagu-bago ng isip uint8_t led_state = 0;

pabagu-bago ng isip uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Idineklara namin ang pinangunahan na kontrol ng estado at makagambala ang mga variable ng counter.

walang bisa ang Timer0_ISR (walang bisa) _ makagambala (1) {

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

Sa tuwing umaapaw ang Timer0 ay mababawasan ang counter. Kung ito ay katumbas ng zero naka-reset ito, at ang humantong estado ay binago. Ito ay nangyayari sa paligid ng isang beses bawat segundo, na nagreresulta sa ~ 0.5Hz LED blinking frequency.

int main () {

TMOD = 0x3; // Timer mode - 8bits, walang prescaler. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Clear counter TH0 = 0; // Clear register TR0 = 1; // Itakda ang timer upang tumakbo. ET0 = 1; // Itakda ang makagambala. EA = 1; // Itakda ang pandaigdigang abala. habang (1) {kung (led_state) {P1 = 0xFF; } iba pa {P1 = 0x00; }}}

I-configure namin ang module ng timer at naghihintay ng mga pagbabago sa led variable ng kontrol ng estado. AngMOD ay ang rehistro ng kontrol ng timer mode. Ang TL0 at TH0 ay mga rehistro ng kontrol sa Timer0. Ang ET0 ay ang bit ng paganahin ang timer0 sa rehistro ng kontrol ng timer (TCON). Ang TR0 at EA ay mga piraso sa makagambala paganahin ang rehistro (IE).

Hakbang 7: Karagdagang Mga Mapagkukunan

  • AT89C2051 datasheet:
  • Maliit na Device C Compiler (sdcc):
  • 8051 mga mapagkukunan:
  • AT89C2051 programmer repository:
  • hello-8051 repository:

Inirerekumendang: