Talaan ng mga Nilalaman:
- Hakbang 1: Mga Kinakailangan
- Hakbang 2: Pagbuo ng Programmer
- Hakbang 3: Pag-install ng Programmer Software
- Hakbang 4: Programming ang Chip
- Hakbang 5: Assembly
- Hakbang 6: Paliwanag sa Code
- Hakbang 7: Karagdagang Mga Mapagkukunan
Video: Panimula sa 8051 Programming Sa AT89C2051 (Pagbibidahan ng Bisita: Arduino): 7 Mga Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
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:
- 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
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
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
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
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
# 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:
Micro: bit Zip Tile Panimula: 9 Mga Hakbang (na may Mga Larawan)
Micro: bit Zip Tile Panimula: Bago ko ipagpatuloy ang aking serie ng mga instruksyon ng sensor ng paningin ng MU para sa Micro: kaunti, kailangan kong gawin itong itinuro para sa Kitronik Zip Tile, dahil gagamitin ko ito. Ang Kitronik Zip Tile, gagawin ko tawagan lamang ito ng Zip mula ngayon, ay isang 8x8 neopixel mat
Panimula sa Programming Raspberry Pi Nang Walang Pag-coding ng Kamay: 3 Mga Hakbang
Panimula sa Programming Raspberry Pi Nang Walang Pag-coding ng Kamay: Kumusta, maipapakita sa iyo ang itinuturo na ito kung paano i-on ang iyong Raspberry Pi sa isang ganap na nai-program na aparato na awtomatiko na katugma sa wika ng programa na nakatuon sa grapiko para sa mga PLC na tinatawag na Function Block Diagram (bahagi ng pamantayan ng IEC 61131-3). Maaari itong
Conductive Jelly Donuts - isang Panimula sa Mga Circuit ng Pananahi na May Makey Makey: 4 na Hakbang (na may Mga Larawan)
Conductive Jelly Donuts - isang Panimula sa Mga Circuits ng Pananahi Na May Makey Makey: Napansin namin sa Twitter na maraming ng aming mga fanatic na Scratch at Makey Makey na nais malaman ang higit pa tungkol sa mga circuit ng pananahi, kaya ginawa namin ang tutorial na ito upang bigyan ka ng isang mabilis na pagpapakilala sa mga circuit ng pananahi at kung paano ka makakatahi ng ilang mga modular na piraso. (Ito ay
Mga Awtomatikong Ilaw ng Silid Sa Counter ng Bisita !: 7 Mga Hakbang
Mga Awtomatikong Ilaw ng Silid Sa Counter ng Bisita !: Hoy! Kung nais mong mapupuksa ang mga nakakainip na ilaw switch at gawing awtomatiko ang mga ilaw ng iyong silid, nasa tamang lugar ka! Ang proyektong ito ay magiging napakadaling itayo. Huwag dumaan sa pagiging simple nito, magiging cool talaga at 100% na gumagana
Panimula - DIY Gimbal Mount para sa Gopro Session, Atbp.: 5 Mga Hakbang (na may Mga Larawan)
Panimula - DIY Gimbal Mount para sa Gopro Session, Atbp: Gumugol ako ng labis na oras sa paghahanap ng isang solusyon na gagana sa anumang gimbal ng cell phone - isang paraan upang mai-mount ang session ng GoPro. Sa wakas ay nagpasya akong gumawa ng sarili ko. Gagana rin ang parehong pag-mount para sa iba pang mga GoPro camera - i-mount lamang sa mga goma. Ako ay