MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 2.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 07 Ver.1.10 J. Zděnek, 2017 1
Programovací jazyk C - proměnné Variables: Used for storing data. Variables are located in Data memory, programmer choose symbolic names for variables and linker places them into memory. Programmer use variables calling them by symbolic name For variable naming is used: Variable name consist of UPPER and lower case, numbers, underline ( _ ). Variable name can t start with number Programmer should define type of variable Variable should be declared first (select name and type), than can be used. A1B14MIS Mikroprocesory pro výkonové systémy 07 2
Programovací jazyk C - proměnné Variable: Type: most used types: int numbers with sign unsigned int positive numbers double racional numbers Life time is important for variables: Static: exist for the whole run of program Automatic: exist in function Static variables: Declaration shoudl be outside all functions At the beginning of function with word static A1B14MIS Mikroprocesory pro výkonové systémy 07 3
Variables: Programovací jazyk C - proměnné Automatic: declared at beginning of function. Exist only IN function for a new run of function are newly allocated (placed on stack). Formal parametrs: parameters in function headers Same as automatic variables. A1B14MIS Mikroprocesory pro výkonové systémy 07 4
Variables: Programovací jazyk C - proměnné Visibility: Defines where in the code are variables visible. Global: are visible EVERYWHERE. Declared outside all functions are automatically static. To show global variable in another file use extern - extern int x Local: are visible only in part where are declared. All automatic variables. All variables have to be defined before compilation. A1B14MIS Mikroprocesory pro výkonové systémy 07 5
Programovací jazyk C statické proměnné Static variable, declared outside functions(global ) Static variable in function (local) A1B14MIS Mikroprocesory pro výkonové systémy 07 6
Programovací jazyk C viditelnost proměnných (visibility) Visible everywhere Visible in function A1B14MIS Mikroprocesory pro výkonové systémy 07 7
Programovací jazyk C automatické proměnné a formální parametry Automatic variable Formal parameters A1B14MIS Mikroprocesory pro výkonové systémy 07 8
Programovací jazyk C viditelnost proměnných (visibility) Visible in function Visible in function A1B14MIS Mikroprocesory pro výkonové systémy 07 9
Programovací jazyk C - konstanty Constatns: Numbers: 12 (decimal), 0xF4 (hexadecimal), 345.76 (real) 0b11001001 (binary) Symbolic: #define UHEL_ALFA 456 Do not end with semi-colon, usually in UPPERCASE Lists: enum {FALSE, TRUE}; enum {ALFA, BETA, GAMA, DELTA} Numbers are automatically assigned to symbolic names. A1B14MIS Mikroprocesory pro výkonové systémy 07 10
Programovací jazyk C konstanty Symbolic constatn Listing Binary constant A1B14MIS Mikroprocesory pro výkonové systémy 07 11
Programovací jazyk C - výraz Expression: expression code for value calculation Contain: Variables Constants Operators (aritmetics, logic, bitwise) Pair of brackets (priority) Examples: (x / y) * 3.14 // multiplication z w // logic OR r >> 8 // bitwise shift A1B14MIS Mikroprocesory pro výkonové systémy 07 12
Programovací jazyk C příkaz přiřazení Asignment : Asignment = Asigns value calculated on right side of = to Variable on the left side Examples: x = (x / y) * 3.14 u = z w m = r >> 8 // x on both sides =, OK A1B14MIS Mikroprocesory pro výkonové systémy 07 13
Programovací jazyk C operátory Operators: Arithmetical: +, -, *, /, % / Division. CAUTION if both numbers are / integer numbers it will be integer division (např. 2 / 3 = 0), % reminder (např. 5 % 3 = 2). Logical:! - NOT. (Pozor!0 = 1;!234 = 0, atp.) - OR (např. 0 45 = 1) && - AND (např. 33 && 45 = 1)!= - XOR (např. 33!= 45 = 1) A1B14MIS Mikroprocesory pro výkonové systémy 07 14
Programovací jazyk C operátory aritmetické Integer divison Reminder Division A1B14MIS Mikroprocesory pro výkonové systémy 07 15
Programovací jazyk C operátory logické Program jumps here Program jumps here Program jumps here Program jumps here A1B14MIS Mikroprocesory pro výkonové systémy 07 16
Programovací jazyk C operátory (pokračování) Operator: Bitwise: ~ bitwise NOT (Např. ~0xFF00 = 0x00FF atp.) - bitwise OR (např. 0xFF00 0x00FF = 0xFFFF) & bitwise AND (např. 0xFF00 & 0x 0x00FF = 0x0000) ^ bitové XOR (např. 0xFF00 ^ 0xFFFF = 0x00FF) >> bitwise shift right (0x00FF >> 4 = 0x000F) << bitwise shift left (např. 0x00FF << 8 = 0xFF00) A1B14MIS Mikroprocesory pro výkonové systémy 07 17
Programovací jazyk C operátory bitové Bitwise NOT Bitwise OR Bitwise AND Bitwise XOR Shift right Shift left A1B14MIS Mikroprocesory pro výkonové systémy 07 18
Programovací jazyk C operátory (pokračování) Operators: Relation: == equal (např. 75 == 75 = 1)!= not equal (např. 21!= 13 = 1) > greather (např. 27 > 21 = 1) >= grather or equal (34 >= 34 = 1) < lower (14 < 23 = 1) <= lower or equal (57 <= 57 = 1) A1B14MIS Mikroprocesory pro výkonové systémy 07 19
Programovací jazyk C operátory relační Program jumps here Program jumps here Program jumps here Program jumps here Program jumps here A1B14MIS Mikroprocesory pro výkonové systémy 07 20
Programovací jazyk C ovládání hardware PIC18F87J11 Programming of PIC pheripheries is easy. Every HW block has defined number of configuration registers All registers are 8 bits Every register has name. Register names are in documentation PIC18FJ87J11 Family Data Sheet. To use in C control registers by names from documentation include file p18f87j11.h, Registers are Memory Mapped Input/Output, so they can be assigned as any other variable A1B14MIS Mikroprocesory pro výkonové systémy 07 21
Programovací jazyk C ovládání hardware PIC18F87J11 A1B14MIS Mikroprocesory pro výkonové systémy 07 22
Programovací jazyk C ovládání hardware PIC18F87J11 Setting of configuration register for timer Separate settings (add bits.) A1B14MIS Mikroprocesory pro výkonové systémy 07 23
Programovací jazyk C oživení systému přerušení PIC18F87J11 has either one level interrupt system or two level interrupt system. PIC has many sources of interrupts, but only two levels. Any source can be assigned to any priority. IPEN For two level interrupts select IPEN = 1. xif every source of interrupt has in some register its interrupt request flag IF (Interrupt flag), bit is set by HW, should be cleared in code. xip Priority level for interrupt source xie (Interrupt Enable) GIEL, GIEH Enabel of interrupts. Both should be = 1) A1B14MIS Mikroprocesory pro výkonové systémy 07 24
Programovací jazyk C oživení systému přerušení High Priority Enable GIEH HIGH PRIORITY Priority Encoder INTRQ LOW PRIORITY xip yip GIEL IPEN Priority System On xif xie yif yie Low Priority Enable INPUT Event Detector........ Clk Timer Interrupt Priority Interrupt Enable INTERRUPT RESOURCES Interrupt Flag (Request) A1B14MIS Mikroprocesory pro výkonové systémy 07 25
Programovací jazyk C příklad přerušení od TIMER0 Příklad 1 část A1B14MIS Mikroprocesory pro výkonové systémy 07 26
Programovací jazyk C příklad přerušení od TIMER0 Příklad 2 část A1B14MIS Mikroprocesory pro výkonové systémy 07 27
Programovací jazyk C příklad přerušení od TIMER0 Příklad 3 část ISR pro vyšší a ISR for higher and nižší prioritu lower priority přerušení Interrupt table A1B14MIS Mikroprocesory pro výkonové systémy 07 28
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 2.díl KONEC České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 07 29