Vadnica za vdelano programiranje C z jezikom Keil

Preizkusite Naš Instrument Za Odpravo Težav





Embedded C je najbolj priljubljen programski jezik na področju programske opreme za razvoj elektronskih pripomočkov. Vsak procesor je povezan z vdelano programsko opremo. Programiranje vdelanega C igra glavno vlogo pri izvajanju določenih funkcij procesorja. V našem vsakdanjem življenju pogosto uporabljamo številne elektronske naprave, kot so pralni stroji, mobilni telefoni, digitalni fotoaparati in tako naprej, ki delujejo na podlagi mikrokrmilnikov, ki jih programira vdelani C.

Programiranje vgrajenega sistema

Programiranje vgrajenega sistema



Napisana koda C je bolj zanesljiva, prenosljiva in razširljiva, v resnici pa veliko lažje razumljiva. Prvo in najpomembnejše orodje je vdelana programska oprema, ki odloča o delovanju vdelanega sistema. Vgrajeni programski jezik C se najpogosteje uporablja za programiranje mikrokrmilnikov.


Vadnica za vdelano programiranje C (8051)

Za pisanje programa morajo vdelani oblikovalci imeti dovolj znanja o strojni opremi določenih procesorjev ali krmilnikov, saj je vgrajeno programiranje C popolna tehnika programiranja, povezana s strojno opremo.



Vadnica za programiranje

Vadnica za programiranje

Prej je bilo veliko vdelanih aplikacij razvitih s programiranjem na ravni sestavljanja. Vendar pa niso zagotovili prenosljivosti za premagovanje te težave s pojavom različnih jezikov na visoki ravni, kot so C, COBOL in Pascal. Vendar je bil jezik C tisti, ki je bil v veliki meri sprejet za razvoj aplikacij za vgrajene sisteme , in še naprej to počne.

Vgrajeni sistem

Vgrajeni sistem je opredeljen kot kombinacija vdelanega programskega in strojnega dela programskega dela C, ki je v glavnem sestavljen iz mikrokrmilnikov in je namenjen za izvajanje določene naloge. Te vrste vgrajenih sistemov se uporabljajo v našem vsakdanjem življenju, kot so pralni stroji in video snemalniki, hladilniki itd. Vgrajeni sistem so prvič predstavili mikrokrmilniki 8051.

Vgrajeni sistem

Vgrajeni sistem

Uvod v mikrokrmilnik 8051

Mikrokrmilnik 8051 je osnovni mikrokrmilnik, prvič ga je predstavila ‘Intel Corporation’ od leta 1970. Razvija ga procesorska arhitektura 8086. 8051 je družina mikrokrmilnikov, ki so jo razvili različni proizvajalci, kot so Philips, Atmel, dalls itd. Mikrokrmilniki 8051 je bila uporabljena v številnih vdelanih izdelkih, od majhnih otroških igrač do velikih avtomobilskih sistemov.


8051 Mikrokrmilnik

8051 Mikrokrmilnik

Mikrokrmilnik 8051 je 8-bitni „CISC“ arhitektura . Sestavljen je iz pomnilnikov, serijske komunikacije, prekinitev, vhodno / izhodnih vrat in časovnika / števcev, vgrajenih v en sam integriran čip, ki je programiran za nadzor zunanjih naprav, ki so z njim povezane. Program je shranjen v RAM-u mikrokrmilnika, vendar se pred pisanjem programa moramo zavedati RAM-a organizacija mikrokrmilnika.

Programiranje vgrajenega sistema: Izjava o osnovah

Vsaka funkcija je zbirka stavkov, ki izvajajo določeno nalogo, zbirka ene ali več funkcij pa se imenuje programski jezik. Vsak jezik je sestavljen iz nekaterih osnovnih elementov in slovničnih pravil. Programiranje jezika C je zasnovano tako, da deluje z naborom znakov, spremenljivke, tipi podatkov, konstante, ključne besede, izrazi itd. Se uporabljajo za pisanje programa C. Vse to je upoštevano pod datoteko glave ali datoteko knjižnice in je predstavljeno kot

#include

Razvoj vgrajenega C programiranja

Razvoj vgrajenega C programiranja

Razširitev jezika C se imenuje vgrajeni programski jezik C. V primerjavi z zgoraj ima vdelano programiranje v jeziku C nekatere dodatne funkcije, kot so tipi podatkov in ključne besede, datoteka z glavo ali datoteka knjižnice pa je predstavljena kot

#include

Vdelane C dodatne ključne besede

  • sbit
  • bit
  • SFR
  • hlapljivo
  • makri definirajo

Sbit se uporablja za prijavo ene same kode PIN mikrokrmilnika. Na primer, LED je priključen na pin P0.1, ni priporočljivo, da vrednost pošljete neposredno na pin pin, najprej moramo pin prijaviti z drugo spremenljivko, potem pa lahko uporabimo kjer koli v programu.

Sintaksa: sbit a = P0 ^ 1 // prijavi ustrezni pin s spremenljivko //
a = 0x01 // vrednost pošljemo na pin vrata //

'Bit' se uporablja za preverjanje stanja spremenljivke.

Sintaksa: bit c // razglasi bitno spremenljivko //
c = a // spremenljivki c je dodeljena vrednost //
if (c == 1) // preverimo stanje true ali false //

{
… ..
……
}

Ključna beseda “SFR” se uporablja za dostop do registrov SFR z drugim imenom. Register SFR, opredeljen kot a poseben register funkcij , vsebuje vse periferno povezane registre z navedbo naslova. Register SFR je označen s ključno besedo SFR. Ključna beseda SFR mora biti z velikimi tiskanimi črkami.

Sintaksa: SFR port = 0x00 // 0x00 je naslov port0, ki ga prijavi spremenljivka vrat //
Port = 0x01 // nato vrednost pošljite na port0 //
zamuda ()
vrata = 0x00
zamuda ()

Ključna beseda „volatile“ je najpomembnejša pri razvoju vgrajenega sistema. Spremenljivke, ki izjavlja s spremenljivo vrednostjo ključne besede, ni bilo mogoče nepričakovano spremeniti. Uporablja se lahko v pomnilniško preslikanih perifernih registrih, globalnih spremenljivkah, ki jih spreminjajo ISR-ji. Brez uporabe volatile ključne besede za prenos in sprejem podatkov bo prišlo do napake kode ali napake optimizacije.

Sintaksa: volatile int k

Makro je ime, ki se uporablja za razglasitev bloka stavkov kot predprocesorske direktive. Kadar koli se ime uporabi, ga nadomesti vsebina makra. Makri predstavljajo #define. Celotni zatiči vrat so definirani z makri.

Sintaksa: #define dat Po // celotna vrata so deklarirana s spremenljivko //
dat = 0x01 // podatki pošljejo na port0 //

Osnovni vdelani programi C.

Programiranje mikrokrmilnika se za vsakega razlikuje vrsta operacijskega sistema . Čeprav obstajajo številni operacijski sistemi, kot so Linux, Windows, RTOS itd. Vendar ima RTOS več prednosti za razvoj vgrajenega sistema. Ta članek obravnava osnovno vgrajeno programiranje C za razvoj vgrajenega programiranja C z mikrokrmilnikom 8051.

Vdelani koraki programiranja C

Vdelani koraki programiranja C

  • LED utripa z mikrokrmilnikom 8051
  • Prikaz številke na 7-segmentnem zaslonu z mikrokrmilnikom 8051
  • Izračuni časovnika / števca in programiranje z uporabo mikrokrmilnika 8051
  • Izračuni in programi serijske komunikacije z mikrokrmilnikom 8051
  • Prekinite programe z mikrokrmilnikom 8051
  • Programiranje tipkovnice z mikrokrmilnikom 8051
  • Programiranje LCD z mikrokrmilnikom 8051

LED utripa z mikrokrmilnikom 8051

LED je polprevodniška naprava, ki se uporablja v številnih aplikacijah, večinoma za indikacijske namene. Kot test med testom najde ogromno aplikacij za preverjanje veljavnosti rezultatov v različnih fazah. So zelo poceni in lahko dostopni v različnih oblikah, barvah in velikostih. LED se uporabljajo za oblikovanje deske za prikaz sporočil in signalne lučke za nadzor prometa itd. Tu so LED diode povezane s PORT0 mikrokrmilnikov 8051.

LED utripa z mikrokrmilnikom 8051

LED utripa z mikrokrmilnikom 8051

1. 01010101
10101010

#include // header file //
void main () // statistična točka izvajanja programa //
{
nepodpisan tip i // podatkovni tip //
while (1) // za neprekinjeno zanko //
{
P0 = 0x55 // pošlji heksa vrednost na vrata0 //
za (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // pošlje heksa vrednost na vrata0 //
za (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10.000.000

#include

void main ()

{

nepodpisani i

nepodpisani znak j, b

medtem ko (1)

{

P0 = 0x01

b = P0

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

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

{

b = b<<1

P0 = b

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

}

}

}

3. 00001111

11110000

#include

void main ()

{

nepodpisani i

medtem ko (1)

{

P0 = 0x0F

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

P0 = 0xF0

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

}

}

4. 00000001

00000011

00000111

.

.

11111111

#include

void main ()

{

nepodpisani i

nepodpisani znak j, b

medtem ko (1)

{

P0 = 0x01

b = P0

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

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

0x01

P0 = b

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

}

}

Prikaz številk na 7-segmentnem zaslonu z mikrokrmilnikom 8051

The 7-segmentni zasloni je osnovni elektronski zaslon, ki se v številnih sistemih uporablja za prikaz številčnih informacij. Sestavljen je iz osmih diod LED, ki so povezane zaporedno, tako da prikažejo številke od 0 do 9, ko so vklopljene ustrezne kombinacije LED. Naenkrat lahko prikažejo le eno številko.

Prikaz številk na 7-segmentnem zaslonu z mikrokrmilnikom 8051

Prikaz številk na 7-segmentnem zaslonu z mikrokrmilnikom 8051

1. WAP za prikaz številk od '0 do F' na štirih 7-segmentnih zaslonih?

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
void main ()
{
nepodpisani črk n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
niste podpisali vas, j
a = b = c = d = 1
medtem ko (1)
{
za (i = 0i<10i++)
{
P2 = n [i]
za (j = 0j<60000j++)
}
}
}

2. WAP za prikaz številk od ‘00 do 10 ’na 7segmentnih zaslonih?

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
prikaz praznine1 ()
prikaz praznine2 ()
zamuda praznine ()
void main ()
{
nepodpisani črk n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
niste podpisali vas, j
ds1 = ds2 = 0
medtem ko (1)
{
za (i = 0, i<20i++)
display1 ()
display2 ()
}
}
prikaz praznine1 ()
{
a = 1
b = 0
P2 = s [ds1]
zamuda ()
a = 1
b = 0
P2 = s [ds1]
zamuda ()
}
prikaz praznine2 ()
{
ds1 ++
če (ds1> = 10)
{
ds1 = 0
ds2 ++
če (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
zamuda praznine ()
{
nepodpis k
za (k = 0k<30000k++)
}

Izračuni časovnika / števca in programiranje z mikrokrmilnikom 8051

Zamuda je eden pomembnih dejavnikov pri razvoju aplikacijske programske opreme. Vendar običajna zakasnitev ne bo dala dragocenega rezultata za premagovanje te težave zaradi izvajanja zakasnitve časovnika. The merilniki časa in števci so strojne komponente mikrokrmilnika, ki se uporablja v številnih aplikacijah za zagotavljanje dragocene časovne zakasnitve s štetjem impulzov. Obe nalogi izvaja programska tehnika.

Zakasnitev časovnika

WAP za ustvarjanje časovne zakasnitve 500us z uporabo T1M2 (časovnik1 in način2)?

#include

void main ()
{
nepodpisani znak i
TMOD = 0x20 // nastavi način časovnika //
za (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // nastavitev časovne zakasnitve //
TH1 = 0x00
TR1 = 1 // časovnik oN //
While (TF1 == 0) // preveri bit zastavice //
TF1 = 0
}
TR1 = 0 // časovnik izklopljen //
}

Zakasnitev običajne zanke

zamuda praznine ()

{
nepodpis k
za (k = 0k<30000k++)
}

Izračuni in programi serijske komunikacije z mikrokrmilnikom 8051

Za oddajanje in sprejemanje signala se običajno uporablja serijska komunikacija. Mikrokrmilnik 8051 je sestavljen UART serijska komunikacija signali, ki jih oddajajo in sprejemajo zatiči Rx in Tx. UART zavzame bajte podatkov in pošlje posamezne bite zaporedno. Registri so način zbiranja in shranjevanja podatkov v pomnilnik. UART je poldupleksni protokol. Pol-dupleks pomeni prenos in sprejem podatkov, vendar ne hkrati.

Izračuni in programi serijske komunikacije z mikrokrmilnikom 8051

Izračuni in programi serijske komunikacije z mikrokrmilnikom 8051

1. WAP za prenos znaka „S“ v zaporedno okno uporablja 9600 kot hitrost prenosa?

28800 je največja hitrost prenosa mikrokrmilnika 8051

28800/9600 = 3

Ta hitrost prenosa '3' je shranjena v časovnikih

#include

void main ()

{
SCON = 0x50 // zagon serijske komunikacije //
TNOD = 0x20 // izbran način časovnika //
TH1 = 3 // naloži hitrost prenosa //
TR1 = 1 // Timer ON //
SBUF = 'S' // shrani znak v register //
while (TI == 0) // preveri register prekinitev //
TI = 0
TR1 = 0 // IZKLOP časovnika //
while (1) // neprekinjena zanka //
}

2. WAP, če želite sprejeti podatke s hiperterminala in jih poslati v PORT 0 mikrokrmilnika z uporabo 9600 baudov?

28800 je največja hitrost prenosa mikrokrmilnika 8051

28800/9600 = 3

Ta hitrost prenosa '3' je shranjena v časovnikih

#include

void main ()
{
SCON = 0x50 // zagon serijske komunikacije //
TMOD = 0x20 // izbran način časovnika //
TH1 = 3 // naloži hitrost prenosa //
TR1 = 1 // Timer ON //
PORT0 = SBUF // pošlji podatke iz SBUF na port0 //
while (RI == 0) // preveri register prekinitev //
RI = 0
TR1 = 0 // IZKLOP časovnika //
while (1) // ustavimo program ob prejemu znaka //
}

Prekinite programe z mikrokrmilnikom 8051

Prekinitev je signal, ki prisili zaustavitev trenutnega programa in takojšen zagon drugega programa. Mikrokrmilnik 8051 zagotavlja 6 prekinitev, ki so notranje in zunanje prekiniti vire . Ko pride do prekinitve, mikrokrmilnik zaustavi trenutno nalogo in se z izvajanjem ISR posveti prekinitvi, nato pa se mikrokrmilnik vrne na nedavno opravilo.

WAP za izvajanje operacije leve izmene, ko pride do prekinitve časovnika 0, nato pa izvedite operacijo prekinitve za P0 v glavni funkciji?

#include

nepodpisani znak b

void timer0 () interrupt 2 // izbrani timer0 interrupt //
{
b = 0x10
P1 = b<<2
}
void main ()
{
nepodpisani znak, tj
IE = 0x82 // omogoči prekinitev časovnika0 //
TMOD = 0x01
TLo = 0xFC // časovnik prekinitev //
TH1 = 0xFB
TR0 = 1
a = 0x00
medtem ko (1)
{
za (i = 0i<255i++)
{
a ++
Po = a
}
}
}

Programiranje tipkovnice z mikrokrmilnikom 8051

Matrična tipkovnica je analogna preklopna naprava, ki se uporablja v številnih vdelanih aplikacijah, da uporabniku omogoča izvajanje potrebnih nalog. A matrična tipkovnica je sestavljen iz razporeditve stikal v matrični obliki v vrsticah in stolpcih. Vrstice in stolpci so povezani z mikrokrmilnikom tako, da so vrstice stikal povezane z enim zatičem, stikala v vsakem stolpcu pa z drugim zatičem, nato pa izvedejo postopke.

Programiranje tipkovnice z mikrokrmilnikom 8051

Programiranje tipkovnice z mikrokrmilnikom 8051

1. WAP za preklop LED s pritiskom na stikalo

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
zamuda praznine ()
void main ()
{
medtem ko (1)
{
a = 0
b = 1
c = 1
d = 1
zamuda ()
a = 1
b = 0
c = 1
d = 1
zamuda praznine ()
{
nepodpisani znak i
TMOD = 0x20 // nastavi način časovnika //
za (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // nastavitev časovne zakasnitve //
TH1 = 0x00
TR1 = 1 // časovnik oN //
While (TF1 == 0) // preveri bit zastavice //
TF1 = 0
}
TR1 = 0 // časovnik izklopljen //
}

2. WAP, da vklopite LED s pritiskom na tipko '1' na tipkovnici?

#include

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

void main ()
{

r1 = 0
če (c1 == 0)
{

LED = 0xff
}
}

3. WAP za prikaz številke 0,1,2,3,4,5 na sedem odsekih s pritiskom na ustrezno tipko na tipkovnici?

#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

če (c1 == 0)

{

a = 0xFC

}

Če (c2 == 0)

{

a = 0x60

}

če (c3 == 0)

{

a = 0xDA

}

Če (c4 == 0)

{

a = 0xF2

}

}

Programiranje LCD z mikrokrmilnikom 8051

The LCD zaslon je elektronska naprava, ki se pogosto uporablja v številnih aplikacijah za prikaz informacij v besedilnem ali slikovnem formatu. LCD je zaslon, ki lahko zlahka prikazuje znake na svojem zaslonu. LCD zaslon je sestavljen iz 8 podatkovnih in 3 krmilnih vodov, ki se uporabljajo za povezavo z mikrokrmilnikom.

Programiranje LCD z mikrokrmilnikom 8051

Programiranje LCD z mikrokrmilnikom 8051

WAP za prikaz “EDGEFX KITS” na LED zaslonu?

#include
#define kam P0

voidlcd_initi ()
voidlcd_dat (nepodpisani znak)
voidlcd_cmd (nepodpisani znak)
zamuda praznine ()
prikaz praznine (nepodpisani znaki *, nepodpisani znaki r)

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

lcd_initi ()
lcd_cmd (0x80)
zamuda (100)
lcd_cmd (0xc0)
zaslon ('kompleti edgefx', 11)
medtem ko (1)
}

prikaz praznine (nepodpisani znaki *, nepodpisani znaki r)
{
nepodpis w
za (w = 0w{
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
zamuda (100)
lcd_cmd (0 × 38)
zamuda (100)
lcd_cmd (0 × 06)
zamuda (100)
lcd_cmd (0x0c)
zamuda (100)
}
voidlcd_dat (nepodpisani znak char)
{
glavnik = to
rs = 1
rw = 0
v = 1
zamuda (100)
v = 0
}
}
voidlcd_cmd (nepodpisani char cmd)
{
prišel = cmd
rs = 0
rw = 0

v = 1
zamuda (100)
v = 0
}
zamuda pred praznino (nepodpisan int n)
{

unsignedint a
za (a = 0a}

Upam, da ta članek vsebuje osnovne informacije o programiranju vgrajenega sistema z uporabo mikrokrmilnika 8051 z nekaj primeri programov. Za podrobno vdelano vadnico programiranja C objavite svoje komentarje in poizvedbe v spodnjem oddelku za komentarje.