Tidigare utvecklades många inbäddade applikationer med hjälp av programmering på monteringsnivå. De gav dock inte bärbarhet. Denna nackdel övervinndes genom tillkomsten av olika högnivåspråk som C, Pascal och COBOL. Det var dock C-språket som fick omfattande acceptans för inbäddade system, och det fortsätter att göra det. C-koden som skrivs är mer pålitlig, skalbar och bärbar och faktiskt mycket lättare att förstå. Inbäddad C-programmering är själen hos processorn som fungerar inuti varje och en inbyggda system vi stöter på i vårt dagliga liv, till exempel mobiltelefoner, tvättmaskiner och digitalkameror. Varje processor är associerad med inbäddad programvara. Det första och främsta är den inbäddade programvaran som bestämmer sig för att fungera i det inbäddade systemet. Inbäddat C-språk används oftast programmera mikrokontrollern .
Vad är C-språk?
C-språk utvecklades av Dennis Ritchie 1969. Det är en samling av en eller flera funktioner, och varje funktion är en samling uttalanden som utför en specifik uppgift.
C-språk är ett mellannivåspråk eftersom det stöder applikationer på hög nivå och applikationer på låg nivå. Innan vi går in i detaljerna om inbäddad C-programmering bör vi veta om RAM-minnesorganisation.
Huvuddragen i C-språket inkluderar följande.
- C-språk är programvara utformad med olika nyckelord, datatyper, variabler, konstanter etc.
- Inbäddad C är en generisk term som ges till ett programmeringsspråk skrivet i C, vilket är associerat med en viss hårdvaruarkitektur.
- Inbäddad C är ett tillägg till C-språket med några ytterligare rubrikfiler. Dessa rubrikfiler kan ändras från styrenhet till styrenhet.
- De mikrokontroller 8051 #include används.
Vad är en inbäddad C-programmering
I alla inbäddade systembaserade projekt spelar Embedded C-programmering en nyckelroll för att få mikrokontrollern att köra och utföra de föredragna åtgärderna. För närvarande använder vi normalt flera elektroniska enheter som mobiltelefoner, tvättmaskiner, säkerhetssystem, kylskåp, digitalkameror etc. Styrningen av dessa inbäddade enheter kan göras med hjälp av ett inbäddat C-program. Till exempel i en digitalkamera, om vi trycker på en kameraknapp för att ta ett foto kommer mikrokontrollen att utföra den funktion som krävs för att klicka på bilden och för att lagra den.
Inbäddad C-programmering
Inbyggd C-programmering bygger med en uppsättning funktioner där varje funktion är en uppsättning uttalanden som används för att utföra vissa specifika uppgifter. Både de inbäddade C- och C-språken är desamma och implementeras genom vissa grundläggande element som en variabel, teckenuppsättning, nyckelord, datatyper, deklaration av variabler, uttryck, uttalanden. Alla dessa element spelar en nyckelroll när du skriver ett inbäddat C-program.
De inbäddade systemdesignerna måste känna till hårdvaruarkitekturen för att skriva program. Dessa program spelar en framträdande roll för övervakning och kontroll av externa enheter. De fungerar också direkt och använder den interna arkitekturen i mikrokontrollern, såsom avbrottshantering, timers, seriell kommunikation och andra tillgängliga funktioner.
Inbyggd systemprogrammering
Som vi diskuterade tidigare kan designen av ett inbäddat system göras med hjälp av hårdvara och programvara. Till exempel, i ett enkelt inbäddat system är processorn huvudmodulen som fungerar som hjärtat i systemet. Här är en processor inget annat än en mikroprocessor, DSP, mikrokontroller, CPLD & FPGA. Alla dessa processorer är programmerbara så att det definierar hur enheten fungerar.
Ett inbyggt systemprogram gör att hårdvaran kan kontrollera ingångarna och styra utgångarna i enlighet med detta. I den här proceduren kan det inbäddade programmet behöva kontrollera processorns interna arkitektur direkt som Timers, Interrupt Handling, I / O-portar, seriellt kommunikationsgränssnitt etc.
Så inbyggd systemprogrammering är mycket viktigt för processorn. Det finns olika programmeringsspråk tillgängliga för inbäddade system som C, C ++, monteringsspråk, JAVA, JAVA-skript, visual basic osv. Så detta programmeringsspråk spelar en nyckelroll när man skapar ett inbäddat system men att välja språk är mycket viktigt.
Steg för att bygga ett inbäddat C-program
Det finns olika steg involverade i utformningen av ett inbäddat c-program som följande.
- Kommentarer
- Direktörer från Processor
- Konfiguration av port
- Globala variabler
- Kärnfunktion / huvudfunktion
- Variabelförklaring
- Programmets logik
Kommentarer
På programmeringsspråk är kommentarer mycket viktiga för att beskriva programmets funktion. Koden för kommentarerna kan inte köras men används för att tillhandahålla programdokumentation. För att förstå programmets funktion blir detta en enkel metod för att förstå programmets funktion. I inbäddat C finns kommentarer tillgängliga i två typer, nämligen en rad och huvudlinjekommentar.
I ett inbäddat C-programmeringsspråk kan vi placera kommentarer i vår kod som hjälper läsaren att förstå koden enkelt.
C = a + b / * lägg till två variabler vars värde lagras i en annan variabel C * /
Enkelradskommentar
Generellt sett för programmeringsspråk är kommentarer i en rad mycket användbara för att klargöra en bråkdel av programmet. Dessa kommentarer börjar med ett dubbelt snedstreck (//) och det kan placeras var som helst inom programmeringsspråket. Genom att använda detta kan hela raden ignoreras i ett program.
Flerradskommentar
Flera linjekommentarer börjar med ett enda snedstreck (/) och en asterisk (/ *) på programmeringsspråken, vilket förklarar ett kodblock. Dessa typer av kommentarer kan ordnas var som helst inom programmeringsspråket och används huvudsakligen för att ignorera ett helt kodblock i ett program.
Direktörer från Processor
Raderna som ingår i programkoden kallas förprocessordirektiv som kan följas genom en hash-symbol (#). Dessa rader är förbehandlingsdirektiven men inte programmerade uttalanden.
Koden kan undersökas genom en förprocessor innan verklig kodsamling startar och löser dessa direktiv innan de genererar en kod genom vanliga uttalanden. Det finns flera speciella förprocessordirektiv finns tillgängliga även om två direktiv är extremt användbara inom programmeringsspråket
som följande.
#omfatta
#omfatta
Sbit LED = P2 ^ 3
Main ()
{
LED = 0x0ff
Dröjsmål()
LED = 0x00
}
#definiera
#omfatta
#define LED P0
Main ()
{
LED = 0x0ff
Dröjsmål()
LED = 0x00
}
I ovanstående program används #include-direktivet vanligtvis för att omfatta standardbibliotek som studier och. h används för att tillåta I / O-funktioner med hjälp av biblioteket 'C'. #Define-direktivet används vanligtvis för att beskriva serien av variabler och fördelar värdena genom att utföra processen i en viss instruktion som makron.
Konfiguration av port
Microcontroller innehåller flera portar där varje port har olika stift. Dessa stift kan användas för att styra gränssnittsanordningarna. Deklarationen av dessa stift kan göras inom ett program med hjälp av nyckelord. Nyckelorden i det inbäddade c-programmet är standard såväl som fördefinierade som en bit, sbit, SFR som används för att ange bitarna och enstiftet i ett program.
Det finns vissa ord som är reserverade för att göra specifika uppgifter. Dessa ord kallas nyckelord. De är standard och fördefinierade i Embedded C. Nyckelord skrivs alltid med gemener. Dessa nyckelord måste definieras innan huvudprogrammet skrivs. Nyckelordens huvudfunktioner inkluderar följande.
#omfatta
Sbit a = P 2 ^ 2
SFR 0x00 = PoRT0
Bit C
huvud ()
{
…………… ..
…………… ..
}
sbit
Detta är en typ av datatyp som används för att komma åt en enda bit i ett SFR-register.
Syntaksen för denna datatyp är: sbit variabelnamn = SFR-bit
Exempel: sbit a = P2 ^ 1
Om vi tilldelar p2.1 som “a” -variabel kan vi använda “a” istället för p2.1 var som helst i programmet, vilket minskar komplexiteten i programmet.
Bit
Denna typ av datatyp används huvudsakligen för att tillåta det bitadresserbara minnet i random access-minne som 20h till 2fh.
Syntaxen för denna datatyp är: namn på bitvariabel
Exempel: bit c
Det är en bitserieinställning inom en liten dataregion som huvudsakligen används med hjälp av ett program för att memorera något.
SFR
Denna typ av datatyp används för att erhålla de perifera portarna i SFR-registret genom ett ytterligare namn. Så deklarationen av alla SFR-register kan göras med versaler.
Syntaxen för denna datatyp är: SFR-variabelnamn = SFR-adress för SFR-register
Exempel: SFR-port0 = 0 × 80
Om vi tilldelar 0 × 80 som 'port0' kan vi därefter använda 0 × 80 istället för port0 var som helst i programmeringsspråket för att minska programmets svårighet.
SFR-register
SFR står för Special Function Register. I 8051-mikrokontroller innehåller det RAM-minne med 256 byte, vilket är uppdelat i två huvudelement: det första elementet på 128 byte används huvudsakligen för lagring av data medan det andra elementet på 128 byte huvudsakligen används för SFR-register. Alla kringutrustning som timers, räknare och I / O-portar lagras i SFR-registret och varje element innehåller en enda adress.
Globala variabler
När variabeln deklareras innan nyckelfunktionen kallas den globala variabeln. Denna variabel kan tillåtas för alla funktioner i programmet. Den globala variabelns livslängd beror främst på programmeringen tills den når sitt slut.
#omfatta
Osignerad int a, c = 10
Main ()
{
……………
………… ..
}
Kärnfunktion / huvudfunktion
Huvudfunktionen är en central del när du kör något program och den börjar med huvudfunktionen helt enkelt. Varje program använder bara en huvudfunktion eftersom om programmet innehåller över en huvudfunktion kommer kompilatorn att förvirras när programmet körs.
#omfatta
Main ()
{
……………
………… ..
}
Variabelförklaring
Namnet som variabeln används för att lagra värdena men denna variabel bör först deklareras innan den används i programmet. Variabeldeklarationen anger dess namn samt en datatyp. Här är datatypen ingenting annat än representation av lagringsdata. I inbäddad C-programmering använder den fyra grundläggande datatyper som heltal, float, tecken för att lagra data i minnet. Datatypens storlek, såväl som intervallet, kan definieras beroende på kompilatorn.
Datatypen hänvisar till ett omfattande system för att deklarera variabler av olika typer som heltal, karaktär, flyt, etc. Den inbäddade C-programvaran använder fyra datatyper som används för att lagra data i minnet.
'Char' används för att lagra ett enstaka tecken 'int' används för att lagra heltalsvärde och 'float' används för att lagra valfritt precisionsflytpunktsvärde. Storleken och räckvidden för olika datatyper på en 32-bitars maskin anges i följande tabell. Storlek och intervall kan variera på maskiner med olika ordstorlekar.
- Char / signerad char datatypstorlek är 1 byte och dess intervall är från -128 till +128
- Den osignerade char-datatypstorleken är 1 byte och dess intervall är från 0 till 255
- Int / signerad int datatypstorlek är 2 byte och dess intervall är från -32768 till 32767
- Onsignerad int datatypstorlek är 2 byte och dess intervall är från 0 till 65535
Main ()
{
Osignerad int a, b, c
}
Strukturen för ett inbäddat C-program visas nedan.
- kommentarer
- förbehandlingsdirektiven
- globala variabler
- huvudfunktion
{
- lokala variabler
- uttalanden
- ………… ..
- ………… ..
}
- kul (1)
{
- lokala variabler
- uttalanden
- ………… ..
- ………… ..
}
Programmets logik
Programmets logik är en plan för banan som visas i teorin bakom & förutsägbara resultat av programmets åtgärder. Det förklarar påståendet annars teori om varför det inbäddade programmet fungerar och visar de erkända effekterna av åtgärder annars resurser.
Main
{
LED = 0x0f
fördröjning (100)
LED = 0x00
fördröjning (100)
}
Huvudfaktorerna för Embedded C-programmet
De viktigaste faktorerna som ska beaktas när du väljer programmeringsspråk för att utveckla ett inbäddat system inkluderar följande.
Programstorlek
Varje programmeringsspråk upptar något minne där inbäddad processor som mikrokontroller innehåller en extremt mindre mängd random access-minne.
Programmets hastighet
Programmeringsspråket ska vara mycket snabbt, så det bör köras så snabbt som möjligt. Hastigheten på inbäddad hårdvara bör inte minskas på grund av den långsamma programvaran.
Bärbarhet
För de olika inbäddade processorerna kan sammanställningen av liknande program göras.
- Enkel implementering
- Enkelt underhåll
- Läsbarhet
Skillnader mellan C-programmet och Embedded C-programmet
Skillnaden mellan inbäddad C- och C-programmering är egentligen inte mycket bortsett från driftsmiljön och vissa tillägg. Dessa programmeringsspråk är ISO-standarder och har också ungefär lika syntax, funktioner, datatyper etc. De viktigaste skillnaderna mellan C-programmering och inbäddad c-programmering inkluderar följande.
C Språk | Inbäddat C-språk |
Generellt används detta språk för att utveckla skrivbordsbaserade applikationer
| Inbäddat C-språk används för att utveckla mikrokontrollerbaserade applikationer. |
C-språk är inte ett tillägg till något programmeringsspråk utan ett allmänt programmeringsspråk | Inbäddad C är en förlängning av C-programmeringsspråket som innehåller olika funktioner som adressering av I / O, fastpunktsräkning, adressering med flera minnesmärken etc.
|
Det bearbetar naturlig utveckling i naturen | Det bearbetar korsutveckling i naturen |
Det är oberoende för hårdvaruarkitektur | Det beror på hårdvaruarkitekturen för mikrokontrollern och andra enheter |
Kompilatorerna för C-språk beror på operativsystemet | Inbäddade C-kompilatorer är OS-oberoende |
På C-språk används standardkompilatorerna för att köra ett program | I inbäddat C-språk används specifika kompilatorer. |
De populära kompilatorerna som används på detta språk är GCC, Borland turbo C, Intel C ++, etc. | De populära kompilatorerna som används på detta språk är Keil, BiPOM Electronics & green hill |
Formatet för C-språket är fritt format | Dess format beror främst på vilken typ av mikroprocessor som används. |
Optimering av detta språk är normalt | Optimering av detta språk är en hög nivå |
Det är väldigt enkelt att ändra och läsa | Det är inte lätt att ändra och läsa |
Bug fixing är enkelt | Felkorrigering av detta språk är komplicerat |
Inbäddade C-programexempel
Följande är några enkla inbäddade C-program som används för mikrokontrollerbaserade projekt .
Exempel 1
Exempel 2
Exempel 3
Exempel 4
Fördelar
De fördelar med inbäddat c-program g inkludera följande.
- Det är väldigt enkelt att förstå.
- Den utför en liknande uppgift kontinuerligt så det finns inget krav på att ändra hårdvara som ytterligare minne annars lagringsutrymme.
- Den utför bara en enda uppgift på en gång
- Kostnaden för hårdvaran som används i den inbäddade c är vanligtvis så mycket låg.
- Tillämpningarna av inbäddade är extremt lämpliga i industrier.
- Det tar kortare tid att utveckla ett applikationsprogram.
- Det minskar programmets komplexitet.
- Det är lätt att verifiera och förstå.
- Den är bärbar från en styrenhet till en annan.
Nackdelar
De nackdelar med inbäddad c-programmering inkluderar följande.
- Det körs bara en uppgift åt gången men kan inte utföra flera uppgifter
- Om vi byter program måste vi också byta maskinvara
- Den stöder endast hårdvarusystemet.
- Det har ett skalbarhetsproblem
- Det har en begränsning som begränsat minne annars datorns kompatibilitet.
Tillämpningar av Embedded C Program
De tillämpningar av inbäddad c-programmering inkluderar följande.
- Inbäddad C-programmering används i branscher för olika ändamål
- Programmeringsspråket som används i applikationerna är hastighetskontroll på motorvägen, kontroll av trafikljus, kontroll av gatubelysning, spårning av fordonet, artificiell intelligens, hemautomation och automatisk intensitetskontroll.
Vi hoppas att vi har lyckats ge ett enkelt och lättillgängligt sätt för nybörjare Inbäddad C-programmering . Förståelse för Embedded C-programmering är den viktigaste förutsättningen för att utforma inbäddade projekt. Utöver detta hjälper en bättre förståelse och korrekt kunskap om inbäddad C-programmering studenter oerhört i valet av en givande karriär.
Vi uppmuntrar och välkomnar frågor, förslag och kommentarer från våra läsare. Därför kan du skicka dina frågor och feedback om den här artikeln i kommentarfältet nedan. Följ länken nedan för Lödfria projekt