Pengenalan 8051 Pengaturcaraan dalam Bahasa Perhimpunan

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Bahasa pemasangan adalah bahasa pengaturcaraan peringkat rendah yang digunakan untuk menulis kod program dari segi mnemonik. Walaupun terdapat banyak bahasa tingkat tinggi yang saat ini diminati, bahasa pengaturcaraan pemasangan banyak digunakan dalam banyak aplikasi. Ia dapat digunakan untuk manipulasi perkakasan langsung. Ia juga digunakan untuk menulis 8051 kod pengaturcaraan cekap dengan bilangan kitaran jam yang lebih sedikit dengan menghabiskan lebih sedikit memori berbanding dengan bahasa tahap tinggi yang lain.

8051 Pengaturcaraan dalam Bahasa Perhimpunan

8051 Pengaturcaraan



8051 Pengaturcaraan dalam Bahasa Perhimpunan

Bahasa pemasangan adalah bahasa pengaturcaraan yang berkaitan sepenuhnya dengan perkakasan. Pereka tertanam mesti mempunyai pengetahuan yang mencukupi mengenai perkakasan pemproses atau pengawal tertentu sebelum menulis program. Bahasa pemasangan dikembangkan oleh mnemonics oleh itu, pengguna tidak dapat memahaminya dengan mudah untuk mengubah suai program.


8051 Pengaturcaraan dalam Bahasa Perhimpunan

8051 Pengaturcaraan dalam Bahasa Perhimpunan



Bahasa pengaturcaraan pemasangan dikembangkan oleh pelbagai penyusun dan yang 'Boling' sangat sesuai untuk mikrokontrolerpengaturcaraan pembangunan. Mpengawal mikroatau pemproses hanya dapat memahami bahasa binari dalam bentuk ‘0s atau 1s’. assembler menukar bahasa pemasangan ke bahasa binari, dan kemudian menyimpannya dimikrokontrolermemori untuk melaksanakan tugas tertentu.

8051 Arkitek Mikrokontroler

Tahun 8051mikrokontroleradalah Senibina Harvard berasaskan CISC , dan mempunyai periferal seperti 32 I / O, pemasa / kaunter, komunikasi bersiri dan kenangan. Themikrokontrolermemerlukan program untuk menjalankan operasi yang memerlukan memori untuk menyimpan dan membaca fungsinya. Tahun 8051mikrokontrolerterdiri daripada memori RAM dan ROM untuk menyimpan arahan.

8051 Arctitecuture Mikrokontroler

8051 Arkitek Mikrokontroler

Daftar adalah bahagian utama dalam pemproses danpengawal mikro yang terkandung dalam memori yang memberikan cara yang lebih cepat untuk mengumpulkan dan menyimpan data. Pengaturcaraan bahasa pemasangan 8051 didasarkan pada daftar memori. Sekiranya kita ingin memanipulasi data ke pemproses atau pengawal dengan melakukan pengurangan, penambahan, dan lain-lain, kita tidak dapat melakukannya secara langsung dalam memori, tetapi memerlukan register untuk memproses dan menyimpan data.Pengawal mikromengandungi beberapa jenis daftar yang boleh dikelaskan mengikut arahan atau kandungannya yang beroperasi di dalamnya.

8051 Program Mikrokontroler dalam Bahasa Perhimpunan

Bahasa pemasangan terdiri daripada unsur-unsur yang semuanya digunakan untuk menulis programmengikut urutan. Ikuti peraturan yang diberikan untuk menulis pengaturcaraan dalam bahasa perhimpunan.


Peraturan Bahasa Perhimpunan

  • Kod pemasangan mesti ditulis dengan huruf besar
  • Label mesti diikuti dengan titik dua (label :)
  • Semua simbol dan label mesti bermula dengan huruf
  • Semua komen ditaip dengan huruf kecil
  • Baris terakhir program mestilah arahan TAMAT

Mnemonik bahasa pemasangan adalah dalam bentuk op-code, seperti MOV, ADD, JMP, dan sebagainya, yang digunakan untuk menjalankan operasi.

Kod op: Op-code adalah satu arahan yang dapat dijalankan oleh CPU. Di sini op-code adalah arahan MOV.

Operan: Operan adalah sekeping data yang dapat dikendalikan oleh op-code. Contohnya, operasi pendaraban dilakukan oleh operan yang didarabkan dengan operan.

Sintaks: MUL a,b

Elemen Pengaturcaraan Bahasa Perhimpunan:

  • Garis Panduan Pemasangan
  • Set Arahan
  • Menangani Mod

Arahan Pemasangan:

Arahan pemasangan memberikan arahan kepada CPU. Tahun 8051mikrokontrolerterdiri daripada pelbagai jenis arahan pemasangan untuk memberi arahan kepada unit kawalan. Arahan yang paling berguna adalah pengaturcaraan 8051, seperti:

  • ORG
  • DB
  • EQU
  • TAMAT

ORG(asal): Arahan ini menunjukkan permulaan program. Ini digunakan untuk menetapkan alamat daftar semasa pemasangan. Contohnya ORG 0000h memberitahu penyusun semua kod berikutnya bermula dari alamat 0000h.

Sintaks: ORG 0000j

DB(tentukan bait): Definisi byte digunakan untuk membenarkan rentetan bait. Sebagai contoh, cetak 'EDGEFX' di mana setiap watak diambil oleh alamat dan akhirnya mencetak 'string' oleh DB secara langsung dengan tanda kutip berganda.

Sintaks:

ORG 0000j

MOV a, # 00h
————-
————-
DB 'EDGEFX'

EQU (setara): Arahan setara digunakan untuk menyamakan alamat pemboleh ubah.

Sintaks:

pendaftaran eku,09h
—————–
—————–
MOVpendaftaran,# 2jam

TAMAT: Arahan END digunakan untuk menunjukkan akhir program.

Sintaks:

pendaftaran eku,09h

—————–
—————–
MOVpendaftaran,# 2jam
TAMAT

Mod Menangani:

Cara mengakses data disebut mod pengalamatan. CPU dapat mengakses data dengan cara yang berbeda dengan menggunakan mode pengalamatan. Tahun 8051mikrokontrolerterdiri daripada lima mod pengalamatan seperti:

  • Mod Pengalamatan Segera
  • Daftar Mod Pengalamatan
  • Mod Pengalamatan Langsung
  • Mod Pengalamatan Tidak Langsung
  • Mod Pengalamatan Indeks Pangkalan

Mod Pengalamatan Segera:

Dalam mod pengalamatan ini, sumber mestilah nilai yang dapat diikuti oleh ‘#’ dan tujuan mesti Daftar SFR, daftar tujuan umum dan alamat. Ini digunakan untuk segera menyimpan nilai dalam daftar memori.

Sintaks:

MOV A, # 20h // A adalahsebuahdaftar penumpuk, 20 disimpan di A //
MOV R0,# 15 // R0 adalah daftar tujuan umum 15 disimpan dalam daftar R0 //
MOV P0, # 07h // P0 adalah SFR register07 disimpan di P0 //
MOV 20jam,# 05h // 20h adalah alamat daftar 05 yang disimpan dalam 20h //

Bekas:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, nilai akhir disimpan dalam R0 //

Mendaftar Mod Pengalamatan:

Dalam mod pengalamatan ini, sumber dan destinasi mestilah daftar, tetapi bukan daftar tujuan umum. Jadi data tidak dipindahkan dalam daftar bank tujuan am .

Sintaks:

MOV A, B // A adalah daftar SFR, B adalah daftar tujuan am //
MOV R0, R1 // Arahan tidak sah, GPR ke GPR tidak mungkin //

PEMBENTUK:

MOV R0, # 02h
MOV A, # 30h
TAMBAH R0, A // R0<—R0+A, the final value is stored in the R0 register//

Mod Pengalamatan Langsung

Dalam mod pengalamatan ini, sumber atau tujuan (atau sumber dan tujuan) mestilah alamat, tetapi tidak bernilai.

Sintaks:

MOV A,20h // 20h adalah alamat A adalah daftar //
MOV 00h, 07h // keduanya ditujukan dari daftar GPS //

Bekas:

MOV 07h,# 01h
MOV A, # 08h
TAMBAHKAN,07h // A<—A+07h the final value is stored in A//

Mod Pengalamatan Tidak Langsung:

Dalam mod pengalamatan ini, sumber atau tujuan (atau tujuan atau sumber) mestilahkealamat tidak langsung, tetapi bukan nilai. Mod pengalamatan ini menyokong konsep penunjuk. Penunjuk adalah pemboleh ubah yang digunakan untuk menyimpan alamat pemboleh ubah lain. Konsep penunjuk ini hanya digunakan untuk daftar R0 dan R1.

Sintaks:

Nilai MOVR0, # 01h // 01 disimpan dalam daftar R0, alamat R0 adalah 08h //
MOV R1, # 08h // R1 adalah pemboleh ubah penunjuk yangkedaialamat (08h) dari R0 //
MOV 20jam,Nilai @ R1 // 01 disimpan di alamat 20h daftar GP //

Mod Pengalamatan Tidak Langsung

Mod Pengalamatan Tidak Langsung

Mod Pengalamatan Indeks Pangkalan:

Mod pengalamatan ini digunakan untuk membaca data dari memori luaran atau memori ROM . Semua mod pengalamatan tidak dapat membaca data dari memori kod. Kod mesti membaca daftar DPTR. DPTR digunakan untuk menunjukkan data dalam kod atau memori luaran.

Sintaks:

MOVC A, @ A + DPTR // C menunjukkan memori kod //
MOCX A, @ A + DPTR // X menunjukkan memori luaran //
EX: MOV A, # 00H // 00H disimpan dalam daftar A //
MOV DPTR, # 0500H // Titik DPTR 0500h alamat dalam memori //
MOVC A, @ A + DPTR // hantar nilaikedaftar A //
MOV P0, A // tarikh A hantar ke pendaftar PO //

Set Arahan:

Set arahan adalah struktur pengawal atau pemproses yang memberikan arahan kepada pengawal untuk membimbing pengawal untuk memproses data. Set arahan terdiri daripada arahan, jenis data asli, mod pengalamatan, daftar gangguan, pengendalian luar biasa dan seni bina memori. The 8051mikrokontroler boleh mengikuti arahan CISC dengan seni bina Harvard. Sekiranya pengaturcaraan 8051 pelbagai jenis arahan CISC termasuk:

  • Set Arahan Pemindahan Data
  • Set Petunjuk Berurutan
  • Set Aritmetik Arahan
  • Bercabang Instruksiset
  • Set Arahan Gelung
  • Set Arahan Bersyarat
  • Set Arahan Tanpa Syarat
  • Set Arahan Logik
  • Set Arahan Boolean

Set Aritmetik Arahan:

Arahan aritmetik melakukan operasi asas seperti:

  • Penambahan
  • Pendaraban
  • Penolakan
  • Bahagian

Tambahan:

ORG 0000j
MOV R0, # 03H // pindahkan nilai 3 ke daftar R0 //
MOV A, # 05H // pindahkan nilai 5 ke penumpuk A //
Tambah A, 00H //tambahkannilai dengan nilai R0 dan menyimpan hasilnyadidalam//
TAMAT

Pendaraban:

ORG 0000j
MOV R0, # 03H // pindahkan nilai 3 ke daftar R0 //
MOV A, # 05H // pindahkan nilai 5 ke penumpuk A //
MUL A, 03H //Bergandahasil disimpan di Akumulator A //
TAMAT

Pengurangan:

ORG 0000j
MOV R0, # 03H // pindahkan nilai 3 untuk mendaftar R0 //
MOV A, # 05H // pindahkan nilai 5 ke penumpuk A //
SUBB A, 03H // Nilai hasil disimpan di Akumulator A //
TAMAT

Bahagian:

ORG 0000j
MOV R0, # 03H // pindahkan nilai 3 untuk mendaftar R0 //
MOV A, # 15H // pindahkan nilai 5 ke penumpuk A //
DIV A, 03H // nilai akhir disimpan di Akumulator A //
TAMAT

Arahan Bersyarat

CPU melaksanakan arahan berdasarkan keadaan dengan memeriksa status bit tunggal atau status bait. Tahun 8051mikrokontrolerterdiri daripada pelbagai arahan bersyarat seperti:

  • JB -> Lompat ke bawah
  • JNB -> Lompat jika tidak di bawah
  • JC -> Lompat jika Carry
  • JNC -> Lompat jikatidakBawa
  • JZ -> Lompat jika Sifar
  • JNZ -> Lompat jikatidakSifar
Arahan Bersyarat

Arahan Bersyarat

1. Sintaks:

JB P1.0, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
TAMAT

2. Sintaks:

JNB P1.0, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
TAMAT

3. Sintaks:

JC, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
TAMAT

4. Sintaks:

JNC, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
TAMAT
5. Sintaks:

JZ, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
TAMAT

6. Sintaks:

JNZ, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
TAMAT

Arahan Panggilan dan Lompat:

Arahan panggilan dan lompat digunakan untuk mengelakkan peniruan kod program. Apabila beberapa kod khusus digunakan lebih dari sekali di tempat yang berbeza dalam program, jika kita sebutkannama tertentukekod kemudiankita boleh menggunakan nama itu di mana sahaja dalam program tanpa memasukkan kod untuk setiap masa. Ini mengurangkan kerumitan program. Pengaturcaraan 8051 terdiri daripada arahan panggilan dan lompat seperti LCALL, SJMP.

  • LCALL
  • SATU PANGGILAN
  • SJMP
  • LJMP

1. Sintaks:

ORG 0000j
- - - - - - - -
- - - - - - - -
ACALL, label
- - - - - - - -
- - - - - - - -
HENTIKAN SJMP
Label: - - - - - - - -
- - - - - - - -
- - - - - - - -
betul
BERHENTI:NOP

2. Sintaks:

ORG 0000j
- - - - - - - -
- - - - - - - -
LCALL, label
- - - - - - - -
- - - - - - - -
HENTIKAN SJMP
Label: - - - - - - - -
- - - - - - - -
- - - - - - - -
betul
BERHENTI:NOP

Arahan Panggilan dan Lompat

Arahan Panggilan dan Lompat

Arahan gelung:

Arahan gelung digunakan untuk mengulang blok setiap kali semasa melakukan operasi kenaikan dan penurunan. Tahun 8051mikrokontrolerterdiri daripada dua jenis arahan gelung:

  • CJNE -> bandingkan dan lompat jika tidak sama
  • DJNZ -> penurunan dan lompat jika tidak sifar

1. Sintaks:

daripadaCJNE
MOV A, # 00H
MOV B, # 10H
Label: INC A
- - - - - -
- - - - - -
CJNE A, label

2. Sintaks:

daripadaDJNE

MOV R0, # 10H
Label: - - - - - -
- - - - - -
DJNE R0, label
- - - - - -
- - - - - -
TAMAT

Set Arahan Logik:

Set arahan mikrokontroler 8051 menyediakan arahan logik AND, OR, XOR, TEST, NOT dan Boolean untuk set dan membersihkan bit berdasarkan keperluan dalam program.

Set Arahan Logik

Set Arahan Logik

1. Sintaks:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ORL A, R0 // 00100000/00000101 = 00000000 //

2. Sintaks:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ANL A, R0

3. Sintaks:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
XRL A, R0

Pengendali Bergeser

Operator shift digunakan untuk menghantar dan menerima data dengan cekap. Tahun 8051mikrokontrolerterdiri daripada empat operator shift:

  • RR -> Putar Kanan
  • RRC -> Putar Kanan melalui bawa
  • RL -> Putar Kiri
  • RLC -> Putar Kiri melalui bawaan

Putar Kanan (RR):

Dalam operasi peralihan ini, MSB menjadi LSB dan semua bit beralih ke sisi kanan sedikit demi sedikit, secara bersiri.

Sintaks:

MOV A, # 25h
RR A

Putar Kiri (RL):

Dalam operasi peralihan ini, MSB menjadi LSB dan semua bit beralih ke sisi kiri sedikit demi sedikit, secara bersiri.

Sintaks:

MOV A, # 25h
RL A

RRC Putar ke kanan melalui Carry:

Dalam operasi pergeseran ini, LSB bergerak untuk dibawa dan bawaan menjadi MSB, dan semua bit beralih ke sisi kanan sedikit demi sedikit.

Sintaks:

MOV A, # 27h
RRC A

RLC Putar Kiri Melalui Carry:

Dalam operasi pergeseran ini, MSB bergerak untuk dibawa dan bawaan menjadi LSB dan semua bit beralih ke sisi kiri dalam kedudukan sedikit demi sedikit.

Sintaks:

MOV A, # 27h
RLC A

Program C Terbenam Asas:

Themikrokontrolerpengaturcaraan berbeza untuk setiap jenis sistem operasi. Disana ada banyak sistem operasi seperti Linux, Windows, RTOS dan sebagainya. Walau bagaimanapun, RTOS mempunyai beberapa kelebihan untuk pengembangan sistem tertanam. Beberapa contoh pengaturcaraan peringkat Perhimpunan diberikan di bawah.

LED berkelip menggunakan dengan 8051mikrokontroler:

  • Paparan Nombor pada paparan 7 segmen menggunakan mikrokontroler 8051
  • Pengiraan pemasa / Kaunter dan program menggunakan 8051mikrokontroler
  • Pengiraan dan program Komunikasi Bersiri menggunakan 8051mikrokontroler

Program LED dengan 8051 Microcontrller

1. WAP untuk menukar LED PORT1

ORG 0000H
ALAT: MOV P1, # 01 //bergerak00000001 ke daftar p1 //
CALL DELAY // laksanakan kelewatan //
MOV A, P1 // bergeraknilai p1kepada penumpuk //
CPL A // pelengkap Nilai A //
MOV P1, A // pindahkan 11111110 ke daftar port1 //
CALL DELAY // laksanakan kelewatan //
SULIT SJMP
DELAY: MOV R5, # 10H // memuatkan daftar R5 dengan 10 //
DUA: MOV R6, # 200 // daftar beban R6 dengan 200 //
SATU: MOV R7, # 200 // daftar beban R7 dengan 200 //
DJNZ R7, $ // penurunan R7 sehingga ia sifar //
DJNZ R6, SATU // penurunan R7 sehingga ia sifar //
DJNZ R5, DUA // penurunan R7 sehingga ia sifar //
RET // kembali ke program utama //
TAMAT

Pengiraan Pemasa / Pembilang dan Program menggunakan 8051 Mpengawal mikro:

Kelewatan adalah salah satu faktor penting dalam pembangunan perisian aplikasi. The pemasa dan pembilang adalah komponen perkakasan darimikrokontroler, yang digunakan dalam banyak aplikasi untuk memberikan penundaan waktu yang tepat dengan denyutan kiraan. Btugasnya dilaksanakan dengan teknik perisian.

1. WAP untuk mengira kelewatan masa 500us.

MOV TMOD, # 10H // pilih mod pemasa mengikut daftar //
MOV TH1, # 0FEH // simpan masa kelewatan dalam bit yang lebih tinggi //
MOV TL1, # 32H // simpan masa kelewatan dalam bit rendah //
JNB TF1, $ // mengurangkan nilai pemasa sehingga ia sifar //
CLR TF1 // kosongkan bendera pemasasedikit//
CLR TR1 // MATI pemasa //

2. WAP untuk menukar LEDdengan5sekkelewatan masa

ORG 0000H
KEMBALI: MOV PO, # 00H
PENERBANGAN ACALL
MOV P0, # 0FFH
PENERBANGAN ACALL
KEMBALI SJUMP
DELAY: MOV R5, # 50H // daftar beban R5 dengan 50 //
DELAY1: MOV R6, # 200 // memuatkan daftar R6 dengan 200 //
DELAY2: MOV R7, # 229 // muatkan daftar R7 dengan 200 //
DJNZ R7, $ // penurunan R7 sehingga ia sifar //
DJNZ R6, DELAY2 // penurunan R6 sehingga ia sifar //
DJNZ R5, DELAY1 // penurunan R5 sehingga ia sifar //
RET // kembali ke program utama //
TAMAT

3. WAP untuk mengira 250 denyutan menggunakan mode0 kiraan0

Sintaks:

ORG 0000H
MOV TMOD, # 50H // pilih kaunter //
MOV TH0, # 15 // gerakkan denyutan kiraan bit lebih tinggi //
MOV TH1, # 9FH //bergerakdenyutan pengiraan, bit lebih rendah //
SET TR0 // PADA pemasa //
JNB $ // penurunan nilai kiraan hingga sifar //
CLR TF0 // kosongkan kaunter, benderakansedikit//
CLR TR0 // hentikan pemasa //
TAMAT

Pengaturcaraan Komunikasi Bersiri Menggunakan 8051 Mpengawal mikro:

Komunikasi bersiri biasanya digunakan untuk penghantaran dan penerimaan data. Tahun 8051mikrokontrolerterdiri daripada komunikasi bersiri UART / USART dan isyarat dihantar dan diterima olehTxdan pin Rx. Komunikasi UART memindahkan data sedikit demi sedikit secara bersiri. UART adalah protokol half-duplex yang memindahkan dan menerima data, tetapi tidak pada masa yang sama.

1. WAP untuk menghantar watak ke Hyper Terminal

MOV SCON, # 50H // tetapkan komunikasi bersiri //
MOV TMOD, # 20H // pilih mod pemasa //
MOV TH1, # -3 // tetapkan kadar baud //
SET TR1 // PADA pemasa //
MOV SBUF, # 'S' // hantarkan S ke tetingkap bersiri //
JNB TI, $ // nilai penurunan pemasa sehingga ia sifar //
CLR RI // jeda penerimaan jelas //
CLR TR1 // pemasa yang jelas //

2. WAP untuk menghantar watak Terima oleh Hyper Terminal

MOV SCON, # 50H // tetapkan komunikasi bersiri //
MOV TMOD, # 20H // pilih mod pemasa //
MOV TH1, # -6 // tetapkan kadar baud //
SET TR1 // pada pemasa //
MOV SBUF, # 'S' // hantarkan S ke tetingkap bersiri //
JNB RI, $ // penurunan nilai pemasa sehingga ia sifar //
CLR RI // jeda penerimaan jelas //
MOV P0, SBUF // hantar nilai daftar SBUF ke port0 //
CLR TR1 // pemasa yang jelas //

Ini semua berkaitan dengan Pengaturcaraan 8051 dalam bahasa Perhimpunan secara ringkas dengan program berdasarkan contoh. Kami berharap maklumat yang mencukupi mengenai bahasa perhimpunan ini pasti dapat membantu pembaca dan kami mengharapkan komen berharga mereka di bahagian komen di bawah.