Tutorial Pengaturcaraan Embedded C dengan Bahasa Keil

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Embedded C adalah bahasa pengaturcaraan yang paling popular di bidang perisian untuk mengembangkan alat elektronik. Setiap pemproses dikaitkan dengan perisian terbenam. Pengaturcaraan Embedded C memainkan peranan utama dalam melaksanakan fungsi tertentu oleh pemproses. Dalam kehidupan seharian kita, kita sering menggunakan banyak alat elektronik seperti mesin basuh, telefon bimbit, kamera digital dan sebagainya akan berfungsi berdasarkan pengawal mikro yang diprogramkan oleh C. tertanam.

Pengaturcaraan Sistem Tertanam

Pengaturcaraan Sistem Tertanam



Kod C yang ditulis lebih dipercayai, mudah alih, dan boleh diskalakan dan sebenarnya, lebih mudah difahami. Alat pertama dan terpenting adalah perisian terbenam yang menentukan operasi sistem terbenam. Bahasa pengaturcaraan Embedded C paling kerap digunakan untuk memprogram mikrokontroler.


Tutorial Pengaturcaraan Embedded C (8051)

Untuk menulis program, pereka tertanam mesti mempunyai pengetahuan yang mencukupi mengenai perkakasan pemproses atau pengawal tertentu kerana pengaturcaraan C tertanam adalah teknik pengaturcaraan yang berkaitan dengan perkakasan penuh.



Tutorial Pengaturcaraan

Tutorial Pengaturcaraan

Sebelumnya, banyak aplikasi tertanam dikembangkan dengan menggunakan program tingkat pemasangan. Namun, mereka tidak memberikan kemudahan untuk mengatasi masalah ini dengan munculnya pelbagai bahasa tingkat tinggi seperti C, COBOL, dan Pascal. Namun, itu adalah bahasa C yang mendapat sambutan luas pengembangan aplikasi sistem tertanam , dan terus berlaku.

Sistem Terbenam

Sistem embedded didefinisikan sebagai gabungan perisian dan perkakasan pengaturcaraan C tertanam yang sebahagian besarnya terdiri dari mikrokontroler dan bertujuan untuk melaksanakan tugas tertentu. Jenis sistem embedded ini digunakan dalam kehidupan seharian kita seperti mesin basuh dan perakam video, peti sejuk dan sebagainya. Sistem embedded pertama kali diperkenalkan oleh mikrokontroler 8051.

Sistem Terbenam

Sistem Terbenam

Pengenalan Mikrokontroler 8051

Mikrokontroler 8051 adalah mikrokontroler asas, ia pertama kali diperkenalkan oleh ‘Intel Corporation’ sejak tahun 1970. Ia dikembangkan oleh seni bina pemproses 8086. 8051 adalah keluarga pengawal mikro, yang telah dikembangkan oleh pengeluar yang berbeza seperti Philips, Atmel, dall, dan sebagainya. Pengawal mikro 8051 telah digunakan dalam banyak produk tertanam dari mainan kanak-kanak kecil hingga sistem automotif yang besar.


8051 Pengawal Mikro

8051 Pengawal Mikro

Mikrokontroler 8051 adalah 8-bit Senibina ‘CISC’ . Ini terdiri daripada kenangan, komunikasi bersiri, gangguan, port input / output dan pemasa / pembilang, yang dibina ke dalam satu cip bersepadu, yang diprogramkan untuk mengendalikan peranti periferal yang dihubungkan dengannya. Program disimpan dalam RAM mikrokontroler tetapi sebelum menulis program, kita mesti menyedari RAM organisasi mikrokontroler.

Pengaturcaraan Sistem Tertanam: Deklarasi Asas

Setiap fungsi adalah kumpulan pernyataan yang melakukan tugas tertentu dan pengumpulan satu atau lebih fungsi disebut bahasa pengaturcaraan. Setiap bahasa terdiri daripada beberapa elemen asas dan peraturan tatabahasa. Pengaturcaraan bahasa C dirancang untuk berfungsi dengan set karakter, pemboleh ubah, jenis data, pemalar, kata kunci, ungkapan dan sebagainya digunakan untuk menulis program C. Semua ini dipertimbangkan di bawah fail header atau fail perpustakaan dan ia dinyatakan sebagai

#sertakan

Pembangunan Pengaturcaraan Embedded C

Pembangunan Pengaturcaraan Embedded C

Peluasan bahasa C disebut bahasa pengaturcaraan Embedded C. Berbanding dengan di atas, pengaturcaraan tertanam dalam bahasa C memiliki beberapa fitur tambahan seperti jenis data dan kata kunci dan file header atau file library diwakili sebagai

#sertakan

Kata kunci tambahan C terbenam

  • sbit
  • sedikit
  • SFR
  • tidak menentu
  • makro menentukan

'Sbit' digunakan untuk menyatakan satu PIN mikrokontroler. Sebagai contoh, LED disambungkan ke pin P0.1, tidak disarankan untuk mengirim nilai ke pin port secara langsung, pertama, kita harus menyatakan pin dengan pemboleh ubah lain kemudian setelah kita dapat menggunakan mana saja dalam program ini.

Sintaks: sbit a = P0 ^ 1 // menyatakan pin masing-masing dengan pemboleh ubah //
a = 0x01 // hantar nilai ke pin port //

'Bit' digunakan untuk memeriksa status pemboleh ubah.

Sintaks: bit c // menyatakan pemboleh ubah bit //
c = a // nilai diberikan kepada pemboleh ubah c //
jika (c == 1) // periksa keadaan benar atau salah //

{
… ..
……
}

Kata kunci 'SFR' digunakan untuk mengakses daftar SFR dengan nama lain. Daftar SFR ditakrifkan sebagai daftar fungsi khas , berisi semua daftar yang berkaitan dengan periferal dengan menunjukkan alamatnya. Daftar SFR dinyatakan oleh kata kunci SFR. Kata kunci SFR mestilah dalam huruf besar.

Sintaks: SFR port = 0x00 // 0x00 adalah alamat port0 yang dinyatakan oleh pemboleh ubah port //
Port = 0x01 // kemudian hantarkan nilai ke port0 //
kelewatan ()
port = 0x00
kelewatan ()

Kata kunci 'tidak stabil' adalah yang paling penting dalam pembangunan sistem tertanam. Pemboleh ubah yang menyatakan dengan nilai kata kunci tidak stabil tidak dapat diubah secara tidak dijangka. Ia dapat digunakan dalam daftar periferi yang dipetakan dengan memori, pemboleh ubah global yang diubah oleh ISR. Tanpa menggunakan kata kunci yang mudah berubah untuk menghantar dan menerima data, kesalahan kod atau kesalahan pengoptimuman akan berlaku.

Sintaks: int k meruap

Makro adalah nama yang digunakan untuk menyatakan blok penyataan sebagai arahan pra-pemproses. Setiap kali nama itu digunakan, ia digantikan dengan kandungan makro. Makro mewakili #define. Keseluruhan pin port ditentukan oleh makro.

Sintaks: #define dat Po // keseluruhan port dinyatakan oleh pemboleh ubah //
dat = 0x01 // data dihantar ke port0 //

Program C Terbenam Asas

Pengaturcaraan mikrokontroler akan berbeza untuk setiap satu jenis sistem operasi . Walaupun terdapat banyak sistem operasi yang ada seperti Linux, Windows, RTOS dan sebagainya. Walau bagaimanapun, RTOS mempunyai beberapa kelebihan untuk pengembangan sistem tertanam. Artikel ini membincangkan pengaturcaraan C tertanam asas untuk mengembangkan pengaturcaraan C tertanam menggunakan mikrokontroler 8051.

Langkah Pengaturcaraan C Terbenam

Langkah Pengaturcaraan C Terbenam

  • LED berkelip menggunakan dengan mikrokontroler 8051
  • Paparan Nombor pada paparan 7 segmen menggunakan mikrokontroler 8051
  • Pengiraan pemasa / Kaunter dan program menggunakan mikrokontroler 8051
  • Pengiraan dan program Komunikasi Bersiri menggunakan 8051 mikrokontroler
  • Selang Program menggunakan mikrokontroler 8051
  • Pengaturcaraan Keypad menggunakan 8051 mikrokontroler
  • Pengaturcaraan LCD dengan mikrokontroler 8051

LED Berkelip menggunakan Mikrokontroler 8051

LED adalah peranti semikonduktor yang digunakan dalam banyak aplikasi, kebanyakan untuk tujuan petunjuk. Ia mencari sebilangan besar aplikasi sebagai petunjuk semasa ujian untuk memeriksa kesahihan keputusan pada tahap yang berbeza. Mereka sangat murah dan mudah didapati dalam pelbagai bentuk, warna, dan saiz. LED digunakan untuk merancang papan paparan mesej dan lampu isyarat kawalan lalu lintas dll Di sini LED dihubungkan dengan PORT0 dari 8051 mikrokontroler.

LED Berkelip menggunakan Mikrokontroler 8051

LED Berkelip menggunakan Mikrokontroler 8051

1. 01010101
10101010

#sertakan // fail tajuk //
batal utama () // titik pelaksanaan program //
{
int i yang tidak bertanda // jenis data //
sementara (1) // untuk gelung berterusan //
{
P0 = 0x55 // hantar nilai hexa ke port0 //
untuk (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // hantarkan nilai hexa ke port0 //
untuk (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10,000,000

#sertakan

kekosongan utama ()

{

tidak ditandatangani i

char tidak bertanda j, b

semasa (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

#sertakan

kekosongan utama ()

{

tidak ditandatangani i

semasa (1)

{

P0 = 0x0F

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

P0 = 0xF0

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

}

}

4. 00000001

00000011

00000111

.

.

11111111

#sertakan

kekosongan utama ()

{

tidak ditandatangani i

char tidak bertanda j, b

semasa (1)

{

P0 = 0x01

b = P0

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

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

0x01

P0 = b

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

}

}

Memaparkan Nombor pada Paparan 7-Segmen menggunakan Mikrokontroler 8051

The Paparan 7 segmen adalah paparan elektronik asas, yang digunakan dalam banyak sistem untuk memaparkan maklumat angka. Ini terdiri dari lapan LED yang disambungkan secara berurutan sehingga dapat menampilkan digit dari 0 hingga 9, apabila kombinasi LED yang betul dihidupkan. Mereka hanya dapat memaparkan satu digit pada satu masa.

Memaparkan Nombor pada Paparan 7-Segmen menggunakan Mikrokontroler 8051

Memaparkan Nombor pada Paparan 7-Segmen menggunakan Mikrokontroler 8051

1. WAP untuk memaparkan nombor nombor ‘0 hingga F’ pada empat paparan 7 bahagian?

#sertakan
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
kekosongan utama ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
tidak menandatangani anda, j
a = b = c = d = 1
semasa (1)
{
untuk (i = 0i<10i++)
{
P2 = n [i]
untuk (j = 0j<60000j++)
}
}
}

2. WAP untuk memaparkan nombor dari '00 hingga 10 'pada paparan 7 bahagian?

#sertakan
sbit a = P3 ^ 0
sbit b = P3 ^ 1
paparan kosong1 ()
paparan kosong2 ()
kelewatan tidak sah ()
kekosongan utama ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
tidak menandatangani anda, j
ds1 = ds2 = 0
semasa (1)
{
untuk (i = 0, i<20i++)
paparan1 ()
paparan2 ()
}
}
paparan kosong1 ()
{
a = 1
b = 0
P2 = s [ds1]
kelewatan ()
a = 1
b = 0
P2 = s [ds1]
kelewatan ()
}
paparan kosong2 ()
{
ds1 ++
jika (ds1> = 10)
{
ds1 = 0
ds2 ++
jika (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
kelewatan tidak sah ()
{
tidak bertanda tangan k
untuk (k = 0k<30000k++)
}

Pengiraan Pemasa / Pembilang dan Program menggunakan Mikrokontroler 8051

Kelewatan adalah salah satu faktor penting dalam pembangunan perisian aplikasi. Walau bagaimanapun, kelewatan biasa tidak akan memberikan hasil yang berharga untuk mengatasi masalah ini kerana melaksanakan penundaan pemasa. The pemasa dan pembilang adalah komponen perkakasan mikrokontroler, yang digunakan dalam banyak aplikasi untuk memberikan kelewatan waktu yang berharga dengan denyutan kiraan. Kedua-dua tugas dilaksanakan dengan teknik perisian.

Kelewatan Pemasa

WAP untuk menghasilkan kelewatan masa 500us menggunakan T1M2 (pemasa1 dan mod2)?

#sertakan

kekosongan utama ()
{
char tidak bertanda i
TMOD = 0x20 // tetapkan mod pemasa //
untuk (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // tetapkan kelewatan masa //
TH1 = 0x00
TR1 = 1 // pemasa oN //
Semasa (TF1 == 0) // periksa bit bendera //
TF1 = 0
}
TR1 = 0 // pemasa dimatikan //
}

Kelewatan Gelung Biasa

kelewatan tidak sah ()

{
tidak bertanda tangan k
untuk (k = 0k<30000k++)
}

Pengiraan dan Program Komunikasi Bersiri menggunakan 8051 Mikrokontroler

Komunikasi bersiri biasanya digunakan untuk menghantar dan menerima isyarat. Pengawal mikro 8051 telah terdiri Komunikasi bersiri UART isyarat yang dihantar dan diterima oleh pin Rx dan Tx. UART mengambil bait data dan menghantar bit individu secara berurutan. Daftar adalah cara untuk mengumpulkan dan menyimpan data dalam memori. UART adalah protokol half-duplex. Half-duplex bermaksud memindahkan dan menerima data, tetapi tidak pada masa yang sama.

Pengiraan dan Program Komunikasi Bersiri menggunakan 8051 Mikrokontroler

Pengiraan dan Program Komunikasi Bersiri menggunakan 8051 Mikrokontroler

1. WAP untuk menghantar watak 'S' ke tetingkap bersiri menggunakan 9600 sebagai kadar baud?

28800 adalah kadar baud maksimum pengawal mikro 8051

28800/9600 = 3

Kadar baud ‘3’ disimpan dalam pemasa

#sertakan

kekosongan utama ()

{
SCON = 0x50 // mulakan komunikasi bersiri //
TNOD = 0x20 // memilih mod pemasa //
TH1 = 3 // muatkan kadar baud //
TR1 = 1 // Pemasa AKTIF //
SBUF = 'S' // simpan watak dalam daftar //
sementara (TI == 0) // periksa daftar gangguan //
TI = 0
TR1 = 0 // MATI pemasa //
sementara (1) // gelung berterusan //
}

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

28800 adalah kadar baud maksimum pengawal mikro 8051

28800/9600 = 3

Kadar baud ‘3’ disimpan dalam pemasa

#sertakan

kekosongan utama ()
{
SCON = 0x50 // mulakan komunikasi bersiri //
TMOD = 0x20 // memilih mod pemasa //
TH1 = 3 // muatkan kadar baud //
TR1 = 1 // Pemasa AKTIF //
PORT0 = SBUF // hantar data dari SBUF ke port0 //
sementara (RI == 0) // periksa daftar gangguan //
RI = 0
TR1 = 0 // MATI pemasa //
sementara (1) // hentikan program apabila watak diterima //
}

Ganggu Program menggunakan Mikrokontroler 8051

Gangguan adalah isyarat yang memaksa untuk menghentikan program semasa dan melaksanakan program lain dengan segera. Mikrokontroler 8051 menyediakan 6 gangguan, iaitu dalaman dan luaran mengganggu sumber . Apabila gangguan berlaku, mikrokontroler menghentikan tugas semasa dan menangani gangguan dengan melaksanakan ISR maka mikrokontroler kembali ke tugas baru.

WAP untuk melakukan operasi shift kiri apabila pemasa 0 interupts berlaku kemudian melakukan operasi interupsi untuk P0 dalam fungsi utama?

#sertakan

char tidak bertanda tangan b

void timer0 () interrupt 2 // pemasa terpilih0 mengganggu //
{
b = 0x10
P1 = b<<2
}
kekosongan utama ()
{
char tidak bertanda a, i
IE = 0x82 // aktifkan pemasa0 mengganggu //
TMOD = 0x01
TLo = 0xFC // pemasa gangguan //
TH1 = 0xFB
TR0 = 1
a = 0x00
semasa (1)
{
untuk (i = 0i<255i++)
{
a ++
Po = a
}
}
}

Pengaturcaraan Keypad menggunakan 8051 Microcontroller

Pad kekunci matriks adalah peranti beralih analog, yang digunakan dalam banyak aplikasi tertanam untuk memungkinkan pengguna melakukan tugas yang diperlukan. A pad kekunci matriks terdiri daripada susunan suis dalam format matriks dalam baris dan lajur. Baris dan lajur disambungkan ke mikrokontroler sehingga baris suis disambungkan ke satu pin dan suis di setiap lajur disambungkan ke pin lain, kemudian lakukan operasi.

Pengaturcaraan Keypad menggunakan 8051 Microcontroller

Pengaturcaraan Keypad menggunakan 8051 Microcontroller

1. WAP untuk menukar LED dengan menekan suis

#sertakan
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
kelewatan tidak sah ()
kekosongan utama ()
{
semasa (1)
{
a = 0
b = 1
c = 1
d = 1
kelewatan ()
a = 1
b = 0
c = 1
d = 1
kelewatan tidak sah ()
{
char tidak bertanda i
TMOD = 0x20 // tetapkan mod pemasa //
untuk (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // tetapkan kelewatan masa //
TH1 = 0x00
TR1 = 1 // pemasa oN //
Semasa (TF1 == 0) // periksa bit bendera //
TF1 = 0
}
TR1 = 0 // pemasa dimatikan //
}

2. WAP untuk MENGHIDUPKAN LED dengan menekan kekunci '1' pada papan kekunci?

#sertakan

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

kekosongan utama ()
{

r1 = 0
jika (c1 == 0)
{

LED = 0xff
}
}

3. WAP untuk memaparkan nombor 0,1,2,3,4,5 pada tujuh segmen dengan menekan kekunci masing-masing pada papan kekunci?

#sertakan

sbit r1 = P2 ^ 0

sbit c1 = P3 ^ 0

sbit r2 = P2 ^ 0

sbit c2 = P3 ^ 0

sbit a = P0 ^ 1

kekosongan utama ()

{

r1 = 0 a = 1

jika (c1 == 0)

{

a = 0xFC

}

Sekiranya (c2 == 0)

{

a = 0x60

}

jika (c3 == 0)

{

a = 0xDA

}

Sekiranya (c4 == 0)

{

a = 0xF2

}

}

Pengaturcaraan LCD dengan 8051 Mikrokontroler

The Paparan LCD adalah alat elektronik, yang sering digunakan dalam banyak aplikasi untuk menampilkan informasi dalam format teks atau gambar. LCD adalah paparan yang dapat dengan mudah menunjukkan watak di layarnya. Paparan LCD terdiri daripada garis 8-data dan garis 3-kawalan yang digunakan untuk menghubungkan ke mikrokontroler.

Pengaturcaraan LCD dengan 8051 Mikrokontroler

Pengaturcaraan LCD dengan 8051 Mikrokontroler

WAP untuk memaparkan “EDGEFX KITS” pada paparan LED?

#sertakan
#tentukan kam P0

voidlcd_initi ()
voidlcd_dat (char yang tidak ditandatangani)
voidlcd_cmd (char yang tidak ditandatangani)
kelewatan tidak sah ()
paparan kekosongan (char *s yang tidak ditandatangani, char yang tidak ditandatangani)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit pada = P2 ^ 2
kekosongan utama ()
{

lcd_initi ()
lcd_cmd (0x80)
kelewatan (100)
lcd_cmd (0xc0)
paparan ('kit edgefx', 11)
semasa (1)
}

paparan kekosongan (char *s yang tidak ditandatangani, char yang tidak ditandatangani)
{
tidak bertanda tangan w
untuk (w = 0w{
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
kelewatan (100)
lcd_cmd (0 × 38)
kelewatan (100)
lcd_cmd (0 × 06)
kelewatan (100)
lcd_cmd (0x0c)
kelewatan (100)
}
voidlcd_dat (dat yang tidak ditandatangani)
{
sisir = itu
rs = 1
rw = 0
dalam = 1
kelewatan (100)
dalam = 0
}
}
voidlcd_cmd (char cmd yang tidak ditandatangani)
{
datang = cmd
rs = 0
rw = 0

dalam = 1
kelewatan (100)
dalam = 0
}
kelewatan tidak sah (int tidak ditandatangani)
{

tidak ditandatangani a
untuk (a = 0a}

Semoga artikel ini memberikan maklumat asas mengenai pengaturcaraan sistem terbenam menggunakan mikrokontroler 8051 dengan beberapa contoh program. Untuk tutorial pengaturcaraan C tertanam terperinci, hantarkan komen dan pertanyaan anda di bahagian komen di bawah.