Isi kandungan:

Pengenalan 8051 Pengaturcaraan Dengan AT89C2051 (Tetamu Dibintangi: Arduino): 7 Langkah (dengan Gambar)
Pengenalan 8051 Pengaturcaraan Dengan AT89C2051 (Tetamu Dibintangi: Arduino): 7 Langkah (dengan Gambar)

Video: Pengenalan 8051 Pengaturcaraan Dengan AT89C2051 (Tetamu Dibintangi: Arduino): 7 Langkah (dengan Gambar)

Video: Pengenalan 8051 Pengaturcaraan Dengan AT89C2051 (Tetamu Dibintangi: Arduino): 7 Langkah (dengan Gambar)
Video: Reka Bentuk Pengaturcaraan | RBT Tahun 4 | Asas Pengaturcaraan & Atur Cara Komputer Dalam Peralatan 2024, November
Anonim
Pengenalan Pengaturcaraan 8051 Dengan AT89C2051 (Tetamu Dibintangi: Arduino)
Pengenalan Pengaturcaraan 8051 Dengan AT89C2051 (Tetamu Dibintangi: Arduino)

8051 (juga dikenali sebagai MCS-51) adalah reka bentuk MCU dari tahun 80-an yang tetap popular hingga kini. Mikrokontroler serasi 8051 moden boleh didapati dari pelbagai vendor, dalam semua bentuk dan saiz, dan dengan pelbagai periferal. Dalam arahan ini kita akan melihat MC89 AT89C2051 dari Atmel.

AT89C2051 adalah mikrokontroler kecil (2Kbyte Flash, 128byte RAM), murah (~ $ 1,40 per cip). Ciri-ciri:

  • Operasi 2.7-6V
  • 15 garisan I / O
  • 2 pemasa (16 bit)
  • Gangguan dalaman dan luaran
  • UART
  • Pembanding analog pada cip
  • Hingga 2MIPS dengan jam 24MHz

Langkah 1: Keperluan

Keperluan
Keperluan

Keperluan:

  • PC Linux (perisian yang diperlukan: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Cip AT89C2051 (pakej DIP20)
  • Soket ZIF 20-pin
  • Optocoupler (lebih baik keluaran MOSFET)
  • Perisai prototaip Arduino
  • Bekalan kuasa 12V
  • Bekalan kuasa 5V
  • Pengayun kristal 16MHz
  • Kapasitor 2x 30pF
  • Kapasitor 100nF
  • Diod (cth: 1N400X)
  • Perintang (1K, 3K3)
  • Papan Protob
  • Pelompat
  • Dawai tembaga

Periksa perisian yang diperlukan:

python3 yang mana

yang membuat sdcc mana yang git

Langkah 2: Membangunkan Programmer

Membangun Programmer
Membangun Programmer
Membangunkan Pengaturcara
Membangunkan Pengaturcara
Membangunkan Pengaturcara
Membangunkan Pengaturcara

Bahagian ini akan ringkas, kerana saya membina perisai pengaturcaraan saya beberapa waktu yang lalu. Saya telah melampirkan skema dan gambar papan yang dipasang. PDF skema boleh didapati di repositori.

Anda perlu memprogram papan pengaturcara:

1. Klon repositori.

git klon

2. Buka fail AT89C2051_programmer / AT89_prog / AT89_prog.ino di Arduino IDE.

3. Bina dan muat naik lakaran dari Arduino IDE.

Langkah 3: Memasang Perisian Pengaturcara

Memasang Perisian Pengaturcara
Memasang Perisian Pengaturcara
Memasang Perisian Pengaturcara
Memasang Perisian Pengaturcara

1. Buat persekitaran maya python.

python3 -m venv venv

. venv / bin / aktifkan

2. Pasang at89overlord. at89overlord adalah programmer Open Source untuk cip AT89C2051 yang ditulis oleh saya. Kod sumbernya boleh didapati di sini.

memasang pip at89overlord

3. Sahkan pemasangan.

at89overlord -h

Langkah 4: Memprogram Chip

Memprogram Chip
Memprogram Chip
Memprogram Chip
Memprogram Chip
Memprogram Chip
Memprogram Chip
Memprogram Chip
Memprogram Chip

1. Klon projek sekelip mata.

cd ~

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

2. Bina aplikasi.

membuat

3. Sambungkan Arduino ke PC, sambungkan bekalan 12V, letakkan cip AT89C2051 di soket ZIF.

4. Cari port bersiri Arduino.

ls / dev / tty *

5. Muat naik fail IntelHex yang dibina ke cip. Sekiranya port Arduino anda berbeza dari / dev / ttyACM0, anda harus memberikan nilai yang betul dengan parameter baris perintah -p.

at89overlord -f./hello.ihx

Langkah 5: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Pasang litar mengikut skema. Versi PDF boleh didapati di repositori.

Anda harus melihat lampu kilat LED hijau dengan frekuensi sekitar 0.5Hz.

Langkah 6: Penjelasan Kod

Penjelasan Kod
Penjelasan Kod

#sertakan

#sertakan

Kita mulakan dengan memasukkan tajuk AT89X051 dari sdcc. Ini mengandungi makro untuk berinteraksi dengan register seolah-olah mereka pemboleh ubah. Kami juga menyertakan stdint.h yang mengandungi definisi jenis integer uint8_t dan uint16_t.

// Dengan andaian pengayun ialah 16MHz

#tentukan INTERRUPTS_PER_SECOND 5208

Gangguan berlaku apabila Pemasa0 meluap. Ia dikonfigurasikan sebagai pemasa 8bit tunggal, jadi ini berlaku setiap 2 ^ 8 kitaran pemproses. Satu kitaran pemproses memerlukan 12 pusingan jam, dan dengan demikian kami tiba pada jam 16000000/12/2 ^ 8 = 5208.33333.

uint8_t led_state yang tidak menentu = 0;

tidak stabil uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Kami menyatakan pemboleh ubah kawalan keadaan yang dipimpin dan mengganggu pemboleh ubah.

void Timer0_ISR (void) _terhenti (1) {

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

Setiap kali Timer0 melimpah, kaunter berkurang. Sekiranya sama dengan sifar, ia diset semula, dan keadaan dipimpin berubah. Ini berlaku sekitar sekali sesaat, menghasilkan ~ 0.5Hz frekuensi berkelip LED.

int utama () {

TMOD = 0x3; // Mod pemasa - 8 bit, tanpa prescaler. freq = OSCFREQ / 12/2 ^ 8 TL0 = 0; // Kosongkan kaunter TH0 = 0; // Kosongkan daftar TR0 = 1; // Tetapkan pemasa untuk dijalankan. ET0 = 1; // Tetapkan gangguan. EA = 1; // Tetapkan gangguan global. sementara (1) {if (led_state) {P1 = 0xFF; } lain {P1 = 0x00; }}}

Kami mengkonfigurasi modul pemasa dan menunggu perubahan dalam pemboleh ubah kawalan keadaan yang dipimpin. TMOD adalah daftar kawalan mod pemasa. TL0 dan TH0 adalah daftar kawalan Timer0. ET0 adalah pengaktifkan pemasa0 bit dalam daftar kawalan pemasa (TCON). TR0 dan EA adalah bit dalam interrupt enabled register (IE).

Langkah 7: Sumber Tambahan

  • Lembar data AT89C2051:
  • Penyusun C Peranti Kecil (sdcc):
  • 8051 sumber:
  • Repositori pengaturcara AT89C2051:
  • repositori hello-8051:

Disyorkan: