Tutorial Pemrograman C Tersemat dengan Bahasa Keil

Coba Instrumen Kami Untuk Menghilangkan Masalah





Embedded C adalah bahasa pemrograman paling populer di bidang perangkat lunak untuk mengembangkan gadget elektronik. Setiap prosesor dikaitkan dengan perangkat lunak tertanam. Pemrograman C Tersemat memainkan peran utama dalam menjalankan fungsi tertentu oleh prosesor. Dalam kehidupan kita sehari-hari, kita sering menggunakan banyak perangkat elektronik seperti mesin cuci, handphone, kamera digital dan sebagainya akan bekerja berdasarkan mikrokontroler yang diprogram oleh C.

Pemrograman Sistem Tertanam

Pemrograman Sistem Tertanam



Kode C yang ditulis lebih andal, portabel, dan dapat diskalakan, bahkan lebih mudah dipahami. Alat pertama dan terpenting adalah perangkat lunak tertanam yang memutuskan pengoperasian sistem tertanam. Bahasa pemrograman C tertanam paling sering digunakan untuk pemrograman mikrokontroler.


Tutorial Pemrograman C Tersemat (8051)

Untuk menulis program, desainer tertanam harus memiliki pengetahuan yang cukup tentang perangkat keras prosesor atau pengontrol tertentu karena pemrograman C tertanam adalah teknik pemrograman terkait perangkat keras penuh.



Tutorial Pemrograman

Tutorial Pemrograman

Sebelumnya, banyak aplikasi tertanam dikembangkan dengan menggunakan pemrograman tingkat perakitan. Namun, mereka tidak menyediakan portabilitas untuk mengatasi masalah ini dengan munculnya berbagai bahasa tingkat tinggi seperti C, COBOL, dan Pascal. Namun, itu adalah bahasa C yang diterima secara luas pengembangan aplikasi sistem tertanam , dan itu terus berlanjut.

Sistem Tertanam

Sistem tertanam didefinisikan sebagai kombinasi dari perangkat lunak pemrograman C tertanam dan bagian perangkat keras yang sebagian besar terdiri dari mikrokontroler dan dimaksudkan untuk melakukan tugas tertentu. Jenis sistem tertanam ini digunakan dalam kehidupan kita sehari-hari seperti mesin cuci dan perekam video, lemari es, dan sebagainya. Sistem tertanam pertama kali diperkenalkan oleh mikrokontroler 8.051.

Sistem Tertanam

Sistem Tertanam

Pengantar Mikrokontroler 8051

Mikrokontroler 8051 adalah mikrokontroler dasar, yang pertama kali diperkenalkan oleh 'Intel Corporation' sejak 1970. Ini dikembangkan oleh arsitektur prosesor 8086. 8051 adalah keluarga mikrokontroler, yang telah dikembangkan oleh berbagai pabrikan seperti Philips, Atmel, dalls, dan sebagainya. Mikrokontroler 8.051 telah digunakan di banyak produk tersemat dari mainan anak kecil hingga sistem otomotif besar.


8051 Mikrokontroler

8051 Mikrokontroler

Mikrokontroler 8051 adalah 8-bit Arsitektur 'CISC' . Ini terdiri dari memori, komunikasi serial, interupsi, port input / output dan timer / penghitung, dibangun ke dalam satu chip terintegrasi, yang diprogram untuk mengontrol perangkat periferal yang dihubungkan dengannya. Program disimpan di RAM mikrokontroler tetapi sebelum menulis program, kita harus mengetahui RAM organisasi dari mikrokontroler.

Pemrograman Sistem Tertanam: Deklarasi Dasar

Setiap fungsi adalah kumpulan pernyataan yang menjalankan tugas tertentu dan kumpulan satu atau lebih fungsi disebut bahasa pemrograman. Setiap bahasa terdiri dari beberapa elemen dasar dan aturan tata bahasa. Pemrograman bahasa C dirancang untuk berfungsi dengan himpunan karakter, variabel, tipe data, konstanta, kata kunci, ekspresi, dan sebagainya yang digunakan untuk menulis program C. Semua ini dianggap di bawah file header atau file perpustakaan dan direpresentasikan sebagai

#include

Pengembangan Pemrograman C Tertanam

Pengembangan Pemrograman C Tertanam

Perpanjangan bahasa C ini disebut bahasa pemrograman Embedded C. Dibandingkan dengan di atas, pemrograman tertanam dalam bahasa C memiliki beberapa fitur tambahan seperti tipe data dan kata kunci dan file header atau file perpustakaan direpresentasikan sebagai

#include

Kata Kunci Tambahan C Tersemat

  • sbit
  • sedikit
  • SFR
  • lincah
  • makro mendefinisikan

The 'sbit' digunakan untuk mendeklarasikan PIN tunggal mikrokontroler. Misalnya LED dihubungkan ke pin P0.1, tidak disarankan untuk mengirimkan nilai ke pin port secara langsung, pertama kita harus mendeklarasikan pin dengan variabel lain kemudian setelah kita dapat menggunakan di manapun dalam program.

Sintaks: sbit a = P0 ^ 1 // mendeklarasikan pin masing-masing dengan variabel //
a = 0x01 // kirim nilai ke port pin //

'Bit' digunakan untuk memeriksa status variabel.

Sintaks: bit c // mendeklarasikan variabel bit //
c = a // nilai diberikan ke variabel c //
if (c == 1) // periksa kondisi benar atau salah //

{
… ..
……
}

Kata kunci 'SFR' digunakan untuk mengakses register SFR dengan nama lain. Register SFR didefinisikan sebagai a register fungsi khusus , ini berisi semua register yang terkait secara periferal dengan menunjukkan alamatnya. Register SFR dideklarasikan dengan kata kunci SFR. Kata kunci SFR harus menggunakan huruf kapital.

Sintaks: SFR port = 0x00 // 0x00 adalah alamat port0 yang dideklarasikan oleh variabel port //
Port = 0x01 // lalu kirim nilainya ke port0 //
menunda()
port = 0x00
menunda()

Kata kunci 'volatile' adalah yang paling penting dalam pengembangan sistem tertanam. Variabel yang dideklarasikan dengan nilai kata kunci volatil tidak dapat diubah secara tidak terduga. Ini dapat digunakan dalam register periferal yang dipetakan memori, variabel global yang dimodifikasi oleh ISR. Tanpa menggunakan kata kunci yang mudah menguap untuk mengirim dan menerima data, kesalahan kode atau kesalahan pengoptimalan akan terjadi.

Sintaks: volatile int k

Makro adalah nama yang digunakan untuk mendeklarasikan blok pernyataan sebagai arahan pra-prosesor. Setiap kali nama digunakan, itu diganti dengan konten makro. Makro mewakili #define. Seluruh pin port ditentukan oleh makro.

Sintaks: #define dat Po // seluruh port dideklarasikan oleh variabel //
dat = 0x01 // data dikirim ke port0 //

Program C Tertanam Dasar

Pemrograman mikrokontroler akan berbeda untuk masing-masing jenis sistem operasi . Padahal sudah banyak sistem operasi yang ada seperti Linux, Windows, RTOS dan lain sebagainya. Namun, RTOS memiliki beberapa keunggulan untuk pengembangan sistem tertanam. Artikel ini membahas pemrograman C embedded dasar untuk mengembangkan pemrograman C tertanam menggunakan mikrokontroler 8051.

Langkah Pemrograman C Tersemat

Langkah Pemrograman C Tersemat

  • LED berkedip menggunakan mikrokontroler 8.051
  • Menampilkan Nomor pada tampilan 7 segmen menggunakan mikrokontroler 8051
  • Perhitungan Timer / Counter dan programnya menggunakan mikrokontroler 8.051
  • Perhitungan dan program Komunikasi Serial menggunakan mikrokontroler 8051
  • Program Interupsi menggunakan mikrokontroler 8.051
  • Pemrograman Keypad menggunakan mikrokontroler 8.051
  • Pemrograman LCD dengan mikrokontroler 8.051

LED Blinking menggunakan Mikrokontroler 8051

LED adalah perangkat semikonduktor yang digunakan dalam banyak aplikasi, sebagian besar untuk tujuan indikasi. Ia menemukan sejumlah besar aplikasi sebagai indikator selama pengujian untuk memeriksa validitas hasil pada berbagai tahap. Mereka sangat murah dan mudah tersedia dalam berbagai bentuk, warna, dan ukuran. LED digunakan untuk mendesain papan display pesan dan lampu sinyal pengatur lalu lintas dll. Di sini, LED dihubungkan dengan PORT0 dari mikrokontroler 8.051.

LED Blinking menggunakan Mikrokontroler 8051

LED Blinking menggunakan Mikrokontroler 8051

1. 01010101
10101010

#include // file header //
void main () // poin stat eksekusi program //
{
unsigned int i // tipe data //
while (1) // untuk loop kontinu //
{
P0 = 0x55 // kirim nilai hexa ke port0 //
untuk (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // kirim nilai hexa ke port0 //
untuk (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10.000.000

#include

void main ()

{

unsignedint i

unsigned char j, b

sementara (1)

{

P0 = 0x01

b = P0

untuk (j-0j<3000j++)

untuk (j = 0j<8j++)

{

b = b<<1

P0 = b

untuk (j-0j<3000j++)

}

}

}

3. 00001111

11110000

#include

void main ()

{

unsignedint i

sementara (1)

{

P0 = 0x0F

untuk (j-0j<3000j++)

P0 = 0xF0

untuk (j-0j<3000j++)

}

}

4. 00000001

00000011

00000111

.

.

11111111

#include

void main ()

{

unsignedint i

unsigned char j, b

sementara (1)

{

P0 = 0x01

b = P0

untuk (j-0j<3000j++)

untuk (j = 0j<8j++)

0x01

P0 = b

untuk (j-0j<3000j++)

}

}

Menampilkan Angka pada Tampilan 7 Segmen menggunakan Mikrokontroler 8051

Itu Layar 7-segmen adalah tampilan elektronik dasar, yang digunakan di banyak sistem untuk menampilkan informasi numerik. Terdiri dari delapan LED yang dihubungkan secara berurutan untuk menampilkan angka dari 0 hingga 9, ketika kombinasi LED yang tepat dinyalakan. Mereka hanya dapat menampilkan satu digit dalam satu waktu.

Menampilkan Angka pada Tampilan 7 Segmen menggunakan Mikrokontroler 8051

Menampilkan Angka pada Tampilan 7 Segmen menggunakan Mikrokontroler 8051

1. WAP untuk menampilkan bentuk angka '0 sampai F' pada empat tampilan 7segment?

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
unsigned you, j
a = b = c = d = 1
sementara (1)
{
untuk (i = 0i<10i++)
{
P2 = n [i]
untuk (j = 0j<60000j++)
}
}
}

2. WAP untuk menampilkan nomor dari '00 hingga 10 'pada tampilan 7segment?

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
void display1 ()
void display2 ()
batal penundaan ()
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
unsigned you, j
ds1 = ds2 = 0
sementara (1)
{
untuk (i = 0, i<20i++)
tampilan1 ()
tampilan2 ()
}
}
void display1 ()
{
a = 1
b = 0
P2 = d [ds1]
menunda()
a = 1
b = 0
P2 = d [ds1]
menunda()
}
void display2 ()
{
ds1 ++
jika (ds1> = 10)
{
ds1 = 0
ds2 ++
jika (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
batal penundaan ()
{
unsignedint k
untuk (k = 0k<30000k++)
}

Perhitungan Timer / Counter dan Program menggunakan Mikrokontroler 8051

Keterlambatan merupakan salah satu faktor penting dalam pengembangan perangkat lunak aplikasi. Namun demikian, penundaan normal tidak akan memberikan hasil yang berarti untuk mengatasi masalah tersebut dalam penerapan penundaan waktu. Itu pengatur waktu dan penghitung adalah komponen perangkat keras mikrokontroler, yang digunakan dalam banyak aplikasi untuk menyediakan waktu tunda yang berharga dengan menghitung pulsa. Kedua tugas tersebut diimplementasikan oleh teknik perangkat lunak.

Penundaan Timer

WAP untuk menghasilkan waktu tunda 500us menggunakan T1M2 (timer1 dan mode2)?

#include

void main ()
{
unsigned char i
TMOD = 0x20 // mengatur mode pengatur waktu //
untuk (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // mengatur waktu tunda //
TH1 = 0x00
TR1 = 1 // timer oN //
While (TF1 == 0) // periksa bit flag //
TF1 = 0
}
TR1 = 0 // timer mati //
}

Penundaan Loop Normal

batal penundaan ()

{
unsignedint k
untuk (k = 0k<30000k++)
}

Perhitungan dan Program Komunikasi Serial menggunakan Mikrokontroler 8051

Komunikasi serial biasanya digunakan untuk mengirim dan menerima sinyal. Mikrokontroler 8051 terdiri dari Komunikasi serial UART sinyal dikirim dan diterima oleh pin Rx dan Tx. UART mengambil byte data dan mengirimkan bit individu secara berurutan. Register adalah cara untuk mengumpulkan dan menyimpan data ke dalam memori. UART adalah protokol setengah dupleks. Half-duplex berarti mentransfer dan menerima data, tetapi tidak pada waktu yang sama.

Perhitungan dan Program Komunikasi Serial menggunakan Mikrokontroler 8051

Perhitungan dan Program Komunikasi Serial menggunakan Mikrokontroler 8051

1. WAP untuk mengirimkan karakter 'S' ke serial window gunakan 9600 sebagai baud rate?

28800 adalah baud rate maksimum dari mikrokontroler 8.051

28800/9600 = 3

Baud rate '3' disimpan di timer

#include

void main ()

{
SCON = 0x50 // mulai komunikasi serial //
TNOD = 0x20 // memilih mode pengatur waktu //
TH1 = 3 // memuat baud rate //
TR1 = 1 // Timer ON //
SBUF = ’S’ // simpan karakter di register //
while (TI == 0) // periksa register interupsi //
TI = 0
TR1 = 0 // MATIKAN timer //
while (1) // loop kontinu //
}

2. WAP untuk menerima data dari hyperterminal dan mengirimkan data tersebut ke PORT 0 dari Mikrokontroler menggunakan 9600 baud?

28800 adalah baud rate maksimum dari mikrokontroler 8.051

28800/9600 = 3

Baud rate '3' disimpan di timer

#include

void main ()
{
SCON = 0x50 // mulai komunikasi serial //
TMOD = 0x20 // memilih mode pengatur waktu //
TH1 = 3 // memuat baud rate //
TR1 = 1 // Timer ON //
PORT0 = SBUF // kirim data dari SBUF ke port0 //
while (RI == 0) // periksa register interupsi //
RI = 0
TR1 = 0 // MATIKAN timer //
while (1) // menghentikan program ketika karakter diterima //
}

Program Interupsi menggunakan Mikrokontroler 8051

Interupsi adalah sinyal yang memaksa untuk menghentikan program saat ini dan menjalankan program lain dengan segera. Mikrokontroler 8051 menyediakan 6 interupsi yaitu internal dan eksternal sumber interupsi . Ketika interupsi terjadi, mikrokontroler menghentikan sementara tugas saat ini dan menangani interupsi dengan menjalankan ISR kemudian mikrokontroler kembali ke tugas terakhir.

WAP untuk melakukan operasi shift kiri ketika timer 0 terjadi interupsi kemudian melakukan operasi interupsi untuk P0 pada fungsi utama?

#include

unsigned char b

void timer0 () interupsi 2 // dipilih timer0 interupsi //
{
b = 0x10
P1 = b<<2
}
void main ()
{
unsigned char a, i
IE = 0x82 // aktifkan timer0 interupsi //
TMOD = 0x01
TLo = 0xFC // pengatur waktu interupsi //
TH1 = 0xFB
TR0 = 1
a = 0x00
sementara (1)
{
untuk (i = 0i<255i++)
{
a ++
Po = a
}
}
}

Pemrograman Keypad menggunakan Mikrokontroler 8051

Papan tombol matriks adalah perangkat pengalih analog, yang digunakan di banyak aplikasi tertanam untuk memungkinkan pengguna melakukan tugas yang diperlukan. SEBUAH keypad matriks terdiri dari susunan sakelar dalam format matriks dalam baris dan kolom. Baris dan kolom dihubungkan ke mikrokontroler sedemikian rupa sehingga deretan sakelar dihubungkan ke satu pin dan sakelar di setiap kolom dihubungkan ke pin lain, kemudian melakukan operasi.

Pemrograman Keypad menggunakan Mikrokontroler 8051

Pemrograman Keypad menggunakan Mikrokontroler 8051

1. WAP untuk menghidupkan LED dengan menekan sakelar

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
batal penundaan ()
void main ()
{
sementara (1)
{
a = 0
b = 1
c = 1
d = 1
menunda()
a = 1
b = 0
c = 1
d = 1
batal penundaan ()
{
unsigned char i
TMOD = 0x20 // mengatur mode pengatur waktu //
untuk (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // mengatur waktu tunda //
TH1 = 0x00
TR1 = 1 // timer oN //
While (TF1 == 0) // periksa bit flag //
TF1 = 0
}
TR1 = 0 // timer mati //
}

2. WAP untuk MENGAKTIFKAN LED dengan menekan tombol '1' pada keypad?

#include

sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
sbit LED = P0 ^ 1

void main ()
{

r1 = 0
jika (c1 == 0)
{

LED = 0xff
}
}

3. WAP untuk menampilkan nomor 0,1,2,3,4,5 pada seven segment dengan menekan tombol yang bersangkutan pada keypad?

#include

sbit r1 = P2 ^ 0

sbit c1 = P3 ^ 0

sbit r2 = P2 ^ 0

sbit c2 = P3 ^ 0

sbit a = P0 ^ 1

void main ()

{

r1 = 0 a = 1

jika (c1 == 0)

{

a = 0xFC

}

Jika (c2 == 0)

{

a = 0x60

}

jika (c3 == 0)

{

a = 0xDA

}

Jika (c4 == 0)

{

a = 0xF2

}

}

Pemrograman LCD dengan Mikrokontroler 8051

Itu layar LCD adalah perangkat elektronik, yang sering digunakan dalam banyak aplikasi untuk menampilkan informasi dalam format teks atau gambar. LCD merupakan tampilan yang dapat dengan mudah menampilkan karakter pada layarnya. Layar LCD terdiri dari 8 jalur data dan 3 jalur kontrol yang digunakan untuk menghubungkan ke mikrokontroler.

Pemrograman LCD dengan Mikrokontroler 8051

Pemrograman LCD dengan Mikrokontroler 8051

WAP untuk menampilkan 'EDGEFX KITS' pada tampilan LED?

#include
#tentukan kam P0

voidlcd_initi ()
voidlcd_dat (unsigned char)
voidlcd_cmd (unsigned char)
batal penundaan ()
void display (unsigned char * s, unsigned char r)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit pada = P2 ^ 2
void main ()
{

lcd_initi ()
lcd_cmd (0x80)
penundaan (100)
lcd_cmd (0xc0)
tampilan ('kit edgefx', 11)
sementara (1)
}

void display (unsigned char * s, unsigned char r)
{
unsignedint w
untuk (w = 0w{
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
penundaan (100)
lcd_cmd (0 × 38)
penundaan (100)
lcd_cmd (0 × 06)
penundaan (100)
lcd_cmd (0x0c)
penundaan (100)
}
voidlcd_dat (data karakter tidak bertanda)
{
sisir = itu
rs = 1
rw = 0
dalam = 1
penundaan (100)
dalam = 0
}
}
voidlcd_cmd (unsigned char cmd)
{
datang = cmd
rs = 0
rw = 0

dalam = 1
penundaan (100)
dalam = 0
}
batal penundaan (unsigned int n)
{

unsignedint a
untuk (a = 0a}

Semoga artikel ini memberikan informasi dasar tentang pemrograman sistem tertanam menggunakan mikrokontroler 8051 dengan beberapa contoh program. Untuk detail tutorial pemrograman C tersemat, silakan kirim komentar dan pertanyaan Anda di bagian komentar di bawah.