Manustatud C programmeerimisõpetus Keili keelega

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Manustatud C on tarkvara valdkonnas populaarseim programmeerimiskeel elektrooniliste vidinate arendamiseks. Iga protsessor on seotud manustatud tarkvaraga. Manustatud C programmeerimine mängib suurt rolli protsessori konkreetsete funktsioonide täitmisel. Igapäevases elus kasutame sageli paljusid elektroonilisi seadmeid, näiteks pesumasinaid, mobiiltelefone, digitaalkaameraid ja nii edasi. Need töötavad mikrokontrolleritel, mis on sisseehitatud C-ga programmeeritud.

Sisseehitatud süsteemi programmeerimine

Sisseehitatud süsteemi programmeerimine



Kirjutatud C-kood on usaldusväärsem, kaasaskantav ja skaleeritav ning tegelikult palju lihtsam mõista. Esimene ja peamine tööriist on manustatud tarkvara, mis otsustab manustatud süsteemi toimimise. Mikrokontrollerite programmeerimiseks kasutatakse kõige sagedamini manustatud C-programmeerimiskeelt.


Manustatud C programmeerimise õpetus (8051)

Programmi kirjutamiseks peavad manustatud disainerid omama piisavalt teadmisi konkreetsete protsessorite või kontrollerite riistvara kohta, kuna manustatud C-programmeerimine on täielik riistvaraga seotud programmeerimistehnika.



Programmeerimise õpetus

Programmeerimise õpetus

Varem töötati välja palju manustatud rakendusi montaažitaseme programmeerimise abil. Kuid need ei pakkunud selle probleemi ületamiseks kaasaskantavust erinevate kõrgetasemeliste keelte, nagu C, COBOL ja Pascal, ilmumisega. Kuid see oli C keel, mis sai laialdase heakskiidu sisseehitatud süsteemide rakenduste arendamine ja teeb seda jätkuvalt.

Manustatud süsteem

Manustatud süsteem on määratletud kui varjatud C-programmeerimistarkvara ja riistvara kombinatsioon, mis koosneb peamiselt mikrokontrolleritest ja on mõeldud konkreetse ülesande täitmiseks. Seda tüüpi manussüsteeme kasutatakse meie igapäevaelus, näiteks pesumasinad ja videomagnetofonid, külmikud jne. Esmalt võtsid manustatud süsteemi kasutusele mikrokontrollerid 8051.

Manustatud süsteem

Manustatud süsteem

8051 mikrokontrolleri sissejuhatus

Mikrokontroller 8051 on põhiline mikrokontroller, seda tutvustas esmakordselt ‘Intel Corporation’ alates 1970. aastast. Selle on välja töötanud 8086 protsessori arhitektuur. 8051 on mikrokontrolleri perekond, mille on välja töötanud erinevad tootjad, näiteks Philips, Atmel, dallid jne. 8051 mikrokontrollerid on kasutatud paljudes manustatud toodetes, alates väikestest laste mänguasjadest kuni suurte autosüsteemideni.


8051 mikrokontroller

8051 mikrokontroller

8051 mikrokontroller on 8-bitine ‘CISC’ arhitektuur . See koosneb mäludest, jadasidest, katkestustest, sisend- ja väljundportidest ning taimeritest / loenduritest, mis on sisse ehitatud üheks integreeritud kiibiks, mis on programmeeritud juhtima sellega liideseid lisaseadmeid. Programm on salvestatud mikrokontrolleri RAM-i, kuid enne programmi kirjutamist peame RAM-i teadma organisatsioon mikrokontrolleri.

Sisseehitatud süsteemi programmeerimine: põhideklaratsioon

Iga funktsioon on lausete kogu, mis täidab kindlat ülesannet ja ühe või mitme funktsiooni kogumit nimetatakse programmeerimiskeeleks. Iga keel koosneb mõnest põhielemendist ja grammatikareeglitest. C-keele programmeerimine on loodud töötama koos märgistikuga, C-programmi kirjutamiseks kasutatakse muutujaid, andmetüüpe, konstande, märksõnu, väljendeid ja nii edasi. Kõiki neid käsitletakse päisefaili või teegifaili all ja seda tähistatakse kui

# kaasata

Manustatud C programmeerimise arendamine

Manustatud C programmeerimise arendamine

C-keele laiendust nimetatakse Embedded C-programmeerimiskeeleks. Eeltooduga võrreldes on manustatud programmeerimisel C-keeles mõned täiendavad funktsioonid, näiteks andmetüübid ja märksõnad ning päise- või teegifail on esindatud

# kaasata

Manustatud C lisamärksõnad

  • sbit
  • natuke
  • SFR
  • kõikuv
  • makrod määratlevad

Sbit-d kasutatakse mikrokontrolleri ühe PIN-koodi deklareerimiseks. Näiteks on LED ühendatud P0.1 tihvtiga, ei ole soovitatav väärtust otse pordi tihvtile saata, kõigepealt peame deklareerima tihvti teise muutujaga, seejärel pärast seda, kui saame programmis kõikjal kasutada.

Süntaks: sbit a = P0 ^ 1 // deklareerib vastava tihvti muutujaga //
a = 0x01 // saadab väärtuse pordi tihvti //

'Bitti' kasutatakse muutuja oleku kontrollimiseks.

Süntaks: bitt c // deklareerib biti muutuja //
c = a // muutujale c omistatakse väärtus //
if (c == 1) // kontrollige tingimust tõene või väär //

{
… ..
……
}

Märksõna “SFR” kasutatakse SFR-i registrite juurde pääsemiseks teise nimega. SFR register on määratletud kui erifunktsioonide register , sisaldab see aadressi märkimisega kõiki perifeerselt seotud registreid. SFR register deklareeritakse SFR märksõnaga. SFR-märksõna peab olema suurtähtedega.

Süntaks: SFR port = 0x00 // 0x00 on port0 aadress, mille deklareerib porti muutuja //
Port = 0x01 // siis saatke väärtus porti0 //
viivitus ()
port = 0x00
viivitus ()

Varjatud märksõna on manussüsteemi arendamisel kõige olulisem. Muutuvat, mis deklareerib koos lenduva märksõna väärtusega, ei saanud ootamatult muuta. Seda saab kasutada mäluga kaardistatud perifeersetes registrites, ISR-ide poolt modifitseeritud globaalsetes muutujates. Ilma lenduva märksõna andmete edastamiseks ja vastuvõtmiseks kasutamata toimub koodiviga või optimeerimisviga.

Süntaks: lenduv int k

Makro on nimi, mida kasutatakse avalduste ploki deklareerimiseks eeltöötleja direktiivina. Alati, kui seda nime kasutatakse, asendatakse see makro sisuga. Makrod tähistavad #define. Makros määratletakse kogu pordi tihvtid.

Süntaks: #define dat Po // kogu pordi deklareerib muutuja //
dat = 0x01 // andmete saatmine porti0 //

Põhilised manustatud C-programmid

Mikrokontrolleri programmeerimine on igaühe jaoks erinev operatsioonisüsteemi tüüp . Isegi kui eksisteerib palju opsüsteeme, näiteks Linux, Windows, RTOS ja nii edasi. RTOS-il on aga varjatud süsteemide arendamisel mitmeid eeliseid. Selles artiklis käsitletakse manustatud C põhiprogrammeerimist, et arendada sisseehitatud C-programmeerimist mikrokontrolleri 8051 abil.

Manustatud C programmeerimise sammud

Manustatud C programmeerimise sammud

  • LED vilgub, kasutades mikrokontrollerit 8051
  • Number Kuvatakse 7-segmendilisel ekraanil mikrokontrolleri 8051 abil
  • Taimeri / loenduri arvutused ja programm 8051 mikrokontrolleri abil
  • Seeriaside arvutused ja programm 8051 mikrokontrolleri abil
  • Katkestage programmid, kasutades mikrokontrollerit 8051
  • Klaviatuuri programmeerimine mikrokontrolleri abil 8051
  • LCD programmeerimine mikrokontrolleriga 8051

LED vilgub mikrokontrolleri 8051 abil

LED on pooljuhtseade, mida kasutatakse paljudes rakendustes, peamiselt näidustamiseks. See on testi ajal näitajatena tohutu hulga rakenduste leidmine, et kontrollida tulemuste paikapidavust erinevates etappides. Need on väga odavad ja hõlpsasti saadaval mitmesuguste kuju, värvi ja suurusega. LED-e kasutatakse kujundamiseks teadetetahvlid ja liikluskorralduse signaaltuled jne. Siin on LED-id liidetud 8051 mikrokontrollerite PORT0-ga.

LED vilgub mikrokontrolleri 8051 abil

LED vilgub mikrokontrolleri 8051 abil

1. 01010101
10101010

#include // päisefail //
void main () // programmi täitmise stat punkt //
{
allkirjastamata int i // andmetüüp //
while (1) // pideva tsükli korral //
{
P0 = 0x55 // saatke heksa väärtus porti0 //
jaoks (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // saatke heksa väärtus porti0 //
jaoks (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10 000 000

# kaasata

tühine main ()

{

allkirjastamata i

allkirjastamata täht j, s

samas (1)

{

P0 = 0x01

b = P0

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

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

{

b = b<<1

P0 = b

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

}

}

}

3. 00001111

11110000

# kaasata

tühine main ()

{

allkirjastamata i

samas (1)

{

P0 = 0x0F

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

P0 = 0xF0

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

}

}

4. 00000001

00000011

00000111

.

.

11111111

# kaasata

tühine main ()

{

allkirjastamata i

allkirjastamata täht j, s

samas (1)

{

P0 = 0x01

b = P0

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

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

0x01

P0 = b

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

}

}

Numbrite kuvamine 7-segmendilisel ekraanil, kasutades mikrokontrollerit 8051

The 7-segmendilised kuvarid on põhilised elektroonilised kuvarid, mida kasutatakse paljudes süsteemides numbrilise teabe kuvamiseks. See koosneb kaheksast valgusdioodist, mis on järjestikku ühendatud, et näidata numbreid 0 kuni 9, kui korralikud LED-ide kombinatsioonid on sisse lülitatud. Nad saavad korraga kuvada ainult ühte numbrit.

Numbrite kuvamine 7-segmendilisel ekraanil, kasutades mikrokontrollerit 8051

Numbrite kuvamine 7-segmendilisel ekraanil, kasutades mikrokontrollerit 8051

1. Kas WAP kuvab numbreid kujul 0 kuni F neljal 7-segmendisel ekraanil?

# kaasata
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
tühine main ()
{
allkirjatu süsinik n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
allkirjastamata, j
a = b = c = d = 1
samas (1)
{
jaoks (i = 0i<10i++)
{
P2 = n [i]
jaoks (j = 0j<60000j++)
}
}
}

2. WAP, et kuvada numbreid vahemikus ’00 kuni 10 ’7 segmendinäidikul?

# kaasata
sbit a = P3 ^ 0
sbit b = P3 ^ 1
void display1 ()
void display2 ()
tühine viivitus ()
tühine main ()
{
allkirjatu süsinik n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
allkirjastamata, j
ds1 = ds2 = 0
samas (1)
{
jaoks (i = 0, st<20i++)
kuva1 ()
kuva2 ()
}
}
void display1 ()
{
a = 1
b = 0
P2 = s [ds1]
viivitus ()
a = 1
b = 0
P2 = s [ds1]
viivitus ()
}
void display2 ()
{
ds1 ++
kui (ds1> = 10)
{
ds1 = 0
ds2 ++
kui (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
tühine viivitus ()
{
allkirjastamata k
jaoks (k = 0k<30000k++)
}

Taimeri / loenduri arvutused ja programm, kasutades mikrokontrollerit 8051

Viivitus on üks olulisi tegureid rakendustarkvara arendamisel. Kuid tavaline viivitus ei anna väärtuslikku tulemust selle probleemi ületamiseks taimeri viivituse rakendamisel. The taimerid ja loendurid on mikrokontrolleri riistvarakomponendid, mida kasutatakse paljudes rakendustes, et pakkuda loendimpulssidega väärtuslikku viivitust. Mõlemad ülesanded on rakendatud tarkvaratehnikas.

Taimeri viivitus

WAP 500-kordse viivituse genereerimiseks, kasutades T1M2 (taimer1 ja režiim2)?

# kaasata

tühine main ()
{
allkirjastamata tähis i
TMOD = 0x20 // taimerirežiimi seadistamine //
jaoks (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // määrake viivitus //
TH1 = 0x00
TR1 = 1 // taimer oN //
Kuigi (TF1 == 0) // kontrollige lipubitti //
TF1 = 0
}
TR1 = 0 // taimer väljas //
}

Tavaline tsükli viivitus

tühine viivitus ()

{
allkirjastamata k
jaoks (k = 0k<30000k++)
}

Seeriaarvutused ja programm, kasutades mikrokontrollerit 8051

Signaali edastamiseks ja vastuvõtmiseks kasutatakse tavaliselt jadasidet. 8051 mikrokontroller koosneb UART jadaühendus Rx ja Tx tihvtide poolt edastatud ja vastuvõetud signaalid. UART võtab andmeid baiti ja saadab üksikud bitid järjestikku. Registrid on viis andmete kogumiseks ja salvestamiseks mällu. UART on pooldupleksne protokoll. Pooldupleks tähendab andmete edastamist ja vastuvõtmist, kuid mitte samaaegselt.

Seeriaarvutused ja programm, kasutades mikrokontrollerit 8051

Seeriaarvutused ja programm, kasutades mikrokontrollerit 8051

1. Kas WAP tähe „S” jadaaknasse edastamiseks kasutab baudikiiruseks 9600?

28800 on mikrokontrolleri 8051 maksimaalne edastuskiirus

28800/9600 = 3

See edastuskiirus ‘3’ on salvestatud taimeritesse

# kaasata

tühine main ()

{
SCON = 0x50 // jadakommunikatsiooni alustamine //
TNOD = 0x20 // valis taimeri režiimi //
TH1 = 3 // laadige edastuskiirus //
TR1 = 1 // Taimer SEES //
SBUF = ’S’ // hoiab märki registris //
while (TI == 0) // kontrollige katkestuste registrit //
TI = 0
TR1 = 0 // taimeri väljalülitamine //
while (1) // pidev silmus //
}

2. WAP hüperterminalist andmete vastuvõtmiseks ja andmete saatmiseks mikrokontrolleri PORT 0-le, kasutades 9600 baudi?

28800 on mikrokontrolleri 8051 maksimaalne edastuskiirus

28800/9600 = 3

See edastuskiirus ‘3’ on salvestatud taimeritesse

# kaasata

tühine main ()
{
SCON = 0x50 // jadakommunikatsiooni alustamine //
TMOD = 0x20 // valitud taimeri režiim //
TH1 = 3 // laadige edastuskiirus //
TR1 = 1 // Taimer SEES //
PORT0 = SBUF // saatke andmed SBUF-ist porti0 //
while (RI == 0) // kontrollige katkestuste registrit //
RI = 0
TR1 = 0 // taimeri väljalülitamine //
while (1) // programmi peatamine, kui märk saabub //
}

Programmide katkestamine, kasutades mikrokontrollerit 8051

Katkestus on signaal, mis sunnib praeguse programmi peatama ja teise programmi viivitamatult käivitama. 8051 mikrokontroller pakub 6 katkestust, mis on sisemised ja välised katkestada allikad . Kui katkestus toimub, peatab mikrokontroller praeguse ülesande ja jälgib katkestust, käivitades ISR-i, naaseb mikrokontroller tagasi hiljutise ülesande juurde.

WAP vasakpoolse nihke toimingu tegemiseks, kui taimer 0 katkestab, kas siis P0 katkestamine põhifunktsioonis?

# kaasata

allkirjastamata täht b

void timer0 () katkestus 2 // valitud taimer0 katkestus //
{
b = 0x10
P1 = b<<2
}
tühine main ()
{
allkirjastamata char a, st
IE = 0x82 // lubage taimer0 katkestus //
TMOD = 0x01
TLo = 0xFC // katkestuse taimer //
TH1 = 0xFB
TR0 = 1
a = 0x00
samas (1)
{
jaoks (i = 0i<255i++)
{
a ++
Po = a
}
}
}

Klahvistiku programmeerimine mikrokontrolleri 8051 abil

Maatriksklaviatuur on analooglülitusseade, mida kasutatakse paljudes manustatud rakendustes, et võimaldada kasutajal vajalikke toiminguid täita. A maatriksiklaviatuur koosneb maatriksvormingus lülitite paigutusest ridades ja veergudes. Ridad ja veerud on ühendatud mikrokontrolleriga nii, et lülitite rida on ühendatud ühe tihvtiga ja igas veerus olevad lülitid on ühendatud teise tihvtiga, seejärel tehke toimingud.

Klahvistiku programmeerimine mikrokontrolleri 8051 abil

Klahvistiku programmeerimine mikrokontrolleri 8051 abil

1. WAP lülitab LED-i ümberlülitamiseks

# kaasata
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
tühine viivitus ()
tühine main ()
{
samas (1)
{
a = 0
b = 1
c = 1
d = 1
viivitus ()
a = 1
b = 0
c = 1
d = 1
tühine viivitus ()
{
allkirjastamata tähis i
TMOD = 0x20 // taimerirežiimi seadistamine //
jaoks (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // määrake viivitus //
TH1 = 0x00
TR1 = 1 // taimer oN //
Kuigi (TF1 == 0) // kontrollige lipubitti //
TF1 = 0
}
TR1 = 0 // taimer väljas //
}

2. Kas WAP lülitada LED sisse, vajutades klahvi 1 klahvistikul?

# kaasata

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

tühine main ()
{

r1 = 0
kui (c1 == 0)
{

LED = 0xff
}
}

3. Kas WAP kuvab seitsmes segmendis numbri 0,1,2,3,4,5, vajutades vastavat klahvistikku?

# kaasata

sbit r1 = P2 ^ 0

sbit c1 = P3 ^ 0

sbit r2 = P2 ^ 0

sbit c2 = P3 ^ 0

sbit a = P0 ^ 1

tühine main ()

{

r1 = 0 a = 1

kui (c1 == 0)

{

a = 0xFC

}

Kui (c2 == 0)

{

a = 0x60

}

kui (c3 == 0)

{

a = 0xDA

}

Kui (c4 == 0)

{

a = 0xF2

}

}

LCD programmeerimine mikrokontrolleriga 8051

The LCD ekraan on elektrooniline seade, mida kasutatakse paljudes rakendustes teabe kuvamiseks teksti- või pildivormingus. LCD on ekraan, mis võimaldab ekraanil hõlpsasti märke näidata. LCD-ekraanil on 8 andmerida ja 3 juhtimisliini, mida kasutatakse mikrokontrolleriga liidestamiseks.

LCD programmeerimine mikrokontrolleriga 8051

LCD programmeerimine mikrokontrolleriga 8051

Kas WAP kuvada LED-ekraanil “EDGEFX KITS”?

# kaasata
#define kam P0

voidlcd_initi ()
voidlcd_dat (märkimata märk)
voidlcd_cmd (märkimata märk)
tühine viivitus ()
tühine kuva (allkirjastamata tähed * s, märkimata tähed r)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit juures = P2 ^ 2
tühine main ()
{

lcd_initi ()
lcd_cmd (0x80)
viivitus (100)
lcd_cmd (0xc0)
kuva („edgefx komplektid”, 11)
samas (1)
}

tühine kuva (allkirjastamata tähed * s, märkimata tähed r)
{
signeerimata w
jaoks (w = 0w{
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
viivitus (100)
lcd_cmd (0 × 38)
viivitus (100)
lcd_cmd (0 × 06)
viivitus (100)
lcd_cmd (0x0c)
viivitus (100)
}
voidlcd_dat (allkirjastamata char dat)
{
kamm = see
rs = 1
rw = 0
sisse = 1
viivitus (100)
= 0
}
}
voidlcd_cmd (märkimata sümboli cmd)
{
tuli = cmd
rs = 0
rw = 0

sisse = 1
viivitus (100)
= 0
}
tühine viivitus (allkirjastamata int n)
{

allkirjastamata a
jaoks (a = 0a}

Loodetavasti pakub see artikkel põhiteavet manustatud süsteemi programmeerimise kohta, kasutades mikrokontrollerit 8051 koos mõne näidisprogrammiga. Manustatud C-programmeerimise üksikasjaliku õpetuse saamiseks saatke oma kommentaarid ja päringud allpool olevasse kommentaaride jaotisesse.