Naka-embed na C Programming Tutorial kasama ang Keil Wika

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Ang naka-embed na C ay ang pinakapopular na wika ng programa sa patlang ng software para sa pagbuo ng mga elektronikong gadget. Ang bawat processor ay nauugnay sa naka-embed na software. Naka-embed na C Programming gumaganap ng isang pangunahing papel sa pagganap ng mga tiyak na pag-andar ng processor. Sa aming pang-araw-araw na buhay, madalas kaming gumagamit ng maraming mga elektronikong aparato tulad ng mga washing machine, mobile phone, digital camera at iba pa ay gagana batay sa mga microcontroller na na-program ng naka-embed na C.

Naka-embed na Programming ng System

Naka-embed na Programming ng System



Ang nakasulat na C code ay mas maaasahan, portable, at nasusukat at sa katunayan, mas madaling maunawaan. Ang una at pinakamahalagang tool ay ang naka-embed na software na nagpapasya sa pagpapatakbo ng isang naka-embed na system. Ang wika ng naka-embed na C na programa ay madalas na ginagamit para sa pagprograma ng mga microcontroller.


Embedded C Programming Tutorial (8051)

Para sa pagsusulat ng programa ang naka-embed na taga-disenyo ay dapat magkaroon ng sapat na kaalaman sa hardware ng mga partikular na tagaproseso o tagokontrol dahil ang naka-embed na C na programa ay isang buong diskarteng may kinalaman sa hardware na may kaugnayan sa hardware.



Tutorial sa Programming

Tutorial sa Programming

Mas maaga, maraming naka-embed na mga aplikasyon ang binuo sa pamamagitan ng paggamit ng pagpoprogram sa antas ng pagpupulong. Gayunpaman, hindi sila nagbigay ng kakayahang maabot upang mapagtagumpayan ang problemang ito sa pagkakaroon ng iba't ibang mga mataas na antas na wika tulad ng C, COBOL, at Pascal. Gayunpaman, ito ang wikang C na tumanggap ng malawak na pagtanggap para sa naka-embed na pag-unlad ng application ng system , at patuloy itong ginagawa.

Naka-embed na Sistema

Ang naka-embed na system ay tinukoy bilang ang kumbinasyon ng naka-embed na C programa ng software at bahagi ng hardware na pangunahing binubuo ng mga microcontroller at ito ay inilaan upang maisagawa ang tiyak na gawain. Ang mga ganitong uri ng mga naka-embed na system ay ginagamit sa ating pang-araw-araw na buhay tulad ng mga washing machine at video recorder, ref at iba pa. Ang naka-embed na system ay unang ipinakilala ng 8051 microcontrollers.

Naka-embed na Sistema

Naka-embed na Sistema

Panimula sa 8051 Microcontroller

Ang 8051 microcontroller ay isang pangunahing microcontroller, ito ay unang ipinakilala ng 'Intel Corporation' mula pa noong 1970. Ito ay binuo ng 8086 na arkitektura ng processor. Ang 8051 ay isang pamilya ng microcontroller, na binuo ng iba't ibang mga tagagawa tulad ng Philips, Atmel, dalls, at iba pa. Ang 8051 microcontrollers ginamit sa maraming mga naka-embed na produkto mula sa maliliit na laruan ng mga bata hanggang sa malalaking sistema ng automotive.


8051 Microcontroller

8051 Microcontroller

Ang 8051 microcontroller ay ang 8-bit Arkitektura ng 'CISC' . Binubuo ito ng mga alaala, serial na komunikasyon, nakagagambala, mga input / output port at timer / counter, na binuo sa isang solong integrated chip, na na-program upang makontrol ang mga peripheral na aparato na nakakonekta dito. Ang programa ay nakaimbak sa RAM ng microcontroller ngunit bago isulat ang programa, dapat nating magkaroon ng kamalayan sa RAM samahan ng microcontroller.

Naka-embed na Programming ng System: Pagpapahayag sa Pangunahing Kaalaman

Ang bawat pag-andar ay isang koleksyon ng mga pahayag na nagsasagawa ng isang tiyak na gawain at ang koleksyon ng isa o higit pang mga pagpapaandar ay tinatawag na isang wika ng programa. Ang bawat wika ay binubuo ng ilang pangunahing mga elemento at mga patakaran sa gramatika. Ang programa sa wikang C ay idinisenyo upang gumana kasama ang hanay ng character, mga variable, uri ng data, mga pare-pareho, keyword, expression at iba pa ay ginagamit upang magsulat ng isang C program. Ang lahat ng ito ay isinasaalang-alang sa ilalim ng header file o library file at ito ay kinakatawan bilang

# isama

Naka-embed na C Programming Development

Naka-embed na C Programming Development

Ang pagpapalawak ng wikang C ay tinatawag na isang naka-embed na C na wika ng programa. Kung ihahambing sa itaas, ang naka-embed na programa sa wikang C ay mayroong ilang mga karagdagang tampok tulad ng mga uri ng data at mga keyword at header file o file ng library ay kinakatawan bilang

# isama

Naka-embed na C Karagdagang Mga Keyword

  • sbit
  • medyo
  • SFR
  • pabagu-bago
  • tukuyin ang macros

Ginamit ang 'sbit' para sa pagdedeklara ng solong PIN ng microcontroller. Halimbawa, ang LED ay konektado sa P0.1 pin, hindi inirerekumenda na ipadala ang halaga sa port pin nang direkta, una, kailangan naming ideklara ang pin na may isa pang variable pagkatapos pagkatapos naming magamit kahit saan sa programa.

Syntax: sbit a = P0 ^ 1 // idineklara ang kani-kanilang pin na may variable //
a = 0x01 // ipadala ang halaga sa port pin //

Ang 'bit' ay ginagamit para sa pagsuri sa katayuan ng variable.

Syntax: bit c // idineklara ang bit variable //
c = a // isang halaga ay itinalaga sa variable ng c //
kung (c == 1) // suriin ang kondisyon na totoo o maling //

{
… ..
……
}

Ginamit ang keyword na 'SFR' upang ma-access ang mga rehistro ng SFR sa ibang pangalan. Ang rehistro ng SFR ay tinukoy bilang isang espesyal na pag-andar ng pag-andar , naglalaman ito ng lahat ng mga peripherally na nauugnay na rehistro sa pamamagitan ng pagpapahiwatig ng address. Ang rehistro ng SFR ay idineklara ng keyword na SFR. Ang SFR keyword ay dapat nasa malalaking titik.

Syntax: SFR port = 0x00 // 0x00 ay isang port0 address na ito ay idineklara ng variable ng port //
Port = 0x01 // pagkatapos ipadala ang halaga sa port0 //
antala ()
port = 0x00
antala ()

Ang keyword na 'pabagu-bago' ay ang pinakamahalaga sa naka-embed na pag-unlad ng system. Ang variable na nagpapahayag na may pabagu-bago ng halaga ng keyword ay hindi mabago nang hindi inaasahan. Maaari itong magamit sa mga rehistro ng peripheral na naka-map na memorya, mga variable na pandaigdigan na binago ng mga ISR. Nang hindi ginagamit ang pabagu-bago ng keyword para sa paglilipat at pagtanggap ng data, magaganap ang error sa code o isang error sa pag-optimize.

Syntax: pabagu-bago ng isip k

Ang macro ay isang pangalan na ginagamit ito upang ideklara ang bloke ng mga pahayag bilang isang direktiba ng pre-processor. Kailan man gagamitin ang pangalan, pinalitan ito ng mga nilalaman ng macro. Ang makro ay kumakatawan sa # tukuyin. Ang buong mga port pin ay tinukoy ng mga macros.

Syntax: #define dat Po // ang buong port ay idineklara ng isang variable //
dat = 0x01 // data ipadala sa port0 //

Pangunahing Mga naka-embed na C Program

Ang programa ng microcontroller ay magkakaiba para sa bawat isa uri ng operating system . Kahit na maraming mga operating system na mayroon tulad ng Linux, Windows, RTOS at iba pa. Gayunpaman, ang RTOS ay may maraming mga pakinabang para sa naka-embed na pag-unlad ng system. Tinalakay ng artikulong ito ang pangunahing naka-embed na C na programa upang makabuo ng naka-embed na C na programa gamit ang isang 8051 microcontroller.

Mga Hakbang sa Programming na naka-embed na C

Mga Hakbang sa Programming na naka-embed na C

  • Ang LED blinking gamit ang 8051 microcontroller
  • Ipinapakita ang Numero sa display na 7-segment gamit ang 8051 microcontroller
  • Mga kalkulasyon ng timer / Counter at programa gamit ang 8051 microcontroller
  • Mga kalkulasyon ng Serial Communication at programa gamit ang 8051 microcontroller
  • Makagambala sa Mga Programang gumagamit ng 8051 microcontroller
  • Keypad Programming gamit ang 8051 microcontroller
  • LCD Programming na may 8051 microcontroller

LED Blinking gamit ang 8051 Microcontroller

Ang LED ay isang aparato na semiconductor na ginagamit sa maraming mga application, karamihan ay para sa hangarin na layunin. Ito ay ang paghahanap ng isang malaking hanay ng mga application bilang tagapagpahiwatig sa panahon ng pagsubok upang suriin ang bisa ng mga resulta sa iba't ibang mga yugto. Ang mga ito ay napaka-mura at madaling magagamit sa iba't ibang mga hugis, kulay, at laki. Ang mga LED ay ginagamit upang magdisenyo mga display board ng mensahe at ilaw ilaw signal signal atbp Dito ang mga LEDs ay interfaced sa PORT0 ng 8051 microcontrollers.

LED Blinking gamit ang 8051 Microcontroller

LED Blinking gamit ang 8051 Microcontroller

1. 01010101
10101010

#include // header file //
void main () // ang pagpapatupad ng programa ng punto ng //
{
unsigned int i // data type //
habang (1) // para sa tuluy-tuloy na loop //
{
P0 = 0x55 // ipadala ang halaga ng hexa sa port0 //
para sa (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // ipadala ang halaga ng hexa sa port0 //
para sa (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10,000,000

# isama

walang bisa pangunahing ()

{

hindi pinirmahan i

unsigned char j, b

habang (1)

{

P0 = 0x01

b = P0

para sa (j-0j<3000j++)

para sa (j = 0j<8j++)

{

b = b<<1

P0 = b

para sa (j-0j<3000j++)

}

}

}

3. 00001111

11110000

# isama

walang bisa pangunahing ()

{

hindi pinirmahan i

habang (1)

{

P0 = 0x0F

para sa (j-0j<3000j++)

P0 = 0xF0

para sa (j-0j<3000j++)

}

}

4. 00000001

00000011

00000111

.

.

11111111

# isama

walang bisa pangunahing ()

{

hindi pinirmahan i

unsigned char j, b

habang (1)

{

P0 = 0x01

b = P0

para sa (j-0j<3000j++)

para sa (j = 0j<8j++)

0x01

P0 = b

para sa (j-0j<3000j++)

}

}

Ipinapakita ang Mga Numero sa 7-Segment Display gamit ang 8051 Microcontroller

Ang Ipinapakita ang 7-segment ay ang pangunahing mga elektronikong ipinapakita, na ginagamit sa maraming mga sistema upang maipakita ang impormasyong bilang. Binubuo ito ng walong LEDs na konektado sa sunud-sunod na paraan upang maipakita ang mga digit mula 0 hanggang 9, kapag ang tamang mga kumbinasyon ng mga LED ay nakabukas. Maaari lamang silang magpakita ng isang digit nang paisa-isa.

Ipinapakita ang Mga Numero sa 7-Segment Display gamit ang 8051 Microcontroller

Ipinapakita ang Mga Numero sa 7-Segment Display gamit ang 8051 Microcontroller

1. WAP upang ipakita ang form na form na '0 hanggang F' sa apat na 7segment na ipinapakita?

# isama
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
walang bisa pangunahing ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
hindi ka pinirmahan, j
a = b = c = d = 1
habang (1)
{
para sa (i = 0i<10i++)
{
P2 = n [i]
para sa (j = 0j<60000j++)
}
}
}

2. WAP upang ipakita ang mga numero mula '00 hanggang 10 'sa mga display ng 7segment?

# isama
sbit a = P3 ^ 0
sbit b = P3 ^ 1
walang bisa ang display1 ()
walang bisa ang display2 ()
walang bisa na pagkaantala ()
walang bisa pangunahing ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
hindi ka pinirmahan, j
ds1 = ds2 = 0
habang (1)
{
para sa (i = 0, i<20i++)
display1 ()
display2 ()
}
}
walang bisa ang display1 ()
{
a = 1
b = 0
P2 = s [ds1]
antala ()
a = 1
b = 0
P2 = s [ds1]
antala ()
}
walang bisa ang display2 ()
{
ds1 ++
kung (ds1> = 10)
{
ds1 = 0
ds2 ++
kung (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
walang bisa na pagkaantala ()
{
hindi pinirmahan k
para sa (k = 0k<30000k++)
}

Mga Pagkalkula ng Timer / Counter at Program na gumagamit ng 8051 Microcontroller

Ang pagkaantala ay ang isa sa mga mahalagang kadahilanan sa pagbuo ng software ng aplikasyon. Gayunpaman, ang normal na pagkaantala ay hindi magbibigay ng mahalagang resulta upang mapagtagumpayan ang problemang ito para sa pagpapatupad ng pagkaantala ng timer. Ang timer at counter ay mga bahagi ng hardware ng microcontroller, na ginagamit sa maraming mga application upang maibigay ang mahalagang pagkaantala ng oras sa bilang ng mga pulso. Ang parehong mga gawain ay ipinatupad ng diskarteng software.

Pag-antala ng Timer

WAP upang makabuo ng pagkaantala ng 500us oras gamit ang T1M2 (timer1 at mode2)?

# isama

walang bisa pangunahing ()
{
unsigned char i
TMOD = 0x20 // itakda ang timer mode //
para sa (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // itakda ang pagkaantala ng oras //
TH1 = 0x00
TR1 = 1 // timer oN //
Habang (TF1 == 0) // suriin ang flag bit //
TF1 = 0
}
TR1 = 0 // timer off //
}

Karaniwang Pag-antala ng Loop

walang bisa na pagkaantala ()

{
hindi pinirmahan k
para sa (k = 0k<30000k++)
}

Mga Kalkulasyon at Program ng Serial Communication na gumagamit ng 8051 Microcontroller

Serial na komunikasyon ay karaniwang ginagamit para sa paglilipat at pagtanggap ng signal. Ang 8051 microcontroller ay mayroong Serial na komunikasyon ng UART ang mga signal na ipinadala at natanggap ng mga Rx at Tx pin. Ang UART ay kumukuha ng mga byte ng data at ipinapadala ang mga indibidwal na piraso sa sunud-sunod na pamamaraan. Ang mga rehistro ay isang paraan upang mangolekta at maiimbak ang data sa memorya. Ang UART ay isang half-duplex protocol. Ang ibig sabihin ng Half-duplex ay paglilipat at pagtanggap ng data, ngunit hindi sa parehong oras.

Mga Kalkulasyon at Program ng Serial Communication na gumagamit ng 8051 Microcontroller

Mga Kalkulasyon at Program ng Serial Communication na gumagamit ng 8051 Microcontroller

1. WAP upang maipadala ang character na 'S' sa serial window na gumamit ng 9600 bilang baud rate?

Ang 28800 ay ang maximum baud rate ng 8051 microcontroller

28800/9600 = 3

Ang baud rate na '3' ay nakaimbak sa mga timer

# isama

walang bisa pangunahing ()

{
SCON = 0x50 // simulan ang serial communication //
TNOD = 0x20 // napili ang timer mode //
TH1 = 3 // load ang baud rate //
TR1 = 1 // Timer ON //
SBUF = 'S' // itago ang character sa rehistro //
habang (TI == 0) // suriin ang makagambala rehistro //
TI = 0
TR1 = 0 // OFF ang timer //
habang (1) // tuloy-tuloy na loop //
}

2. WAP upang matanggap ang data mula sa hyperterminal at ipadala ang data na iyon sa PORT 0 ng Microcontroller gamit ang 9600 baud?

Ang 28800 ay ang maximum baud rate ng 8051 microcontroller

28800/9600 = 3

Ang baud rate na '3' ay nakaimbak sa mga timer

# isama

walang bisa pangunahing ()
{
SCON = 0x50 // simulan ang serial communication //
TMOD = 0x20 // napili ang timer mode //
TH1 = 3 // load ang baud rate //
TR1 = 1 // Timer ON //
PORT0 = SBUF // ipadala ang data mula sa SBUF sa port0 //
habang (RI == 0) // suriin ang makagambala rehistro //
RI = 0
TR1 = 0 // OFF ang timer //
habang (1) // itigil ang programa kapag natanggap ang character //
}

Makagambala sa Mga Programang gumagamit ng 8051 Microcontroller

Ang makagambala ay isang senyas na pinipilit na ihinto ang kasalukuyang programa at agad na maisagawa ang iba pang programa. Ang 8051 microcontroller ay nagbibigay ng 6 makagambala, na panloob at panlabas makagambala mga mapagkukunan . Kapag naganap ang abala ay i-pause ng microcontroller ang kasalukuyang gawain at dumalo sa makagambala sa pamamagitan ng pagpapatupad ng ISR pagkatapos ay bumalik ang microcontroller sa kamakailang gawain.

WAP upang maisagawa ang operasyon ng kaliwang shift kapag naganap ang pagkagambala ng timer 0 pagkatapos ay gawin ang nakakagambala na operasyon para sa P0 sa pangunahing pag-andar?

# isama

unsigned char b

walang bisa timer0 () makagambala 2 // napiling timer0 makagambala //
{
b = 0x10
P1 = b<<2
}
walang bisa pangunahing ()
{
unsigned char a, i
IE = 0x82 // paganahin ang timer0 makagambala //
TMOD = 0x01
TLo = 0xFC // makagambala sa timer //
TH1 = 0xFB
TR0 = 1
a = 0x00
habang (1)
{
para sa (i = 0i<255i++)
{
isang ++
Po = a
}
}
}

Keypad Programming gamit ang 8051 Microcontroller

Ang keypad ng matrix ay isang aparatong paglipat ng analog, na ginagamit sa maraming mga naka-embed na application upang payagan ang gumagamit na gawin ang mga kinakailangang gawain. A matrix keypad binubuo ng isang pag-aayos ng mga switch sa matrix format sa mga hilera at haligi. Ang mga hilera at haligi ay konektado sa microcontroller tulad ng ang hilera ng mga switch ay konektado sa isang pin at ang mga switch sa bawat haligi ay konektado sa isa pang pin, pagkatapos ay isagawa ang mga pagpapatakbo.

Keypad Programming gamit ang 8051 Microcontroller

Keypad Programming gamit ang 8051 Microcontroller

1. WAP upang i-toggle ang LED sa pamamagitan ng pagpindot sa switch

# isama
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
walang bisa na pagkaantala ()
walang bisa pangunahing ()
{
habang (1)
{
a = 0
b = 1
c = 1
d = 1
antala ()
a = 1
b = 0
c = 1
d = 1
walang bisa na pagkaantala ()
{
unsigned char i
TMOD = 0x20 // itakda ang timer mode //
para sa (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // itakda ang pagkaantala ng oras //
TH1 = 0x00
TR1 = 1 // timer oN //
Habang (TF1 == 0) // suriin ang flag bit //
TF1 = 0
}
TR1 = 0 // timer off //
}

2. WAP upang I-ON ON ang LED sa pamamagitan ng pagpindot sa key '1' sa keypad?

# isama

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

walang bisa pangunahing ()
{

r1 = 0
kung (c1 == 0)
{

LED = 0xff
}
}

3. WAP upang ipakita ang bilang na 0,1,2,3,4,5 sa pitong segment sa pamamagitan ng pagpindot sa kani-kanilang susi sa keypad?

# isama

sbit r1 = P2 ^ 0

sbit c1 = P3 ^ 0

sbit r2 = P2 ^ 0

sbit c2 = P3 ^ 0

sbit a = P0 ^ 1

walang bisa pangunahing ()

{

r1 = 0 a = 1

kung (c1 == 0)

{

a = 0xFC

}

Kung (c2 == 0)

{

a = 0x60

}

kung (c3 == 0)

{

a = 0xDA

}

Kung (c4 == 0)

{

a = 0xF2

}

}

LCD Programming kasama ang 8051 Microcontroller

Ang LCD display ay isang elektronikong aparato, na madalas na ginagamit sa maraming mga application para sa pagpapakita ng impormasyon sa isang format ng teksto o imahe. Ang LCD ay isang display na madaling magpakita ng mga character sa screen nito. Ang LCD display ay may binubuo na mga linya ng 8-data at mga linya ng 3-control na ginagamit upang mag-interface sa microcontroller.

LCD Programming kasama ang 8051 Microcontroller

LCD Programming kasama ang 8051 Microcontroller

I-WAP upang maipakita ang 'EDGEFX KITS' sa LED display?

# isama
#define kam P0

voidlcd_initi ()
voidlcd_dat (unsigned char)
voidlcd_cmd (unsigned char)
walang bisa na pagkaantala ()
void display (unsigned char * s, unsigned char r)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit sa = P2 ^ 2
walang bisa pangunahing ()
{

lcd_initi ()
lcd_cmd (0x80)
antala (100)
lcd_cmd (0xc0)
display ('edgefx kit', 11)
habang (1)
}

void display (unsigned char * s, unsigned char r)
{
hindi pinirmahan w
para sa (w = 0w{
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
antala (100)
lcd_cmd (0 × 38)
antala (100)
lcd_cmd (0 × 06)
antala (100)
lcd_cmd (0x0c)
antala (100)
}
voidlcd_dat (unsigned char dat)
{
suklay = na
rs = 1
rw = 0
sa = 1
antala (100)
sa = 0
}
}
voidlcd_cmd (unsigned char cmd)
{
dumating = cmd
rs = 0
rw = 0

sa = 1
antala (100)
sa = 0
}
walang bisa ang pagkaantala (unsigned int n)
{

hindi pinirmahan a
para sa (a = 0a}

Inaasahan kong nagbibigay ang artikulong ito ng isang pangunahing impormasyon tungkol sa naka-embed na pag-program ng system gamit ang 8051 microcontroller na may ilang halimbawang mga programa. Para sa detalyadong naka-embed na tutorial sa C programming mangyaring i-post ang iyong mga komento at query sa seksyon ng komento sa ibaba.