Pengantar Pemrograman 8051 dalam Bahasa Assembly

Coba Instrumen Kami Untuk Menghilangkan Masalah





Bahasa assembly adalah bahasa pemrograman tingkat rendah yang digunakan untuk menulis kode program dalam istilah mnemonik. Meskipun ada banyak bahasa tingkat tinggi yang saat ini diminati, bahasa pemrograman assembly populer digunakan di banyak aplikasi, dan dapat digunakan untuk manipulasi perangkat keras langsung. Ini juga digunakan untuk menulis 8.051 kode pemrograman efisien dengan jumlah siklus jam yang lebih sedikit dengan mengonsumsi lebih sedikit memori dibandingkan dengan bahasa tingkat tinggi lainnya.

Pemrograman 8051 dalam Bahasa Assembly

Pemrograman 8051



Pemrograman 8051 dalam Bahasa Assembly

Bahasa assembly adalah bahasa pemrograman yang sepenuhnya berhubungan dengan perangkat keras. Perancang tertanam harus memiliki pengetahuan yang cukup tentang perangkat keras prosesor atau pengontrol tertentu sebelum menulis program. Bahasa assembly dikembangkan oleh mnemonics oleh karena itu, pengguna tidak dapat memahaminya dengan mudah untuk memodifikasi program.


Pemrograman 8051 dalam Bahasa Assembly

Pemrograman 8051 dalam Bahasa Assembly



Bahasa pemrograman assembly dikembangkan oleh berbagai kompiler dan yang 'arena bowling' paling cocok untuk mikrokontrolerpemrograman pengembangan. Mmikrokontroleratau prosesor hanya dapat memahami bahasa biner dalam bentuk '0 atau 1'. assembler mengubah bahasa assembly menjadi bahasa biner, dan kemudian menyimpannya dimikrokontrolermemori untuk melakukan tugas tertentu.

Arsitektur Mikrokontroler 8051

8051mikrokontroleradalah Arsitektur Harvard berbasis CISC , dan memiliki periferal seperti 32 I / O, pengatur waktu / penghitung, komunikasi serial, dan memori. Itumikrokontrolermembutuhkan program untuk melakukan operasi yang membutuhkan memori untuk menyimpan dan membaca fungsi. 8051mikrokontrolerterdiri dari memori RAM dan ROM untuk menyimpan instruksi.

Arctitecuture Mikrokontroler 8051

Arsitektur Mikrokontroler 8051

Register adalah bagian utama dalam prosesor danmikrokontroler yang terkandung dalam memori yang menyediakan cara yang lebih cepat untuk mengumpulkan dan menyimpan data. Pemrograman bahasa assembly 8051 didasarkan pada register memori. Jika kita ingin memanipulasi data ke prosesor atau pengontrol dengan melakukan pengurangan, penjumlahan, dll., Kita tidak dapat melakukannya secara langsung di memori, tetapi membutuhkan register untuk memproses dan menyimpan data.Mikrokontrolerberisi beberapa jenis register yang dapat diklasifikasikan menurut instruksi atau konten yang beroperasi di dalamnya.

Program Mikrokontroler 8051 dalam Bahasa Perakitan

Bahasa assembly terdiri dari elemen-elemen yang semuanya digunakan untuk menulis programsecara berurutan. Ikuti aturan yang diberikan untuk menulis pemrograman dalam bahasa assembly.


Aturan Bahasa Majelis

  • Kode perakitan harus ditulis dalam huruf besar
  • Label harus diikuti oleh titik dua (label :)
  • Semua simbol dan label harus dimulai dengan sebuah huruf
  • Semua komentar diketik dalam huruf kecil
  • Baris terakhir dari program harus berupa perintah END

Mnemonik bahasa assembly berbentuk op-code, seperti MOV, ADD, JMP, dan sebagainya, yang digunakan untuk melakukan operasi.

Kode op: Op-code adalah instruksi tunggal yang dapat dijalankan oleh CPU. Di sini op-code adalah instruksi MOV.

Operand: Operand adalah satu bagian data yang dapat dioperasikan oleh op-code. Contoh, operasi perkalian dilakukan dengan operan yang dikalikan dengan operan.

Sintaks: MUL a,b

Elemen Pemrograman Bahasa Majelis:

  • Merakit Pedoman
  • Set Instruksi
  • Mengatasi Mode

Merakit Instruksi:

Arahan perakitan memberikan arahan ke CPU. 8051mikrokontrolerterdiri dari berbagai macam arahan perakitan untuk memberikan arahan ke unit kendali. Arahan yang paling berguna adalah pemrograman 8051, seperti:

  • ORG
  • DB
  • EQU
  • AKHIR

ORG(asal): Arahan ini menunjukkan awal program. Ini digunakan untuk mengatur alamat register selama perakitan. Misalnya ORG 0000h memberi tahu kompiler semua kode berikutnya yang dimulai dari alamat 0000h.

Sintaksis: ORG 0000h

DB(definisikan byte): Byte yang ditentukan digunakan untuk mengizinkan string byte. Misalnya, cetak 'EDGEFX' di mana setiap karakter diambil oleh alamat dan akhirnya mencetak 'string' oleh DB secara langsung dengan tanda kutip ganda.

Sintaksis:

ORG 0000h

MOV a, # 00j
————-
————-
DB “EDGEFX”

EQU (setara): Direktif ekivalen digunakan untuk menyamakan alamat variabel.

Sintaksis:

reg equ,09h
—————–
—————–
MOVreg,# 2j

AKHIR: Direktif END digunakan untuk menunjukkan akhir dari program.

Sintaksis:

reg equ,09h

—————–
—————–
MOVreg,# 2j
AKHIR

Mengatasi Mode:

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

  • Mode Pengalamatan Segera
  • Daftarkan Mode Pengalamatan
  • Mode Pengalamatan Langsung
  • Mode Pengalamatan Tidak Langsung
  • Mode Pengalamatan Indeks Dasar

Mode Pengalamatan Segera:

Dalam mode pengalamatan ini, sumber harus berupa nilai yang dapat diikuti dengan '#' dan tujuan harus Register SFR, register tujuan umum dan alamat. Ini digunakan untuk segera menyimpan nilai dalam register memori.

Sintaksis:

MOV A, # 20j // A adalahsebuahregister akumulator, 20 disimpan di A //
MOV R0,# 15 // R0 adalah register tujuan umum 15 disimpan di register R0 //
MOV P0, # 07h // P0 adalah SFR register07 disimpan di P0 //
MOV 20j,# 05h // 20h adalah alamat register 05 yang disimpan di 20h //

Bekas:

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

Daftarkan Mode Pengalamatan:

Dalam mode pengalamatan ini, sumber dan tujuan harus berupa register, tetapi bukan register tujuan umum. Jadi data tidak dipindahkan dalam file register bank tujuan umum .

Sintaksis:

MOV A, B // A adalah register SFR, B adalah register tujuan umum //
MOV R0, R1 // Instruksi tidak valid, GPR ke GPR tidak memungkinkan //

BEKAS:

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

Mode Pengalamatan Langsung

Dalam mode pengalamatan ini, sumber atau tujuan (atau keduanya sumber dan tujuan) harus berupa alamat, tetapi bukan nilainya.

Sintaksis:

MOV A,20h // 20h adalah alamat A adalah register //
MOV 00h, 07h // keduanya dialamatkan dari register GPS //

Bekas:

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

Mode Pengalamatan Tidak Langsung:

Dalam mode pengalamatan ini, sumber atau tujuan (atau tujuan atau sumber) haruslahuntukalamat tidak langsung, tetapi bukan nilai. Mode pengalamatan ini mendukung konsep penunjuk. Pointer adalah variabel yang digunakan untuk menyimpan alamat variabel lain. Konsep pointer ini hanya digunakan untuk register R0 dan R1.

Sintaksis:

MOVR0, # 01h // 01 nilai disimpan di register R0, alamat R0 adalah 08h //
MOV R1, # 08h // R1 adalah variabel penunjuk itutokoalamat (08h) dari R0 //
MOV 20j,@ R1 // 01 nilai disimpan di alamat 20h register GP //

Mode Pengalamatan Tidak Langsung

Mode Pengalamatan Tidak Langsung

Mode Pengalamatan Indeks Dasar:

Mode pengalamatan ini digunakan untuk membaca data dari memori eksternal atau memori ROM . Semua mode pengalamatan tidak dapat membaca data dari memori kode. Kode harus dibaca melalui register DPTR. DPTR digunakan untuk mengarahkan data dalam kode atau memori eksternal.

Sintaksis:

MOVC A, @ A + DPTR // C menunjukkan memori kode //
MOCX A, @ A + DPTR // X menunjukkan memori eksternal //
EX: MOV A, # 00H // 00H disimpan di register A //
MOV DPTR, # 0500H // DPTR menunjukkan alamat 0500h di memori //
MOVC A, @ A + DPTR // kirim nilainyauntukregister A //
MOV P0, A // tanggal A dikirim ke PO registrar //

Set Instruksi:

Set instruksi adalah struktur pengontrol atau prosesor yang memberikan perintah kepada pengontrol untuk memandu pengontrol untuk memproses data. Set instruksi terdiri dari instruksi, tipe data asli, mode pengalamatan, register interupsi, penanganan yang luar biasa dan arsitektur memori. Itu 8051mikrokontroler dapat mengikuti instruksi CISC dengan arsitektur Harvard. Dalam kasus 8051 pemrograman berbagai jenis instruksi CISC meliputi:

  • Set Instruksi Transfer Data
  • Set Instruksi Berurutan
  • Set Instruksi Aritmatika
  • Percabangan Iinstruksiset
  • Loop Instruksi Set
  • Set Instruksi Bersyarat
  • Set Instruksi tanpa syarat
  • Set Instruksi Logis
  • Set Instruksi Boolean

Set Instruksi Aritmatika:

Instruksi aritmatika melakukan operasi dasar seperti:

  • Tambahan
  • Perkalian
  • Pengurangan
  • Divisi

Tambahan:

ORG 0000h
MOV R0, # 03H // pindahkan nilai 3 ke register R0 //
MOV A, # 05H // pindahkan nilai 5 ke akumulator A //
Tambahkan A, 00H //tambah sebuahnilai dengan nilai R0 dan menyimpan hasilnyadi sebuah//
AKHIR

Perkalian:

ORG 0000h
MOV R0, # 03H // pindahkan nilai 3 ke register R0 //
MOV A, # 05H // pindahkan nilai 5 ke akumulator A //
MUL A, 03H //Dikalikanhasilnya disimpan di Accumulator A //
AKHIR

Pengurangan:

ORG 0000h
MOV R0, # 03H // pindahkan nilai 3 untuk mendaftar R0 //
MOV A, # 05H // pindahkan nilai 5 ke akumulator A //
SUBB A, 03H // Nilai hasil disimpan di Accumulator A //
AKHIR

Divisi:

ORG 0000h
MOV R0, # 03H // pindahkan nilai 3 untuk mendaftar R0 //
MOV A, # 15H // pindahkan nilai 5 ke akumulator A //
DIV A, 03H // nilai akhir disimpan di Akumulator A //
AKHIR

Instruksi Bersyarat

CPU menjalankan instruksi berdasarkan kondisi dengan memeriksa status bit tunggal atau status byte. 8051mikrokontrolerterdiri dari berbagai instruksi bersyarat seperti:

  • JB -> Lompat ke bawah
  • JNB -> Lompat jika tidak di bawah
  • JC -> Lompat jika Carry
  • JNC -> Lompat jikatidakMembawa
  • JZ -> Lompat jika Nol
  • JNZ -> Lompat jikatidakNol
Instruksi Bersyarat

Instruksi Bersyarat

1. Sintaks:

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

2. Sintaks:

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

3. Sintaks:

JC, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
AKHIR

4. Sintaks:

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

JZ, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
AKHIR

6. Sintaks:

JNZ, label
- - - - - - - -
- - - - - - - -
Label: - - - - - - - -
- - - - - - - -
AKHIR

Instruksi Panggilan dan Lompat:

Instruksi panggilan dan lompat digunakan untuk menghindari replikasi kode program. Ketika beberapa kode tertentu digunakan lebih dari sekali di tempat yang berbeda dalam program tersebut, jika kami menyebutkannama tertentuuntukkode kemudiankita bisa menggunakan nama itu di manapun dalam program tanpa memasukkan kode untuk setiap waktu. Ini mengurangi kompleksitas program. Pemrograman 8051 terdiri dari instruksi panggilan dan lompat seperti LCALL, SJMP.

  • LCALL
  • SEBUAH PANGGILAN
  • SJMP
  • LJMP

1. Sintaks:

ORG 0000h
- - - - - - - -
- - - - - - - -
ACALL, label
- - - - - - - -
- - - - - - - -
SJMP BERHENTI
Label: - - - - - - - -
- - - - - - - -
- - - - - - - -
Baik
BERHENTI:NOP

2. Sintaks:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, label
- - - - - - - -
- - - - - - - -
SJMP BERHENTI
Label: - - - - - - - -
- - - - - - - -
- - - - - - - -
Baik
BERHENTI:NOP

Instruksi Panggilan dan Lompat

Instruksi Panggilan dan Lompat

Loop Instruksi:

Instruksi loop digunakan untuk mengulang blok setiap kali saat melakukan operasi increment dan decrement. 8051mikrokontrolerterdiri dari dua jenis instruksi loop:

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

1. Sintaks:

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

2. Sintaks:

dariDJNE

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

Set Instruksi Logis:

Set instruksi mikrokontroler 8051 menyediakan instruksi logika AND, OR, XOR, TEST, NOT dan Boolean untuk mengatur dan membersihkan bit berdasarkan kebutuhan dalam program.

Set Instruksi Logis

Set Instruksi Logis

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

Operator Pemindahan Gigi

Operator shift digunakan untuk mengirim dan menerima data secara efisien. 8051mikrokontrolerterdiri dari empat operator shift:

  • RR -> Putar Kanan
  • RRC -> Putar Kanan melalui carry
  • RL -> Putar Kiri
  • RLC -> Putar Kiri melalui carry

Putar Kanan (RR):

Dalam operasi pergeseran ini, MSB menjadi LSB dan semua bit bergeser ke arah kanan bit demi bit, secara serial.

Sintaksis:

MOV A, # 25j
RR A

Putar Kiri (RL):

Dalam operasi pemindahan ini, MSB menjadi LSB dan semua bit bergeser ke sisi Kiri bit demi bit, secara serial.

Sintaksis:

MOV A, # 25j
RL A

RRC Putar Kanan melalui Carry:

Dalam operasi perpindahan ini, LSB bergerak untuk membawa dan membawa menjadi MSB, dan semua bit bergeser ke arah kanan posisi bit demi bit.

Sintaksis:

MOV A, # 27j
RRC A

RLC Putar Kiri melalui Carry:

Dalam operasi pemindahan ini, MSB bergerak untuk membawa dan membawa menjadi LSB dan semua bit bergeser ke arah kiri dalam posisi bit-demi-bit.

Sintaksis:

MOV A, # 27j
RLC A

Program C Tertanam Dasar:

Itumikrokontrolerpemrograman berbeda untuk setiap jenis sistem operasi. Ada banyak sistem operasi seperti Linux, Windows, RTOS dan sebagainya. Namun, RTOS memiliki beberapa keunggulan untuk pengembangan sistem tertanam. Beberapa contoh pemrograman tingkat Majelis diberikan di bawah ini.

LED berkedip menggunakan dengan 8051mikrokontroler:

  • Number Menampilkan pada tampilan 7 segmen menggunakan mikrokontroler 8051
  • Perhitungan Timer / Counter dan program menggunakan 8051mikrokontroler
  • Perhitungan dan program Komunikasi Serial menggunakan 8051mikrokontroler

Program LED dengan 8051 Mmicrocontrller

1. WAP untuk mengaktifkan LED PORT1

ORG 0000H
TOGLE: MOV P1, # 01 //pindah00000001 ke register p1 //
CALL DELAY // jalankan penundaan //
MOV A, P1 // bergeraknilai p1ke akumulator //
CPL A // melengkapi nilai A //
MOV P1, A // pindahkan 11111110 ke register port1 //
CALL DELAY // jalankan penundaan //
SJMP TOGLE
TUNDA: MOV R5, # 10H // muat register R5 dengan 10 //
DUA: MOV R6, # 200 // muat register R6 dengan 200 //
ONE: MOV R7, # 200 // muat register R7 dengan 200 //
DJNZ R7, $ // decrement R7 sampai nol //
DJNZ R6, ONE // menurun R7 hingga nol //
DJNZ R5, DUA // turunkan R7 hingga nol //
RET // kembali ke program utama //
AKHIR

Perhitungan Timer / Counter dan Program menggunakan 8.051 Mmikrokontroler:

Keterlambatan merupakan salah satu faktor penting dalam pengembangan perangkat lunak aplikasi. Itu pengatur waktu dan penghitung adalah komponen perangkat keras darimikrokontroler, yang digunakan dalam banyak aplikasi untuk memberikan waktu tunda yang akurat dengan menghitung pulsa. Bkedua tugas tersebut diimplementasikan oleh teknik perangkat lunak.

1. WAP untuk menghitung waktu tunda 500us.

MOV TMOD, # 10H // pilih mode timer dengan register //
MOV TH1, # 0FEH // simpan waktu tunda di bit yang lebih tinggi //
MOV TL1, # 32H // simpan waktu tunda dalam bit rendah //
JNB TF1, $ // kurangi nilai timer hingga nol //
CLR TF1 // hapus bendera pengatur waktusedikit//
CLR TR1 // MATIKAN timer //

2. WAP untuk mengaktifkan LEDdengan5detikpenundaan waktu

ORG 0000H
KEMBALI: MOV PO, # 00H
ACALL DELAY
MOV P0, # 0FFH
ACALL DELAY
PENGEMBALIAN SJUMP
TUNDA: MOV R5, # 50H // muat register R5 dengan 50 //
DELAY1: MOV R6, # 200 // muat register R6 dengan 200 //
DELAY2: MOV R7, # 229 // muat register R7 dengan 200 //
DJNZ R7, $ // decrement R7 sampai nol //
DJNZ R6, DELAY2 // turunkan R6 sampai nol //
DJNZ R5, DELAY1 // turunkan R5 hingga nol //
RET // kembali ke program utama //
AKHIR

3. WAP untuk menghitung 250 pulsa menggunakan mode0 count0

Sintaksis:

ORG 0000H
MOV TMOD, # 50H // pilih penghitung //
MOV TH0, # 15 // pindahkan pulsa hitung lebih tinggi ke bit //
MOV TH1, # 9FH //pindahpulsa penghitungan, bit bawah //
SET TR0 // ON timer //
JNB $ // turunkan nilai hitungan hingga nol //
CLR TF0 // bersihkan penghitung, benderasedikit//
CLR TR0 // hentikan timer //
AKHIR

Pemrograman Komunikasi Serial Menggunakan 8051 Mmikrokontroler:

Komunikasi serial biasanya digunakan untuk mengirim dan menerima data. 8051mikrokontrolerterdiri dari komunikasi serial UART / USART dan sinyal dikirim dan diterima olehTxdan pin Rx. Komunikasi UART mentransfer data bit demi bit secara serial. UART adalah protokol setengah dupleks yang mentransfer dan menerima data, tetapi tidak pada waktu yang sama.

1. WAP untuk mengirimkan karakter ke Hyper Terminal

MOV SCON, # 50H // mengatur komunikasi serial //
MOV TMOD, # 20H // pilih mode timer //
MOV TH1, # -3 // setel baud rate //
SET TR1 // ON timer //
MOV SBUF, # ’S’ // mengirimkan S ke jendela serial //
JNB TI, $ // penurunan nilai timer sampai nol //
CLR RI // jelas menerima interupsi //
CLR TR1 // hapus timer //

2. WAP untuk mengirimkan karakter Terima melalui Hyper Terminal

MOV SCON, # 50H // mengatur komunikasi serial //
MOV TMOD, # 20H // pilih mode timer //
MOV TH1, # -6 // atur baud rate //
SET TR1 // pada timer //
MOV SBUF, # ’S’ // mengirimkan S ke jendela serial //
JNB RI, penurunan $ // nilai timer hingga nol //
CLR RI // jelas menerima interupsi //
MOV P0, SBUF // kirim nilai register SBUF ke port0 //
CLR TR1 // hapus timer //

Ini semua tentang Pemrograman 8051 dalam bahasa Assembly secara singkat dengan program berbasis contoh. Kami berharap informasi yang memadai tentang bahasa assembly ini tentunya dapat membantu para pembaca dan kami menantikan komentar berharga mereka di bagian komentar di bawah.