A beágyazott C a legnépszerűbb programozási nyelv a szoftverek területén az elektronikus modulok fejlesztésére. Minden processzor beágyazott szoftverhez van társítva. Beágyazott C programozás nagy szerepet játszik a processzor meghatározott funkcióinak végrehajtásában. A mindennapi életünk során gyakran használunk számos elektronikus eszközt, például mosógépet, mobiltelefont, digitális fényképezőgépet és így tovább, a beágyazott C által programozott mikrovezérlőkön alapulva.

Beágyazott rendszer programozása
Az írt C kód megbízhatóbb, hordozhatóbb és méretezhetőbb, sőt, sokkal könnyebben érthető. Az első és legfontosabb eszköz a beágyazott szoftver, amely dönt a beágyazott rendszer működéséről. A mikrovezérlők programozásához leggyakrabban a beágyazott C programozási nyelvet használják.
Beágyazott C programozási útmutató (8051)
A program megírásához a beágyazott tervezőknek elegendő ismerettel kell rendelkezniük bizonyos processzorok vagy vezérlők hardveréről, mivel a beágyazott C programozás teljes hardverrel kapcsolatos programozási technika.

Programozási bemutató
Korábban sok beágyazott alkalmazást fejlesztettek összeállítási szintű programozással. Különböző magas szintű nyelvek, például a C, a COBOL és a Pascal megjelenésével azonban nem biztosítottak hordozhatóságot ennek a problémának a leküzdésére. Ugyanakkor a C nyelvet széles körben elfogadták beágyazott rendszerek alkalmazásának fejlesztése , és továbbra is így tesz.
Beágyazott rendszer
A beágyazott rendszert úgy definiálják, hogy a beágyazott C programozó szoftver és hardver kombinációja nagyrészt mikrovezérlőkből áll, és az adott feladat végrehajtására szolgál. Ezeket a beágyazott rendszereket használják mindennapi életünkben, például mosógépeket és videomagnókat, hűtőszekrényeket stb. A beágyazott rendszert először a 8051 mikrokontrollerek vezették be.

Beágyazott rendszer
Bevezetés a 8051 mikrovezérlőbe
A 8051 mikrovezérlő alapvető mikrovezérlő, először az ’Intel Corporation’ vezette be 1970 óta. A 8086 processzor architektúra fejlesztette ki. A 8051 a mikrovezérlő családja, amelyet különböző gyártók fejlesztettek ki, mint például a Philips, az Atmel, a dallerek stb. A 8051 mikrovezérlők sok beágyazott termékben használták, a kis gyermekjátéktól a nagy autóipari rendszerekig.

8051 mikrokontroller
A 8051 mikrovezérlő a 8 bites „CISC” architektúra . Memóriákból, soros kommunikációból, megszakításokból, bemeneti / kimeneti portokból és időzítőkből / számlálókból áll, egyetlen integrált chipbe építve, amely a vele összekötött perifériák vezérlésére van programozva. A program a mikrovezérlő RAM-ján van tárolva, de a program megírása előtt tisztában kell lennünk a RAM-mal szervezet a mikrovezérlő.
Beágyazott rendszer programozása: Alapok nyilatkozata
Minden függvény olyan utasítások gyűjteménye, amelyek egy adott feladatot hajtanak végre, és egy vagy több függvény gyűjteményét programozási nyelvnek nevezzük. Minden nyelv néhány alapelemből és nyelvtani szabályból áll. A C nyelv programozását úgy tervezték, hogy a karakterkészlettel működjön, a változók, az adattípusok, az állandók, a kulcsszavak, a kifejezések stb. Mindezeket a fejlécfájl vagy a könyvtárfájl alatt tekintjük, és a következőképpen jelenik meg:
#include

Beágyazott C programozás fejlesztése
A C nyelv kiterjesztését Embedded C programozási nyelvnek nevezzük. A fentiekhez képest a beágyazott programozás C nyelven rendelkezik néhány további funkcióval, például adattípusokkal és kulcsszavakkal, a fejlécfájl vagy a könyvtárfájl pedig
#include
Beágyazott C további kulcsszavak
- sbit
- bit
- SFR
- illó
- makrók definiálják
Az „sbit” a mikrovezérlő egyetlen PIN-kódjának deklarálására szolgál. Például a LED a P0.1 csaphoz van csatlakoztatva, nem ajánlott az értéket közvetlenül a port pinre küldeni, először is egy másik változóval kell deklarálnunk a csapot, majd miután bárhol felhasználhatjuk a programban.
Szintaxis: sbit a = P0 ^ 1 // a változót // változóval deklarálja
a = 0x01 // az érték elküldése a port pinhez //
A „bit” a változó állapotának ellenőrzésére szolgál.
Szintaxis: c bit // kijelenti a // változót //
c = a // értéket rendelünk a c változóhoz //
if (c == 1) // ellenőrizze az igaz vagy hamis feltételt //
{
… ..
……
}
Az „SFR” kulcsszóval más néven lehet hozzáférni az SFR regiszterekhez. Az SFR nyilvántartás a speciális funkció regiszter , az összes perifériával kapcsolatos regisztert tartalmazza a cím megjelölésével. Az SFR regisztert az SFR kulcsszó deklarálja. Az SFR kulcsszónak nagybetűvel kell lennie.
Szintaxis: SFR port = 0x00 // 0x00 egy port0 cím, amelyet a // port változó deklarál
Port = 0x01 //, majd küldje el az értéket a port0 // portra
késleltetés()
port = 0x00
késleltetés()
A „volatilis” kulcsszó a legfontosabb a beágyazott rendszerek fejlesztésében. A változó, amely az illékony kulcsszó értékével deklarál, nem változtatható meg váratlanul. Használható memória-leképezett perifériás regiszterekben, az ISR-ek által módosított globális változókban. A volatile kulcsszó használata nélkül az adatok továbbításához és fogadásához kódhiba vagy optimalizálási hiba történik.
Szintaxis: illékony int k
A makró egy név, amelyet arra használnak, hogy az utasítások blokkját egy processzor előtti irányelvként nyilvánítsa. Amikor a nevet használják, a makró tartalma helyettesíti. A makrók a #define-t képviselik. Az egész port csapokat a makrók határozzák meg.
Szintaxis: #define dat Po // az egész portot egy // változó deklarálja
dat = 0x01 // adatküldés a portra0 //
Beágyazott C alapprogramok
A mikrokontroller programozása mindegyiknél eltérő lesz az operációs rendszer típusa . Annak ellenére, hogy számos operációs rendszer létezik, például Linux, Windows, RTOS és így tovább. Az RTOS-nak azonban számos előnye van a beágyazott rendszerek fejlesztésében. Ez a cikk az alapvető beágyazott C programozást tárgyalja a beágyazott C programozás fejlesztésére egy 8051 mikrovezérlő segítségével.

Beágyazott C programozási lépések
- A LED villog a 8051 mikrovezérlővel
- Szám Megjelenítés 7 szegmenses kijelzőn a 8051 mikrokontroller használatával
- Időzítő / számláló számítások és programozás a 8051 mikrokontrollerrel
- Soros kommunikációs számítások és programozás a 8051 mikrokontroller használatával
- A programok megszakítása a 8051 mikrovezérlő használatával
- Kezelő programozás 8051 mikrovezérlővel
- LCD programozás 8051 mikrovezérlővel
LED villog a 8051 mikrokontroller használatával
A LED egy félvezető eszköz, amelyet számos alkalmazásban használnak, főleg jelzés céljából. A teszt során indikátorok széles skáláját találja az eredmények érvényességének ellenőrzésére a különböző szakaszokban. Nagyon olcsók és könnyen elérhetőek különböző formákban, színekben és méretekben. A LED-eket a tervezéshez használják üzenettáblák és a forgalomirányító jelzőlámpák stb. Itt a LED-ek összekapcsolódnak a 8051 mikrokontrollerek PORT0-jával.

LED villog a 8051 mikrokontroller használatával
1. 01010101
10101010
#include // fejlécfájl //
void main () // a program végrehajtásának stat pontja //
{
aláíratlan int i // adattípus //
while (1) // folyamatos hurok esetén //
{
P0 = 0x55 // a hexa érték elküldése a port0 // portra
mert (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // a hexa érték elküldése a port0 //
mert (i = 0i<30000i++) //normal delay//
}
}
2. 00000001
00000010
00000100
.
.
10 000 000
#include
void main ()
{
aláíratlan i
aláíratlan char j, b
míg (1)
{
P0 = 0x01
b = P0
for (j-0j<3000j++)
(j = 0j<8j++)
{
b = b<<1
P0 = b
for (j-0j<3000j++)
}
}
}
3. 00001111
11110000
#include
void main ()
{
aláíratlan i
míg (1)
{
P0 = 0x0F
for (j-0j<3000j++)
P0 = 0xF0
for (j-0j<3000j++)
}
}
4. 00000001
00000011
00000111
.
.
11111111
#include
void main ()
{
aláíratlan i
aláíratlan char j, b
míg (1)
{
P0 = 0x01
b = P0
for (j-0j<3000j++)
(j = 0j<8j++)
0x01
P0 = b
for (j-0j<3000j++)
}
}
Számok megjelenítése 7 szegmenses kijelzőn a 8051 mikrokontroller használatával
A 7 szegmenses kijelzők az alapvető elektronikus kijelzők, amelyeket számos rendszerben használnak a numerikus információk megjelenítésére. Nyolc LED-ből áll, amelyek egymás után vannak összekötve úgy, hogy 0 és 9 közötti számjegyeket jelenítsenek meg, amikor a megfelelő LED kombinációk be vannak kapcsolva. Egyszerre csak egy számjegyet tudnak megjeleníteni.

Számok megjelenítése 7 szegmenses kijelzőn a 8051 mikrokontroller használatával
1. WAP a „0-tól F” -ig terjedő számok megjelenítéséhez négy 7 szegmenses kijelzőn?
#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
void main ()
{
előjel nélküli n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
aláíratlanul, j
a = b = c = d = 1
míg (1)
{
mert (i = 0i<10i++)
{
P2 = n [i]
(j = 0j<60000j++)
}
}
}
2. WAP a ’00 és 10 közötti számok megjelenítéséhez 7 szegmenses kijelzőn?
#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
void display1 ()
void display2 ()
érvénytelen késés ()
void main ()
{
előjel nélküli n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
aláíratlanul, j
ds1 = ds2 = 0
míg (1)
{
mert (i = 0, i<20i++)
display1 ()
display2 ()
}
}
void display1 ()
{
a = 1
b = 0
P2 = s [ds1]
késleltetés()
a = 1
b = 0
P2 = s [ds1]
késleltetés()
}
void display2 ()
{
ds1 ++
ha (ds1> = 10)
{
ds1 = 0
ds2 ++
ha (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
érvénytelen késés ()
{
aláíratlan k
for (k = 0k<30000k++)
}
Időzítő / számláló számítások és programozás a 8051 mikrokontroller használatával
A késés az egyik fontos tényező az alkalmazásszoftver fejlesztésében. A normál késleltetés azonban nem adja meg az értékes eredményt ennek a problémának a kiküszöbölésére az időzítő késleltetés végrehajtásával. A időzítők és számlálók a mikrovezérlő hardverkomponensei, amelyet sok alkalmazásban használnak az értékes időhúzás biztosítására impulzusokkal. Mindkét feladatot a szoftveres technika hajtja végre.
Időzítő késleltetés
WAP az 500-as késleltetés előállításához a T1M2 (timer1 és mode2) használatával?
#include
void main ()
{
aláíratlan karakter i
TMOD = 0x20 // időzítő mód beállítása //
mert (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // késleltetési idő beállítása //
TH1 = 0x00
TR1 = 1 // időzítő o //
Míg (TF1 == 0) // ellenőrizze a jelző bitet //
TF1 = 0
}
TR1 = 0 // időzítő ki //
}
Normál hurok késleltetés
érvénytelen késés ()
{
aláíratlan k
for (k = 0k<30000k++)
}
Soros kommunikációs számítások és programozás a 8051 mikrokontroller használatával
A soros kommunikációt általában használják a jel továbbítására és fogadására. A 8051 mikrovezérlő áll UART soros kommunikáció az Rx és Tx csapok által továbbított és vett jelek. Az UART bájt adatokat vesz fel, és az egyes biteket egymás után küldi. A regiszterek lehetővé teszik az adatok gyűjtését és tárolását a memóriában. Az UART egy fél-duplex protokoll. A fél-duplex az adatok továbbítását és fogadását jelenti, de nem egyszerre.

Soros kommunikációs számítások és programozás a 8051 mikrokontroller használatával
1. WAP az „S” karakter továbbításához a soros ablakhoz használja a 9600-at az adatátviteli sebességként?
A 28800 a 8051 mikrokontroller maximális adatátviteli sebessége
28800/9600 = 3
Ezt a „3” sebességet az időzítők tárolják
#include
void main ()
{
SCON = 0x50 // soros kommunikáció indítása //
TNOD = 0x20 // az időzítő módot választotta //
TH1 = 3 // az adatátviteli sebesség betöltése //
TR1 = 1 // Időzítő BE //
SBUF = ’S’ // tárolja a karaktert a nyilvántartásban //
míg (TI == 0) // ellenőrizze a megszakítási regisztert //
TI = 0
TR1 = 0 // az időzítő kikapcsolása //
while (1) // folyamatos hurok //
}
2. WAP, hogy megkapja az adatokat a hiperterminálról, és 9600 baud használatával elküldi ezeket az adatokat a mikrovezérlő 0 portjába?
A 28800 a 8051 mikrokontroller maximális adatátviteli sebessége
28800/9600 = 3
Ezt a „3” sebességet az időzítők tárolják
#include
void main ()
{
SCON = 0x50 // soros kommunikáció indítása //
TMOD = 0x20 // az időzítő módot választotta //
TH1 = 3 // az adatátviteli sebesség betöltése //
TR1 = 1 // Időzítő BE //
PORT0 = SBUF // az adatok elküldése az SBUF-ről a port0 // portra
míg (RI == 0) // ellenőrizze a megszakítási regisztert //
RI = 0
TR1 = 0 // az időzítő kikapcsolása //
while (1) // leállítja a programot, amikor karakter érkezik //
}
A programok megszakítása a 8051 mikrokontroller használatával
A megszakítás olyan jel, amely arra kényszeríti az aktuális program leállítását és a másik program azonnali végrehajtását. A 8051 mikrovezérlő 6 megszakítást biztosít, amelyek belső és külső megszakítani a forrásokat . Amikor a megszakítás bekövetkezik, a mikrovezérlő szünetelteti az aktuális feladatot, és az ISR végrehajtásával foglalkozik a megszakítással, majd a mikrovezérlő visszatér a legutóbbi feladatra.
WAP a bal váltás művelet végrehajtásához, amikor a 0 időzítő megszakad, akkor hajtsa végre a P0 megszakítási műveletét a fő funkcióban?
#include
aláíratlan karakter b
void timer0 () 2. megszakítás // kiválasztott időzítő0 megszakítás //
{
b = 0x10
P1 = b<<2
}
void main ()
{
aláíratlan char a, i
IE = 0x82 // engedélyezi az időzítő0 megszakítását //
TMOD = 0x01
TLo = 0xFC // megszakítási időzítő //
TH1 = 0xFB
TR0 = 1
a = 0x00
míg (1)
{
mert (i = 0i<255i++)
{
a ++
Po = a
}
}
}
Kezelő programozás a 8051 mikrokontroller használatával
A mátrix kezelő egy analóg kapcsoló eszköz, amelyet sok beágyazott alkalmazásban használnak, hogy a felhasználó elvégezhesse a szükséges feladatokat. A mátrix billentyűzet kapcsolók elrendezéséből áll mátrix formátumban sorokban és oszlopokban. A sorok és oszlopok úgy kapcsolódnak a mikrovezérlőhöz, hogy a kapcsolók sora egy érintkezőhöz és az egyes oszlopok kapcsolói egy másik csaphoz vannak csatlakoztatva, majd hajtsák végre a műveleteket.

Kezelő programozás a 8051 mikrokontroller használatával
1. WAP kapcsolóval nyomja meg a LED-et
#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
érvénytelen késés ()
void main ()
{
míg (1)
{
a = 0
b = 1
c = 1
d = 1
késleltetés()
a = 1
b = 0
c = 1
d = 1
érvénytelen késés ()
{
aláíratlan karakter i
TMOD = 0x20 // időzítő mód beállítása //
mert (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // késleltetési idő beállítása //
TH1 = 0x00
TR1 = 1 // időzítő o //
Míg (TF1 == 0) // ellenőrizze a jelző bitet //
TF1 = 0
}
TR1 = 0 // időzítő ki //
}
2. WAP kapcsolja be a LED-et a billentyűzet ’1’ gombjának megnyomásával?
#include
sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
sbit LED = P0 ^ 1
void main ()
{
r1 = 0
ha (c1 == 0)
{
LED = 0xff
}
}
3. WAP a 0,1,2,3,4,5 szám megjelenítéséhez a hét szegmensben a billentyűzet megfelelő gombjának megnyomásával?
#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
ha (c1 == 0)
{
a = 0xFC
}
Ha (c2 == 0)
{
a = 0x60
}
ha (c3 == 0)
{
a = 0xDA
}
Ha (c4 == 0)
{
a = 0xF2
}
}
LCD programozás 8051 mikrovezérlővel
A LCD kijelzö egy elektronikus eszköz, amelyet sok alkalmazásban gyakran használnak az információk szöveges vagy kép formátumban történő megjelenítésére. Az LCD olyan kijelző, amely könnyen megjeleníti a karaktereket a képernyőn. Az LCD kijelző 8 adatsorból és 3 vezérlősorból áll, amelyeket a mikrovezérlőhöz való kapcsolódáshoz használnak.

LCD programozás 8051 mikrovezérlővel
WAP az „EDGEFX KITS” LED-kijelzőn történő megjelenítéséhez?
#include
#define kam P0
voidlcd_initi ()
voidlcd_dat (aláíratlan karakter)
voidlcd_cmd (aláíratlan karakter)
érvénytelen késés ()
érvénytelen kijelző (aláíratlan karakterek *, aláíratlan karakterek)
sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit = P2 ^ 2
void main ()
{
lcd_initi ()
lcd_cmd (0x80)
késés (100)
lcd_cmd (0xc0)
kijelző („edgefx készletek”, 11)
míg (1)
}
érvénytelen kijelző (aláíratlan karakterek *, aláíratlan karakterek)
{
aláíratlan w
(w = 0w
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
késés (100)
lcd_cmd (0 × 38)
késés (100)
lcd_cmd (0 × 06)
késés (100)
lcd_cmd (0x0c)
késés (100)
}
voidlcd_dat (aláíratlan karakter)
{
fésű = az
rs = 1
rw = 0
= 1
késés (100)
= 0
}
}
voidlcd_cmd (aláíratlan karakter cmd)
{
jött = cmd
rs = 0
rw = 0
= 1
késés (100)
= 0
}
void delay (aláíratlan int n)
{
unsignedint a
mert (a = 0a
Remélem, hogy ez a cikk alapvető információkat tartalmaz a beágyazott rendszerek programozásáról a 8051 mikrovezérlő használatával, néhány példaprogrammal. A részletes beágyazott C programozási bemutatóért tegye meg észrevételeit és kérdéseit az alábbi megjegyzés részben.