Вграден урок за програмиране C с Keil Language

Опитайте Нашия Инструмент За Премахване На Проблемите





Embedded C е най-популярният език за програмиране в софтуерната област за разработване на електронни джаджи. Всеки процесор е свързан с вграден софтуер. Вградено C програмиране играе основна роля при изпълнението на специфични функции от процесора. В ежедневния си живот често използваме много електронни устройства като перални машини, мобилни телефони, цифров фотоапарат и така нататък ще работят въз основа на микроконтролери, програмирани от вграден C.

Вградено системно програмиране

Вградено системно програмиране



Написаният C код е по-надежден, преносим и мащабируем и всъщност много по-лесен за разбиране. Първият и основен инструмент е вграденият софтуер, който решава работата на вградената система. Вграденият език за програмиране C се използва най-често за програмиране на микроконтролерите.


Урок за програмиране на вграден C (8051)

За да напишат програмата, вградените дизайнери трябва да имат достатъчно познания за хардуера на определени процесори или контролери, тъй като вграденото програмиране C е пълна техника, свързана с хардуера.



Урок за програмиране

Урок за програмиране

По-рано много вградени приложения бяха разработени чрез използване на програмиране на ниво сборка. Те обаче не осигуриха преносимост за преодоляване на този проблем с появата на различни езици на високо ниво като C, COBOL и Pascal. Въпреки това, езикът C получи широко признание за разработване на приложения за вградени системи , и продължава да го прави.

Вградена система

Вградената система се дефинира като комбинация от вграден софтуерен и хардуерен софтуер за програмиране на C, състоящ се предимно от микроконтролери и е предназначена да изпълнява конкретната задача. Този тип вградени системи се използват в нашето ежедневие като перални машини и видео рекордери, хладилници и така нататък. Вградената система е представена за първи път от микроконтролерите 8051.

Вградена система

Вградена система

Въведение в микроконтролера 8051

Микроконтролерът 8051 е основен микроконтролер, за първи път е представен от ‘Intel Corporation’ от 1970 г. Той е разработен от архитектурата на процесора 8086. 8051 е семейство на микроконтролера, което е разработено от различни производители като Philips, Atmel, dalls и т.н. Микроконтролерите 8051 е бил използван в много вградени продукти от малки детски играчки до големи автомобилни системи.


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

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

Микроконтролерът 8051 е 8-битовият „CISC“ архитектура . Състои се от памет, серийна комуникация, прекъсвания, входно / изходни портове и таймер / броячи, вградени в един интегриран чип, който е програмиран да управлява периферните устройства, които са свързани с него. Програмата се съхранява в RAM на микроконтролера, но преди да напишем програмата, трябва да сме наясно с RAM организация на микроконтролера.

Програмиране на вградена система: Основна декларация

Всяка функция е колекция от изрази, които изпълняват определена задача и колекцията от една или повече функции се нарича език за програмиране. Всеки език се състои от някои основни елементи и граматични правила. Програмирането на език C е проектирано да функционира с набор от символи, променливи, типове данни, константи, ключови думи, изрази и т.н. се използват за писане на програма C. Всички те са разгледани под заглавния файл или библиотечен файл и той е представен като

#include

Разработване на вградено C програмиране

Разработване на вградено C програмиране

Разширението на езика C се нарича вграден език за програмиране C. В сравнение с горното, вграденото програмиране на език C има някои допълнителни функции като типове данни и ключови думи и заглавният файл или файлът на библиотеката се представя като

#include

Вградени C допълнителни ключови думи

  • sbit
  • малко
  • SFR
  • летлив
  • дефинират макроси

“Sbit” се използва за деклариране на единичен ПИН на микроконтролера. Например, LED е свързан към P0.1 пин, не се препоръчва да изпращате стойността директно към пина на порта, първо, трябва да декларираме пина с друга променлива, след което можем да използваме навсякъде в програмата.

Синтаксис: sbit a = P0 ^ 1 // декларира съответния пин с променлива //
a = 0x01 // изпратете стойността към пина на порта //

„Битът“ се използва за проверка на състоянието на променливата.

Синтаксис: бит c // декларира битовата променлива //
c = a // на променливата c се присвоява стойност //
if (c == 1) // проверяваме условието true или false //

{
...
......
}

Ключовата дума “SFR” се използва за достъп до регистрите SFR с друго име. SFR регистърът, дефиниран като a регистър със специални функции , той съдържа всички периферно свързани регистри чрез посочване на адреса. SFR регистърът се декларира от ключовата дума SFR. Ключовата дума SFR трябва да бъде с главни букви.

Синтаксис: SFR порт = 0x00 // 0x00 е порт0 адрес, който е деклариран от променлива на порт //
Port = 0x01 // след това изпратете стойността на port0 //
забавяне ()
порт = 0x00
забавяне ()

Ключовата дума „volatile“ е най-важната при разработването на вградена система. Променливата, която декларира с променливата стойност на ключовата дума, не може да бъде променена неочаквано. Може да се използва в картографирани в паметта периферни регистри, глобални променливи, модифицирани от ISR. Без да се използва летливата ключова дума за предаване и получаване на данни, ще възникне грешка в кода или грешка при оптимизацията.

Синтаксис: volatile int k

Макросът е име, с което се използва за деклариране на блока от оператори като директива преди процесора. Винаги, когато името се използва, то се заменя със съдържанието на макроса. Макросите представляват #define. Целите изводи на портовете се дефинират от макросите.

Синтаксис: #define dat Po // целият порт е деклариран от променлива //
dat = 0x01 // данните се изпращат до port0 //

Основни вградени C програми

Програмирането на микроконтролера ще се различава за всеки тип операционна система . Въпреки че съществуват много операционни системи като Linux, Windows, RTOS и т.н. RTOS обаче има няколко предимства за разработката на вградена система. Тази статия разглежда основното вградено C програмиране за разработване на вградено C програмиране с помощта на 8051 микроконтролер.

Вградени стъпки за програмиране C

Вградени стъпки за програмиране C

  • LED мига, използвайки с микроконтролер 8051
  • Показване на номера на 7-сегментен дисплей с помощта на 8051 микроконтролер
  • Изчисления на таймера / брояча и програмиране с помощта на микроконтролер 8051
  • Изчисления за последователна комуникация и програмиране с помощта на микроконтролер 8051
  • Прекъсване на програми с помощта на микроконтролер 8051
  • Програмиране на клавиатура с помощта на микроконтролер 8051
  • LCD програмиране с 8051 микроконтролер

LED мига с помощта на микроконтролер 8051

Светодиодът е полупроводниково устройство, което се използва в много приложения, най-вече за индикация. Той открива огромен набор от приложения като индикатори по време на теста, за да провери валидността на резултатите на различни етапи. Те са много евтини и лесно достъпни в различни форми, цветове и размери. Светодиодите се използват за проектиране табла за показване на съобщения и сигнални светлини за контрол на движението и т.н. Тук светодиодите са свързани с PORT0 на микроконтролерите 8051.

LED мига с помощта на микроконтролер 8051

LED мига с помощта на микроконтролер 8051

1. 01010101
10101010

#include // заглавен файл //
void main () // точка за изпълнение на програмата //
{
неподписан int i // тип данни //
while (1) // за непрекъснат цикъл //
{
P0 = 0x55 // изпращаме шестнадесетичната стойност към порта0 //
за (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // изпрати шестнадесетичната стойност към порта0 //
за (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10 000 000

#include

void main ()

{

неподписан i

неподписан знак j, b

докато (1)

{

P0 = 0x01

b = P0

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

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

{

b = b<<1

P0 = b

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

}

}

}

3. 00001111

11110000

#include

void main ()

{

неподписан i

докато (1)

{

P0 = 0x0F

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

P0 = 0xF0

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

}

}

4. 00000001

00000011

00000111

.

.

11111111

#include

void main ()

{

неподписан i

неподписан знак j, b

докато (1)

{

P0 = 0x01

b = P0

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

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

0x01

P0 = b

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

}

}

Показване на числа на 7-сегментен дисплей с помощта на микроконтролер 8051

The 7-сегментни дисплеи е основните електронни дисплеи, които се използват в много системи за показване на цифровата информация. Състои се от осем светодиода, които са свързани последователно, така че да показват цифри от 0 до 9, когато са включени подходящи комбинации от светодиоди. Те могат да показват само една цифра наведнъж.

Показване на числа на 7-сегментен дисплей с помощта на микроконтролер 8051

Показване на числа на 7-сегментен дисплей с помощта на микроконтролер 8051

1. WAP за показване на числата от ‘0 до F’ на четири 7-сегментни дисплея?

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
не сте подписали, j
a = b = c = d = 1
докато (1)
{
за (i = 0i<10i++)
{
P2 = n [i]
за (j = 0j<60000j++)
}
}
}

2. WAP за показване на числата от ’00 до 10 ’на 7-сегментни дисплеи?

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
дисплей за празнота1 ()
дисплей за празнота2 ()
забавяне на празнотата ()
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
не сте подписали, j
ds1 = ds2 = 0
докато (1)
{
за (i = 0, i<20i++)
display1 ()
display2 ()
}
}
дисплей за празнота1 ()
{
a = 1
b = 0
P2 = s [ds1]
забавяне ()
a = 1
b = 0
P2 = s [ds1]
забавяне ()
}
дисплей за празнота2 ()
{
ds1 ++
ако (ds1> = 10)
{
ds1 = 0
ds2 ++
ако (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
забавяне на празнотата ()
{
неподписан к
за (k = 0k<30000k++)
}

Изчисляване на таймер / брояч и програмиране с помощта на микроконтролер 8051

Забавянето е един от важните фактори при разработването на приложен софтуер. Нормалното закъснение обаче няма да даде ценния резултат за преодоляване на този проблем за прилагане на закъснението с таймера. The таймери и броячи са хардуерни компоненти на микроконтролера, който се използва в много приложения, за да осигури ценното закъснение във времето с броя импулси. И двете задачи се изпълняват от софтуерната техника.

Забавяне на таймера

WAP, за да генерира закъснение от 500us, използвайки T1M2 (таймер1 и режим2)?

#include

void main ()
{
неподписан знак i
TMOD = 0x20 // задаване на режим на таймера //
за (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // задаване на времезакъснение //
TH1 = 0x00
TR1 = 1 // таймер oN //
While (TF1 == 0) // проверете бита на флага //
TF1 = 0
}
TR1 = 0 // таймерът е изключен //
}

Забавяне на нормална верига

забавяне на празнотата ()

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

Изчисления и програма за последователна комуникация с помощта на микроконтролер 8051

Последователната комуникация обикновено се използва за предаване и приемане на сигнала. Микроконтролерът 8051 се състои UART серийна комуникация сигналите, предадени и приети от щифтовете Rx и Tx. UART взема байтове данни и изпраща отделните битове последователно. Регистрите са начин за събиране и съхраняване на данните в паметта. UART е полудуплексен протокол. Полудуплекс означава прехвърляне и получаване на данни, но не едновременно.

Изчисления и програма за последователна комуникация с помощта на микроконтролер 8051

Изчисления и програма за последователна комуникация с помощта на микроконтролер 8051

1. WAP за предаване на символа „S“ към серийния прозорец използва 9600 като скорост на предаване?

28800 е максималната скорост на предаване на микроконтролера 8051

28800/9600 = 3

Тази скорост на предаване „3“ се съхранява в таймерите

#include

void main ()

{
SCON = 0x50 // стартиране на серийната комуникация //
TNOD = 0x20 // избра режим на таймера //
TH1 = 3 // зареждане на скоростта на предаване //
TR1 = 1 // Таймер ВКЛ //
SBUF = ’S’ // съхраняваме символа в регистъра //
while (TI == 0) // проверете регистъра на прекъсванията //
TI = 0
TR1 = 0 // ИЗКЛЮЧВАНЕ на таймера //
while (1) // непрекъснат цикъл //
}

2. WAP, за да получите данните от хипертерминала и да ги изпратите до PORT 0 на микроконтролера, използвайки 9600 бода?

28800 е максималната скорост на предаване на микроконтролера 8051

28800/9600 = 3

Тази скорост на предаване „3“ се съхранява в таймерите

#include

void main ()
{
SCON = 0x50 // стартиране на серийната комуникация //
TMOD = 0x20 // избра режим на таймера //
TH1 = 3 // зареждане на скоростта на предаване //
TR1 = 1 // Таймер ВКЛ //
PORT0 = SBUF // изпращане на данните от SBUF към port0 //
while (RI == 0) // проверете регистъра на прекъсванията //
RI = 0
TR1 = 0 // ИЗКЛЮЧВАНЕ на таймера //
while (1) // спиране на програмата при получаване на символ //
}

Прекъсване на програми с помощта на микроконтролер 8051

Прекъсването е сигнал, принуждаващ да спре текущата програма и да изпълни незабавно другата програма. Микроконтролерът 8051 осигурява 6 прекъсвания, които са вътрешни и външни прекъсват източници . Когато настъпи прекъсването, микроконтролерът прави пауза на текущата задача и посещава прекъсването, като изпълнява ISR, след което микроконтролерът се връща към скорошната задача.

WAP за извършване на операция на лява смяна, когато настъпи прекъсване на таймер 0, след това да се извърши операцията за прекъсване за P0 в основната функция?

#include

неподписан знак b

void timer0 () прекъсване 2 // избран таймер0 прекъсване //
{
b = 0x10
P1 = b<<2
}
void main ()
{
неподписан знак, т.е.
IE = 0x82 // активиране на прекъсването timer0 //
TMOD = 0x01
TLo = 0xFC // таймер за прекъсване //
TH1 = 0xFB
TR0 = 1
a = 0x00
докато (1)
{
за (i = 0i<255i++)
{
a ++
Po = a
}
}
}

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

Матричната клавиатура е аналогово превключващо устройство, което се използва в много вградени приложения, за да позволи на потребителя да изпълнява необходимите задачи. A матрична клавиатура се състои от подреждане на превключватели в матричен формат в редове и колони. Редовете и колоните са свързани към микроконтролера така, че редът на превключвателите е свързан към един щифт, а превключвателите във всяка колона са свързани към друг щифт, след което се извършват операциите.

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

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

1. WAP за превключване на светодиода чрез натискане на ключа

#include
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
забавяне на празнотата ()
void main ()
{
докато (1)
{
a = 0
b = 1
c = 1
d = 1
забавяне ()
a = 1
b = 0
c = 1
d = 1
забавяне на празнотата ()
{
неподписан знак i
TMOD = 0x20 // задаване на режим на таймера //
за (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // задаване на времезакъснение //
TH1 = 0x00
TR1 = 1 // таймер oN //
While (TF1 == 0) // проверете бита на флага //
TF1 = 0
}
TR1 = 0 // таймерът е изключен //
}

2. WAP, за да включите светодиода чрез натискане на клавиша ‘1’ на клавиатурата?

#include

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

void main ()
{

r1 = 0
ако (c1 == 0)
{

LED = 0xff
}
}

3. WAP за показване на числото 0,1,2,3,4,5 на седемте сегмента чрез натискане на съответния клавиш на клавиатурата?

#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

ако (c1 == 0)

{

a = 0xFC

}

Ако (c2 == 0)

{

a = 0x60

}

ако (c3 == 0)

{

a = 0xDA

}

Ако (c4 == 0)

{

a = 0xF2

}

}

LCD програмиране с микроконтролер 8051

The ЛСД дисплей е електронно устройство, което често се използва в много приложения за показване на информацията в текстов или графичен формат. LCD е дисплей, който може лесно да показва символи на своя екран. LCD дисплеят се състои от 8 линии за данни и 3 контролни линии, които се използват за свързване към микроконтролера.

LCD програмиране с микроконтролер 8051

LCD програмиране с микроконтролер 8051

WAP за показване на “EDGEFX KITS” на LED дисплей?

#include
#define kam P0

voidlcd_initi ()
voidlcd_dat (неподписан знак)
voidlcd_cmd (неподписан знак)
забавяне на празнотата ()
дисплей за празнота (неподписани символи *, неподписани символи r)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit при = P2 ^ 2
void main ()
{

lcd_initi ()
lcd_cmd (0x80)
забавяне (100)
lcd_cmd (0xc0)
дисплей („комплекти edgefx“, 11)
докато (1)
}

дисплей за празнота (неподписани символи *, неподписани символи r)
{
неподписан w
за (w = 0w{
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
забавяне (100)
lcd_cmd (0 × 38)
забавяне (100)
lcd_cmd (0 × 06)
забавяне (100)
lcd_cmd (0x0c)
забавяне (100)
}
voidlcd_dat (неподписан char dat)
{
гребен = това
rs = 1
rw = 0
в = 1
забавяне (100)
в = 0
}
}
voidlcd_cmd (неподписан знак cmd)
{
дойде = cmd
rs = 0
rw = 0

в = 1
забавяне (100)
в = 0
}
забавяне на празнотата (неподписано
{

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

Надявам се, че тази статия дава основна информация за програмирането на вградената система, използваща 8051 микроконтролер с няколко примерни програми. За подробен вграден урок за програмиране на C, моля публикувайте вашите коментари и заявки в раздела за коментари по-долу.