MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek, 2017 1
Programing language C C most used language for Emebede systems. Embedded sytem means: Device, that does not look as computer, but is programmed for specific function. C is compiled language. What does it mean? Source code written by the programmer is transformed into executable code. It is runable without any further online operations. (Compared to Java) A1B14MIS Mikroprocesory pro výkonové systémy 06 2
C language source code compilation Source code C is compiled to (runable) code in several steps. Step 1: Preprocesor remove comments and process lines with # (preprocesor commands) Step 2: Compiler syntax check (language standards C ) translate code into assembly language. Step 3: Assembler translator translate assembler code into machine code and leave addresses of calls and jumps unsolved. Step 4: Linker calculate mutual addresses of code and places code into memory according to Linker skriptu. Steps 1.-4. run on PC executable program is saved to hard drive. It have to be programmed in FLASH memory of controller. A1B14MIS Mikroprocesory pro výkonové systémy 06 3
C language source code compilation soubor2.h soubor1.c Header soubor3.c Source code Source code 1) Preprocessor Source code C Source code ASM 2) Compiler Assembly code 3) Assembler Object code soubor4.asm Source code soubor5.lib Libraries Libraries 4) Linker Machine code Executable code A1B14MIS Mikroprocesory pro výkonové systémy 06 4
IDE Integrated Development Environment Source code in C can be written in any text editor and compilation steps can run separetely from command line. IDE Contains: Text editor IDE runs all necassary steps of source code compilation (preprocesor linker). Pass information about memory allocation to Linker (from Linker skript) IDE contains simulator - program, that run on PC and can emulate behavior of the microcontroller. IDE contains programer for uploading code into microcontroller memory. IDE contains emulator that enable debugging of the code in microcontroller For laboratories will be used IDE MPLAB. A1B14MIS Mikroprocesory pro výkonové systémy 06 5
Oživení IDE MPLAB IDE MPLAB work with project. Project contains all necassary information about microcontroller, used compiler, linker script, window alignment, source files etc. New project (following screens): Project (Upper toolbar) Project wizard Insert type microcontoler (PIC18F87J11) Select tools (C18,MPASM,MPLINK,MPLIB) Select project name Insert resources Finish A1B14MIS Mikroprocesory pro výkonové systémy 06 6
Oživení IDE MPLAB New source code file : File (Upper toolbar) New File Save as Select file name *.c Insert Linker skript : Menu File, folder Linker skript, right click Add files Locate folder lkr with file 18F87J11.lkr Open (file name will be under Linker skript Add source file to project: Windiw File, symbol folder Source files, right click Add files locate *.c, Open (file name will be under Source files A1B14MIS Mikroprocesory pro výkonové systémy 06 7
Oživení IDE MPLAB IDE MPLAB has 3 main windiws (File, text editor, Output). Text editor is for source code: int x; void main(void){ while(1){ x = x + 1; } } Compilation in IDE: Project (Upper toolbar) Build all Output will show result of compilation BUILD SUCCEDED. Or BUILD FAILED. A1B14MIS Mikroprocesory pro výkonové systémy 06 8
Oživení IDE MPLAB založení projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 9
Oživení IDE MPLAB založení projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 10
Oživení IDE MPLAB založení projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 11
Oživení IDE MPLAB založení projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 12
Oživení IDE MPLAB založení projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 13
Oživení IDE MPLAB založení projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 14
Oživení IDE MPLAB založení zdrojového souboru A1B14MIS Mikroprocesory pro výkonové systémy 06 15
Oživení IDE MPLAB založení zdrojového souboru File New Save as A1B14MIS Mikroprocesory pro výkonové systémy 06 16
Oživení IDE MPLAB volba Linker skriptu Files Linker skript Add files A1B14MIS Mikroprocesory pro výkonové systémy 06 17
Oživení IDE MPLAB volba Linker skriptu A1B14MIS Mikroprocesory pro výkonové systémy 06 18
Oživení IDE MPLAB připojení zdrojového souboru do projektu Files Source files Add files A1B14MIS Mikroprocesory pro výkonové systémy 06 19
Oživení IDE MPLAB připojení zdrojového souboru do projektu A1B14MIS Mikroprocesory pro výkonové systémy 06 20
Oživení IDE MPLAB zápis testovacího programu A1B14MIS Mikroprocesory pro výkonové systémy 06 21
Oživení IDE MPLAB sestavení spustitelného programu Projects Build all A1B14MIS Mikroprocesory pro výkonové systémy 06 22
Oživení IDE MPLAB vložení headeru pro zvolený mikrokontroler To use in C source code names of control registers for microcontroler have to include variables into C. Done by so called. Header file (header), that is included to source code by preprocesor. Command include, for preprocesor begins with #. Header files *.h For microcontroler in lab P18F87J11.h Header file is prepared in IDE located in folder h To source file add #include <P18F87J11.h> A1B14MIS Mikroprocesory pro výkonové systémy 06 23
Oživení IDE MPLAB vložení headeru pro zvolený mikrokontroler Okno Files Header files Add files A1B14MIS Mikroprocesory pro výkonové systémy 06 24
Oživení IDE MPLAB vložení headeru pro zvolený mikrokontroler Files Header files Add files A1B14MIS Mikroprocesory pro výkonové systémy 06 25
Oživení IDE MPLAB vložení headeru pro zvolený mikrokontroler A1B14MIS Mikroprocesory pro výkonové systémy 06 26
Oživení IDE MPLAB připojení simulátoru do projektu IDE MPLAB contain powerfull simulator Helps programmer to debugg code before uploading to microcontroller Debugger (Upper toolbar) Select tool MPLAB SIM After connection of Debugger (upper toolbar) appear debugging commands. Breakpoint is inserted by double click. A1B14MIS Mikroprocesory pro výkonové systémy 06 27
Programovací jazyk C je blokový jazyk C is block language Block in C is named function All commands in C have to be in function Outside functions can be declarations only Function contains: Header Body Function header: Returning value (void does not return anything) Function name ( main is neccasary, others selected by programmer) Formal parameters (can be void) Function body: Defined by {} Contains program code A1B14MIS Mikroprocesory pro výkonové systémy 06 28
Programovací jazyk C funkce Functions C can be located: In one file on disk In several files on disk File name on disk name *.c Each file located on disk have to be registerd in Project (menu Files, folder Source Files ) Function names have to be unique C language differs UPPER / lower case vypoctiobsahkruhu (a nikoliv Vypoctiobsahkruhu atp.) A1B14MIS Mikroprocesory pro výkonové systémy 06 29
Programovací jazyk C funkce Breakpoint Function main Program stoped here Name of function A1B14MIS Mikroprocesory pro výkonové systémy 06 30
Programovací jazyk C funkce Function call Function main must be in code Function header Body of function defined by {} A1B14MIS Mikroprocesory pro výkonové systémy 06 31
Programovací jazyk C funkce Function call Real parameter Ret val type Ret val Input parameter A1B14MIS Mikroprocesory pro výkonové systémy 06 32
Programovací jazyk C funkce a procedury Type of function based on returning value: Returning value = Funtion Without ret val (void) = Procedure Formal parameters (defining inputs of function) Formal parameters can be more than 1 Names of formal parameters is used for function description has nothing to do with real parameters Before using function define prototype of function for compiler to check syntax. Function prototype is function header. A1B14MIS Mikroprocesory pro výkonové systémy 06 33
Programovací jazyk C funkce a procedury Function prototype Function call Type function Type of functional value Procedure has does not return anythink A1B14MIS Mikroprocesory pro výkonové systémy 06 34
Programovací jazyk C řídící struktury Control structure part of code, that defines way of execution 3 main types of control structure: 1. sequence, defining sequentila execution of commands from top to bottom 2. Branch, code execution after some condition 3. cycle, repeated execution of commands 1. Block of commands Block: { <set of commands> } 2. Command if or if else for branching (conditionla) 3. switch for code branching 4. Commands while, do while or for cycle A1B14MIS Mikroprocesory pro výkonové systémy 06 35
Programovací jazyk C řídící struktury podmíněný příkaz if if else + + - - A1B14MIS Mikroprocesory pro výkonové systémy 06 36
Programovací jazyk C řídící struktury podmíněný příkaz if + - Složený příkaz A1B14MIS Mikroprocesory pro výkonové systémy 06 37
Programovací jazyk C řídící struktury podmíněný příkaz if else + - Blok (je zde i deklarace int u) u je známé jen uvnitř bloku A1B14MIS Mikroprocesory pro výkonové systémy 06 38
Programovací jazyk C řídící struktury programový přepínač switch A1B14MIS Mikroprocesory pro výkonové systémy 06 39
Programovací jazyk C řídící struktury programový přepínač switch Pokud se nenajde shoda mezi testovanou proměnnou (zde x) a case, celý switch se přeskočí Testovaná proměnná musí být celočíselná Za case musí být konstanta (přímá nebo symbolická) A1B14MIS Mikroprocesory pro výkonové systémy 06 40
Programovací jazyk C řídící struktury cyklus while nebo for - + A1B14MIS Mikroprocesory pro výkonové systémy 06 41
Programovací jazyk C řídící struktury cyklus while - + A1B14MIS Mikroprocesory pro výkonové systémy 06 42
Programovací jazyk C řídící struktury cyklus while + - Musí být v tomto pořadí, aby se konstanta TRUE = 1 Nekonečný cyklus ( C nezná logickou proměnnou, ale 1 = true, jiná hodnota = false) A1B14MIS Mikroprocesory pro výkonové systémy 06 43
Programovací jazyk C řídící struktury cyklus for - + A1B14MIS Mikroprocesory pro výkonové systémy 06 44
Programovací jazyk C řídící struktury cyklus for - + Nekonečný cyklus A1B14MIS Mikroprocesory pro výkonové systémy 06 45
Programovací jazyk C řídící struktury cyklus do while - + A1B14MIS Mikroprocesory pro výkonové systémy 06 46
Programovací jazyk C řídící struktury cyklus do while - + Pozor: cyklus do-while se provede vždy alespoň jednou, neboť test je až na konci bloku A1B14MIS Mikroprocesory pro výkonové systémy 06 47
Programovací jazyk C řídící struktury cyklus do while - Musí být v tomto pořadí, aby se konstanta TRUE = 1 + Nekonečný cyklus ( C nezná logickou proměnnou, ale 1 = true, jiná hodnota = false) A1B14MIS Mikroprocesory pro výkonové systémy 06 48
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl KONEC České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 49