Уграђени Ц водич за програмирање са Кеил језиком

Испробајте Наш Инструмент За Елиминисање Проблема





Ембеддед Ц је најпопуларнији програмски језик у пољу софтвера за развој електронских уређаја. Сваки процесор је повезан са уграђеним софтвером. Програмирање на уграђеном Ц језику игра главну улогу у обављању одређених функција од стране процесора. У нашем свакодневном животу често користимо многе електронске уређаје као што су машине за прање веша, мобилни телефони, дигитални фотоапарати и тако даље, који раде на основу микроконтролера које програмира уграђени Ц.

Програмирање уграђеног система

Програмирање уграђеног система



Написани Ц код је поузданији, преносивији и скалабилнији и заправо много лакши за разумевање. Први и најважнији алат је уграђени софтвер који одлучује о раду уграђеног система. Уграђени програмски језик Ц најчешће се користи за програмирање микроконтролера.


Водич за програмирање уграђеног Ц (8051)

За писање програма уграђени дизајнери морају имати довољно знања о хардверу одређених процесора или контролера, јер је уграђено програмирање Ц пуна техника програмирања која се односи на хардвер.



Водич за програмирање

Водич за програмирање

Раније су многе уграђене апликације развијене помоћу програмирања на нивоу монтаже. Међутим, нису обезбедили преносивост за превазилажење овог проблема појавом различитих језика високог нивоа попут Ц, ЦОБОЛ и Пасцал. Међутим, језик Ц био је тај који је широко прихваћен развој уграђених система , и даље то чини.

Уграђени систем

Уграђени систем је дефинисан као комбинација уграђеног програмског софтвера Ц и хардверског дела који се углавном састоји од микроконтролера и намењен је обављању одређеног задатка. Ове врсте уграђених система користе се у нашем свакодневном животу као што су машине за прање веша и видео снимачи, фрижидери и тако даље. Уграђени систем су први пут представили микроконтролери 8051.

Уграђени систем

Уграђени систем

Увод у микроконтролер 8051

Микроконтролер 8051 је основни микроконтролер, први пут га је представила ’Интел Цорпоратион’ од 1970. Развио га је процесорска архитектура 8086. 8051 је породица микроконтролера, коју су развили различити произвођачи као што су Пхилипс, Атмел, даллс и тако даље. Микроконтролери 8051 је коришћен у многим уграђеним производима од малих дечијих играчака до великих аутомобилских система.


8051 Микроконтролер

8051 Микроконтролер

Микроконтролер 8051 је 8-битни „ЦИСЦ“ архитектура . Састоји се од меморија, серијске комуникације, прекида, улазно / излазних портова и тајмера / бројача, уграђених у један интегрисани чип, који је програмиран за управљање периферним уређајима који су са њим повезани. Програм се чува у РАМ-у микроконтролера, али пре писања програма морамо знати РАМ-а организација микроконтролера.

Програмирање уграђеног система: Декларација о основама

Свака функција је збирка израза који извршавају одређени задатак, а збирка једне или више функција назива се програмски језик. Сваки језик се састоји од неких основних елемената и граматичких правила. Програмирање на Ц језику је дизајнирано да функционише са скупом знакова, променљиве, типови података, константе, кључне речи, изрази и тако даље користе се за писање Ц програма. Све ово се разматра под заглављем или датотеком библиотеке и представља се као

#инцлуде

Развој уграђеног Ц програмирања

Развој уграђеног Ц програмирања

Проширење језика Ц назива се уграђеним програмским језиком Ц. У поређењу са горе наведеним, уграђени програм на језику Ц има неке додатне функције као што су типови података и кључне речи, а датотека заглавља или датотека библиотеке представљена је као

#инцлуде

Додатне кључне речи за уграђени Ц

  • сбит
  • мало
  • СФР
  • испарљив
  • дефинишу макронаредбе

„Сбит“ се користи за декларисање једног ПИН-а микроконтролера. На пример, ЛЕД је повезан на пин П0.1, не препоручује се директно слање вредности на пин порта, прво морамо да пријавимо пин са другом променљивом, након што можемо да користимо било где у програму.

Синтакса: сбит а = П0 ^ 1 // декларише одговарајући пин са променљивом //
а = 0к01 // пошаљи вредност на пин порта //

„Бит“ се користи за проверу статуса променљиве.

Синтакса: бит ц // декларише бит променљиву //
ц = а // вредност је додељена променљивој ц //
иф (ц == ​​1) // проверити услов тачно или нетачно //

{
… ..
……
}

Кључна реч „СФР“ користи се за приступ СФР регистрима под другим именом. СФР регистар дефинисан као а регистар посебне функције , садржи све регистре повезане са периферијом назначујући адресу. СФР регистар је декларисан кључном речи СФР. Кључна реч СФР мора бити великим словима.

Синтакса: СФР порт = 0к00 // 0к00 је адреса порт0 која је декларисана променљивом порта //
Порт = 0к01 //, а затим вредност пошаљите на порт0 //
кашњење ()
порт = 0к00
кашњење ()

Кључна реч „волатиле“ је најважнија у развоју уграђеног система. Променљива која се декларише са променљивом вредношћу кључне речи не може се неочекивано променити. Може се користити у меморијски мапираним периферним регистрима, глобалним променљивим модификованим ИСР-овима. Без употребе променљиве кључне речи за пренос и пријем података, догодиће се грешка у коду или грешка у оптимизацији.

Синтакса: волатиле инт к

Макро је назив који се користи за декларисање блока наредби као претпроцесорске директиве. Кад год се име користи, оно се замењује садржајем макронаредбе. Макронаредбе представљају #дефине. Цели порт пинови су дефинисани макроима.

Синтакса: #дефине дат По // цео порт је декларисан променљивом //
дат = 0к01 // подаци се шаљу на порт0 //

Основни уграђени Ц програми

Програмирање микроконтролера ће се разликовати за сваки од њих врста оперативног система . Иако постоји много оперативних система као што су Линук, Виндовс, РТОС и тако даље. Међутим, РТОС има неколико предности за развој уграђеног система. Овај чланак говори о основном уграђеном Ц програмирању за развој уграђеног Ц програмирања помоћу 8051 микроконтролера.

Кораци програмирања за уграђени Ц

Кораци програмирања за уграђени Ц

  • ЛЕД трепери помоћу микроконтролера 8051
  • Приказ броја на 7-сегментном дисплеју помоћу 8051 микроконтролера
  • Прорачуни тајмера / бројача и програмирање помоћу микроконтролера 8051
  • Прорачуни и програми серијске комуникације помоћу микроконтролера 8051
  • Програми прекида помоћу микроконтролера 8051
  • Програмирање тастатуре помоћу микроконтролера 8051
  • ЛЦД програмирање са 8051 микроконтролером

ЛЕД трепће помоћу микроконтролера 8051

ЛЕД је полупроводнички уређај који се користи у многим апликацијама, углавном у сврху индикације. Проналази огроман спектар примена као показатеља током теста за проверу ваљаности резултата у различитим фазама. Веома су јефтини и лако доступни у разним облицима, бојама и величинама. ЛЕД диоде се користе за дизајн табле за приказ порука и сигнална светла за контролу саобраћаја итд. Овде су ЛЕД диоде повезане са ПОРТ0 микроконтролера 8051.

ЛЕД трепће помоћу микроконтролера 8051

ЛЕД трепће помоћу микроконтролера 8051

1. 01010101
10101010

#инцлуде // датотека заглавља //
воид маин () // статистичка тачка извршења програма //
{
унсигнед инт и // тип података //
вхиле (1) // за континуирану петљу //
{
П0 = 0к55 // пошаљи хекса вредност на порт0 //
за (и = 0и<30000i++) //normal delay//
П0 = 0к3АА // пошаљи хекса вредност на порт0 //
за (и = 0и<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10.000.000

#инцлуде

воид маин ()

{

непотписан и

непотписани знак ј, б

док (1)

{

П0 = 0к01

б = П0

за (ј-0ј<3000j++)

за (ј = 0ј<8j++)

{

б = б<<1

П0 = б

за (ј-0ј<3000j++)

}

}

}

3. 00001111

11110000

#инцлуде

воид маин ()

{

непотписан и

док (1)

{

П0 = 0к0Ф

за (ј-0ј<3000j++)

П0 = 0кФ0

за (ј-0ј<3000j++)

}

}

4. 00000001

00000011

00000111

.

.

11111111

#инцлуде

воид маин ()

{

непотписан и

непотписани знак ј, б

док (1)

{

П0 = 0к01

б = П0

за (ј-0ј<3000j++)

за (ј = 0ј<8j++)

0к01

П0 = б

за (ј-0ј<3000j++)

}

}

Приказивање бројева на 7-сегментном дисплеју помоћу микроконтролера 8051

Тхе 7-сегментни дисплеји је основни електронски дисплеј, који се користи у многим системима за приказ нумеричких информација. Састоји се од осам ЛЕД диода које су повезане секвенцијално тако да приказују цифре од 0 до 9, када су укључене одговарајуће комбинације ЛЕД диода. Могу истовремено приказати само једну цифру.

Приказивање бројева на 7-сегментном дисплеју помоћу микроконтролера 8051

Приказивање бројева на 7-сегментном дисплеју помоћу микроконтролера 8051

1. ВАП за приказ бројева од „0 до Ф“ на четири 7-сегментна дисплеја?

#инцлуде
сбит а = П3 ^ 0
сбит б = П3 ^ 1
сбит ц = П3 ^ 2
сбит д = П3 ^ 3
воид маин ()
{
унсигнедцхар н [10] = {0 × 40,0кФ9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0кФ8,0кЕ00,0 × 10}
нисте потписали вас, ј
а = б = ц = д = 1
док (1)
{
за (и = 0и<10i++)
{
П2 = н [и]
за (ј = 0ј<60000j++)
}
}
}

2. ВАП за приказ бројева од ’00 до 10 ’на 7сегментним дисплејима?

#инцлуде
сбит а = П3 ^ 0
сбит б = П3 ^ 1
воид дисплаи1 ()
воид дисплаи2 ()
воид делаи ()
воид маин ()
{
унсигнедцхар н [10] = {0 × 40,0кФ9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0кФ8,0кЕ00,0 × 10}
нисте потписали вас, ј
дс1 = дс2 = 0
док (1)
{
за (и = 0, и<20i++)
дисплаи1 ()
дисплаи2 ()
}
}
воид дисплаи1 ()
{
а = 1
б = 0
П2 = с [дс1]
кашњење ()
а = 1
б = 0
П2 = с [дс1]
кашњење ()
}
воид дисплаи2 ()
{
дс1 ++
ако (дс1> = 10)
{
дс1 = 0
дс2 ++
ако (дс2> = 10)
{
дс1 = дс2 = 0
}
}
}
воид делаи ()
{
непотписан к
за (к = 0к<30000k++)
}

Израчунавање и програмирање тајмера / бројача помоћу микроконтролера 8051

Кашњење је један од важних фактора у развоју апликативног софтвера. Међутим, нормално одлагање неће дати драгоцени резултат за превазилажење овог проблема због примене одлагања тајмера. Тхе тајмери ​​и бројачи су хардверске компоненте микроконтролера, који се користи у многим апликацијама за обезбеђивање драгоценог кашњења помоћу бројача импулса. Оба задатка имплементирана су софтверском техником.

Одгода времена

ВАП да генерише кашњење од 500ус користећи Т1М2 (тајмер1 и режим2)?

#инцлуде

воид маин ()
{
непотписани знак и
ТМОД = 0к20 // подеси режим тајмера //
за (и = 0и<2i++) //double the time daly//
{
ТЛ1 = 0к19 // подеси временско кашњење //
ТХ1 = 0к00
ТР1 = 1 // тајмер ОН //
Вхиле (ТФ1 == 0) // провери бит заставице //
ТФ1 ​​= 0
}
ТР1 = 0 // тајмер искључен //
}

Кашњење нормалне петље

воид делаи ()

{
непотписан к
за (к = 0к<30000k++)
}

Прорачуни и програми серијске комуникације помоћу микроконтролера 8051

Серијска комуникација се обично користи за пренос и пријем сигнала. Микроконтролер 8051 се састоји од УАРТ серијска комуникација сигнали које преносе и примају Рк и Тк пинови. УАРТ узима бајтове података и узастопно шаље појединачне битове. Регистри су начин за прикупљање и чување података у меморији. УАРТ је полудуплексни протокол. Полудуплекс значи пренос и пријем података, али не истовремено.

Прорачуни и програми серијске комуникације помоћу микроконтролера 8051

Прорачуни и програми серијске комуникације помоћу микроконтролера 8051

1. Да ли ВАП за пренос знака „С“ у серијски прозор користи 9600 као брзину преноса?

28800 је максимална брзина преноса података микроконтролера 8051

28800/9600 = 3

Та брзина преноса „3“ се чува у тајмерима

#инцлуде

воид маин ()

{
СЦОН = 0к50 // покретање серијске комуникације //
ТНОД = 0к20 // изабрао режим тајмера //
ТХ1 = 3 // учитавање брзине преноса //
ТР1 = 1 // Тајмер УКЉ //
СБУФ = ’С’ // чување знака у регистру //
вхиле (ТИ == 0) // провери регистар прекида //
ТИ = 0
ТР1 = 0 // ИСКЉУЧИ тајмер //
вхиле (1) // непрекидна петља //
}

2. ВАП да бисте примили податке са хипертерминала и послали их у ПОРТ 0 микроконтролера користећи 9600 бауд?

28800 је максимална брзина преноса података микроконтролера 8051

28800/9600 = 3

Та брзина преноса „3“ се чува у тајмерима

#инцлуде

воид маин ()
{
СЦОН = 0к50 // покретање серијске комуникације //
ТМОД = 0к20 // одабран режим тајмера //
ТХ1 = 3 // учитавање брзине преноса //
ТР1 = 1 // Тајмер УКЉ //
ПОРТ0 = СБУФ // пошаљи податке из СБУФ-а на порт0 //
вхиле (РИ == 0) // провери регистар прекида //
РИ = 0
ТР1 = 0 // ИСКЉУЧИ тајмер //
вхиле (1) // зауставити програм када се прими карактер //
}

Програми прекида помоћу микроконтролера 8051

Прекид је сигнал који присиљава заустављање тренутног програма и извршавање другог програма одмах. Микроконтролер 8051 пружа 6 прекида који су интерни и екстерни извори прекида . Када се догоди прекид, микроконтролер заустави тренутни задатак и приступи прекиду извршавањем ИСР-а, тада се микроконтролер враћа на недавни задатак.

ВАП да изврши операцију померања улево када дође до прекида тајмера 0, затим изврши операцију прекида за П0 у главној функцији?

#инцлуде

непотписани знак б

воид тимер0 () интеррупт 2 // изабрани тимер0 интеррупт //
{
б = 0к10
П1 = б<<2
}
воид маин ()
{
непотписани цхар а, тј
ИЕ = 0к82 // омогући тајмер0 прекид //
ТМОД = 0к01
ТЛо = 0кФЦ // тајмер прекида //
ТХ1 = 0кФБ
ТР0 = 1
а = 0к00
док (1)
{
за (и = 0и<255i++)
{
а ++
По = а
}
}
}

Програмирање тастатуре помоћу микроконтролера 8051

Матрична тастатура је аналогни комутациони уређај који се користи у многим уграђеним апликацијама како би се кориснику омогућило да изврши потребне задатке. А. матрична тастатура састоји се од распореда прекидача у матричном формату у редовима и колонама. Редови и колоне су повезани са микроконтролером тако да су ред прекидача повезани са једним пином, а прекидачи у свакој колони са другим пином, а затим извршавају операције.

Програмирање тастатуре помоћу микроконтролера 8051

Програмирање тастатуре помоћу микроконтролера 8051

1. ВАП за пребацивање ЛЕД притиском на прекидач

#инцлуде
сбит а = П3 ^ 0
сбит б = П3 ^ 1
сбит ц = П3 ^ 2
сбит д = П3 ^ 3
воид делаи ()
воид маин ()
{
док (1)
{
а = 0
б = 1
ц = 1
д = 1
кашњење ()
а = 1
б = 0
ц = 1
д = 1
воид делаи ()
{
непотписани знак и
ТМОД = 0к20 // подеси режим тајмера //
за (и = 0и<2i++) //double the time daly//
{
ТЛ1 = 0к19 // подеси временско кашњење //
ТХ1 = 0к00
ТР1 = 1 // тајмер ОН //
Вхиле (ТФ1 == 0) // провери бит заставице //
ТФ1 ​​= 0
}
ТР1 = 0 // тајмер искључен //
}

2. ВАП за укључивање ЛЕД диоде притиском на тастер „1“ на тастатури?

#инцлуде

сбит р1 = П2 ^ 0
сбит ц1 = П3 ^ 0
сбит ЛЕД = П0 ^ 1

воид маин ()
{

р1 = 0
ако (ц1 == 0)
{

ЛЕД = 0кфф
}
}

3. ВАП за приказ броја 0,1,2,3,4,5 на седам сегмената притиском на одговарајући тастер на тастатури?

#инцлуде

сбит р1 = П2 ^ 0

сбит ц1 = П3 ^ 0

сбит р2 = П2 ^ 0

сбит ц2 = П3 ^ 0

сбит а = П0 ^ 1

воид маин ()

{

р1 = 0 а = 1

ако (ц1 == 0)

{

а = 0кФЦ

}

Ако је (ц2 == 0)

{

а = 0к60

}

ако (ц3 == 0)

{

а = 0кДА

}

Ако је (ц4 == 0)

{

а = 0кФ2

}

}

ЛЦД програмирање са 8051 микроконтролером

Тхе ЛЦД дисплеј је електронски уређај који се често користи у многим апликацијама за приказивање информација у тексту или формату слике. ЛЦД је заслон који на свом екрану може лако приказати знакове. ЛЦД екран се састоји од 8 линија података и 3 контролне линије које се користе за повезивање са микроконтролером.

ЛЦД програмирање са 8051 микроконтролером

ЛЦД програмирање са 8051 микроконтролером

ВАП за приказ „ЕДГЕФКС КИТС“ на ЛЕД дисплеју?

#инцлуде
#дефине кам П0

воидлцд_инити ()
воидлцд_дат (непотписани знак)
воидлцд_цмд (непотписани знак)
воид делаи ()
приказ празнине (непотписани цхар * с, непотписани цхар р)

сбитрс = П2 ^ 0
сбитрв = П2 ^ 1
сбит на = П2 ^ 2
воид маин ()
{

лцд_инити ()
лцд_цмд (0к80)
кашњење (100)
лцд_цмд (0кц0)
дисплеј („едгефк китс“, 11)
док (1)
}

приказ празнине (непотписани цхар * с, непотписани цхар р)
{
непотписана ж
за (в = 0в{
лцд_дата (с [в])
}
}
воидлцд_инити ()
{
лцд_цмд (0 × 01)
кашњење (100)
лцд_цмд (0 × 38)
кашњење (100)
лцд_цмд (0 × 06)
кашњење (100)
лцд_цмд (0к0ц)
кашњење (100)
}
воидлцд_дат (непотписани цхар дат)
{
чешаљ = то
рс = 1
рв = 0
у = 1
кашњење (100)
у = 0
}
}
воидлцд_цмд (непотписани цхар цмд)
{
дошао = цмд
рс = 0
рв = 0

у = 1
кашњење (100)
у = 0
}
одлагање празнине (непотписано инт н)
{

непотписан а
за (а = 0а}

Надам се да овај чланак даје основне информације о програмирању уграђеног система помоћу микроконтролера 8051 са неколико примера програма. За детаљан водич за програмирање на уграђеном Ц објавите своје коментаре и упите у одељку за коментаре испод.