CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Computer Systems and “C” Programming Gabriel Hugh Elkaim Spring 2013.

Slides:



Advertisements
Similar presentations
CSE 105 Structured Programming Language (C)
Advertisements

EC-111 Algorithms & Computing Lecture #1 Instructor: Jahan Zeb Department of Computer Engineering (DCE) College of E&ME NUST.
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
Overview of Programming and Problem Solving ROBERT REAVES.
COSC 120 Computer Programming
Three types of computer languages
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
1 Introduction to computers Overview l · Grading Policy »Cheating Rules (serious concern) »Examinations and Fixation of Timings »Quizzes »Homework Assignments.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages C++ Programming:
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 1 Introduction.
CIS 260 Computer Programming I in C Prof. Timothy Arndt.
 2000 Prentice Hall, Inc. All rights reserved. 1 Introduction to Computers and C Programming Outline Introduction What Is a Computer? Computer Organization.
CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Modules and Scope Gabriel Hugh Elkaim Spring 2013.
CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2012 CMPE-013/L Computer Systems and “C” Programming Gabriel Hugh Elkaim Spring 2012.
CS102 Introduction to Computer Programming
The Study of Computer Science Chapter 0 Intro to Computer Science CS1510, Section 2.
Chapter Introduction to Computers and Programming 1.
Department of Computer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer Computer Science, IUPUI CSCI.
Introduction COMP104: Fundamentals and Methodology.
CSE 1340 Introduction to Computing Concepts Class 2.
 2008 Pearson Education, Inc. All rights reserved Introduction to Computers, the Internet and World Wide Web.
INTRODUCTION TO COMPUTER PROGRAMMING itc-314 LECTURE 01.
Created by Harry H. Cheng,  2009 McGraw-Hill, Inc. All rights reserved. C for Engineers and Scientists: An Interpretive Approach Chapter 1: Introduction.
1 Computing Software. Programming Style Programs that are not documented internally, while they may do what is requested, can be difficult to understand.
Goals of Course Introduction to the programming language C Learn how to program Learn ‘good’ programming practices.
UniMAP Sem1-08/09EKT120: Computer Programming1 Week 1 – Lecture 1.
C++ Programming Language Lecture 1 Introduction By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Introduction to Computers Outline 1.1Introduction.
Introduction to Programming Lecture No. 1. Books  Deitel & Deitel :– C++ How to Program  Kernighan and Ritchie:- The C Programming Language.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 1 February 8, 2005.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages.
Introduction to Computer Application (IC) MH Room 517 Time : 7:00-9:30pm.
1 Programming Fundamentals How to Program in C++ How to Program in C++
Computer Organization & Assembly Language © by DR. M. Amer.
Computing Systems & Programming ECE Fundamental Concepts Chapter 1 Engineering Problem Solving.
 2001 Prentice Hall, Inc. All rights reserved. Chapter 1 – Introduction to Computers, the Internet and the World Wide Web Outline 1.1Introduction 1.2What.
Programming Fundamentals Lecture No. 2. Course Objectives Objectives of this course are three fold 1. To appreciate the need for a programming language.
The Hashemite University Computer Engineering Department
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming1 Introduction to C – Part 1.
CMPE13Cyrus Bazeghi 1 Welcome to CMPE 13 Computing Systems and C Programming Spring 2009 Cyrus Bazeghi.
Dr. Sajib Datta CSE Spring 2016 INTERMEDIATE PROGRAMMING.
CHAPTER 1.1 INTRODUCTION TO COMPUTERS AND C++ Dr. Shady Yehia Elmashad.
1 Types of Programming Language (1) Three types of programming languages 1.Machine languages Strings of numbers giving machine specific instructions Example:
INTRODUCTION TO PROGRAMING System Development Mansoura October 2015.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
Structured programming 1 st stage By Heba.A Raheem Assist Lecturer College of Sciences/Computer Sciences Department.
Introduction to Computers - Hardware
INC 161 , CPE 100 Computer Programming
Introduction to Computing Systems
 2001 Prentice Hall, Inc. All rights reserved.
Introduction to Visual Basic 2008 Programming
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
GC101 Introduction to computers and programs
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Introduction to C Programming Language
C++ Programming: From Problem Analysis to Program Design
IB Computer Science Topic 2.1.1
Programming COMP104: Fundamentals and Methodology Introduction.
Unit# 8: Introduction to Computer Programming
Computer Science I CSC 135.
CSE1320 INTERMEDIATE PROGRAMMING
ECE 3567 Microcontrollers Dr. Gregg J Chapman
Chapter 1 Introduction(1.1)
Introduction to Computer Programming
Introduction to Computer Programming
Chapter 1 – Introduction to Computers and C++ Programming
Presentation transcript:

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Computer Systems and “C” Programming Gabriel Hugh Elkaim Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 About: Me Faculty at UCSC since 2003 Undergraduate from Princeton in Aerospace Eng. Masters and PhD from Stanford in Aero/Astro Built a robotic winged catamaran for my PhD thesis Consulted on many embedded projects

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013 Website

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Syllabus

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Piazza

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Extended Course Description

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Books [K&R]: “The C Programming Language, 2nd Edition” by Kernighan and Ritchie, Prentice-Hall, 1988, ISBN-10: [Notes]: “Notes to accompany K&R,” by Steve Summit available on the class website and at: “The Cartoon Guide to Computer Science” by Larry Gonick, Barnes and Noble Books,

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Optional Books [SummitIntro]: “C Programming Notes: Introductory C Programming Class Notes,” by Steve Summit available on the class website and on the web for free at: [SummitIntermediate]: “C Programming Notes: Intermediate C Programming Class Notes,” by Steve Summit available on the web for free at: [Wiki]: “C Programming: A comprehensive look at the C programming language and its features,” Wikibook, available on the class website and also available online at:

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Attendance Highly Recommended –Material builds up quickly –Videos available, but not the same as being there In class quizzes, at the end of class at least once a week –No excuses accepted post-quiz. At least one lab section per week (Ming Ong) –Easier to get through the labs with help –TA/Tutors will be available then –Space reserved for your “signed up” section

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Academic Honesty Cheating is presenting someone else’s work as your own All code turned in will be run against a code-checker Anyone caught cheating will immediately fail the class and the lab, and be reported to their college Copying each other’s code is never acceptable. Don’t do it—not worth it.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Grading Lecture and Lab are one and the same: CMPE-013 and CMPE-013L will get the same grade, same evaluation. In class quizzes (once per week): 30% Programming assignments (one per week): 70% No midterm, no final

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 CMPE-013/L Lab Work All programs we are using can be loaded onto your own PC for use at any time—they are all free. We’re using microchip’s MPLAB-X IDE and X16 compiler (modern toolchain) Using Proteus VSM simulator to simulate an expensive development kit (Explorer16) You can buy the actual Explorer16 from Microchip if you want to (~$150).

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Microchip Explorer16

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Reading Assignment for Thur Gonick parts 1-3, review your notes from CE-12/L –There will be a quiz on this on Thursday Preface and Introduction of K & R Summit Notes on Preface and Introduction Lab 0 Documentation Check out Webpage and Piazza Forum

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Lab 0: “ ” Lab 0: “Compiling, Running, and Debugging” Due on Wednesday, 10-Apr-2013 at 11:55PM Get started early Make sure to read documentation Code submitted electronically using submit command through UNIX shell. Full lab on Website

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 What is a Computer? Computer –A computer is a machine that manipulates data based on a list of instructions called program. –A computer consists of hardware and software. Computer Hardware –Computer hardware is the physical part of a computer. –A typical computer consists of central processing unit (CPU), main memory and external memory, and input and output devices. –A CPU consists of control unit (CU), arithmetic and logic unit (ALU), and registers.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Samples of Computer Hardware A single board computer and a tiny computer.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 The von Newmann Computer Architecture Both programs and data are stored in the same memory

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 The Harvard Computer Architecture Programs and data are stored in different memory

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Major Components of a Computer 1.Input devices Obtains information from input devices (keyboard, mouse) 2.Output devices Outputs information (to screen, printer, control other devices) 3.Main memory Installs programs and data for rapid access 4.CPU: 4.1 Arithmetic and logic unit (ALU) Performs arithmetic calculations and logic decisions 4.2 Control unit (CU) Supervises and coordinates activities of the computer 4.3 Registers Fast memory 5. External memory Store programs and data permanently (hard disks, CDs, USB)

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Hardware Trends Moore’s Law (1965): The number of transistors that can be inexpensively placed on an integrated circuit increases exponentially, doubling approximately every two years. Based on Moore’s law, every two years, the following approximately double: –CPU speed at which computers execute their programs. –The amount of main memory. –The amount of secondary memory.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Computer Software Computer software refers to a collection of computer programs that can be loaded into main memory and executed in the CPU of a computer. Computer software can be classified as operating system and application software. An operating system is a software program for management and coordination of activities and sharing the resources of a computer. Application software refers to programs developed to assist users in completing specific tasks. A process: a running program. Software is harder than hardware.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Interaction of Users and Computer Hardware through Software Two interface methods: (1)Command shell (2)Graphical user interface (GUI)

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Computer Programming Languages Three types of programming languages 1.Machine code or machine languages A sequence of 0’s and 1’s giving machine specific instructions Example: Assembly language Using meaningful symbols to represent machine code. add hl,de Example: add hl,de Assembler: Assembly code  machine code Disassembler: machine code  assembly code

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Computer Programming Languages 3. High-level languages Similar to everyday English and use mathematical notations (processed by compilers or interpreters) Example of a C statement: a = a + 8;

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Comparison of High-Level Language with Machine Code and Assembly Code Memory address Machine code Assembly code X1EA ld de,0x0008 0X1EA ld hl,(sp+0) 0X1EA add hl,de 0X1EA ld (sp+0),hl The memory addresses, machine code, and assembly code corresponding to a C statement a = a + 8 for the Rabbit bit microprocessor.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring Reasons to Learn C C is one of foundations for modern information technology and computer science. 2.C is the most commonly used programming languages in industry. 3.C is a standardized programming language with international standards. 4.Writing computer programs is essential to solving complex science and engineering problems. 5.Computer programming is becoming a necessary skill for many professions. 6.Computer programming can develop student's critical thinking capabilities. 7.C is one of the most commonly used programming languages in colleges and universities. 8.C is the language of choice for programming embedded and mechatronic systems with hardware interface. 9.C excels as a model programming language. 10.Once you have learned C, you can pick up other languages without much difficulty by yourself because all other modern languages borrowed heavily from C.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Structured Programming in C –A disciplined approach to writing programs in C. –Clear, easy to test and debug, and easy to modify.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 History of C C –Invented by Ritchie based on B, a simplified version of BCPL. –Used to develop Unix operating system and Unix commands –Most system software such as OS are written in C or C++ –Replacement for assembly language for hardware interface. –By late 1970's C had evolved to “K & R C“ C Standards –1 st C standard created in 1989 by ANSI, ratified by ISO in It is called C89. Some call it C90. –2 nd C standard was ratified in 1999, called C99.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Just the Facts C was developed in 1972 in order to write the UNIX operating system C is more "low level" than other high level languages (good for MCU programming) C is supported by compilers for a wide variety of MCU architectures C can do almost anything assembly language can do C is usually easier and faster for writing code than assembly language

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Busting the Myths (1.2) The truth shall set you free… C is not as portable between architectures or compilers as everyone claims –ANSI language features ARE portable –Processor specific libraries are NOT portable –Processor specific code (peripherals, I/O, interrupts, special features) are NOT portable C is NOT as efficient as assembly –A good assembly programmer can usually do better than the compiler, no matter what the optimization level – C WILL use more memory

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Busting the Myths (2.2) The truth shall set you free… There is NO SUCH THING as self documenting code – despite what many C proponents will tell you –C makes it possible to write very confusing code – just search the net for obfuscated C code contests… ( –Not every line needs to be commented, but most blocks of code should be Because of many shortcuts available, C is not always friendly to new users – hence the need for comments!

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 What we will cover in 13/L (1.3) “C” programming –Using C in an Embedded Environment –Comments –Variables, Identifiers and Data Types –Literal Constants –Symbolic Constants –printf() Library Function –Operators –Expressions and Statements –Making Decisions –Loops –Functions –Multi-File Projects & Storage Class Specifiers

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 What we will cover in 13/L (2.3) “C” programming (con’t) –Arrays –Data Pointers –Function Pointers –Structures –Unions –Bit Fields –Enumerations –Macros with #define Advanced Techniques –State Machines –Recursion –Interrupts –Program decomposition –Abstraction –Scope –Static / Dynamic Memory allocation

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 What we will cover in 13/L (3.3) Embedded “C” on a microcontroller –Specific issues with uControllers –Peripheral usage –Reading documentation Testing and Debugging –Commenting –Test harnesses –Incremental development –Issues with embedded debugging

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Key things we’ll enforce (1.2) Clean and clear style –More important to adhere to established guidelines than use the “right” style –We’ll use (modified) K&R style guide Modularity and decomposition –Code is segmented by functionality –Proper use of.h and.c files –Good use of functions for clean implementation

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Key things we’ll enforce (2.2) State Machines / Event Driven Programming –Best way to design reactive systems –Makes debugging much easier Incremental build and test –Every bit of code has a unit test –Unit test is designed with code block –Use of pseudo-code and comments –End to end code checks

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful Ugly Dog Beautiful Dog

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful Ugly Car Beautiful Car

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful Ugly Building Beautiful Building

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful Ugly Man Beautiful Man

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful Ugly Woman Beautiful Woman

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful typedef char C;typedef long I; typedef struct a{I t,r,d[3],p[2];}*A; #define P printf #define R return #define V1(f) A f(w)A w; #define V2(f) A f(a,w)A a,w; #define DO(n,x) {I i=0,_n=(n);for(;i<_n;++i){x;}} I *ma(n){R(I*)malloc(n*4);}mv(d,s,n)I *d,*s;{DO(n,d[i]=s[i]);} tr(r,d)I *d;{I z=1;DO(r,z=z*d[i]);R z;} A ga(t,r,d)I *d;{A z=(A)ma(5+tr(r,d));z->t=t,z->r=r,mv(z->d,d,r); R z;} V1(iota){I n=*w->p;A z=ga(0,1,&n);DO(n,z->p[i]=i);R z;} V2(plus){I r=w->r,*d=w->d,n=tr(r,d);A z=ga(0,r,d); DO(n,z->p[i]=a->p[i]+w->p[i]);R z;} V2(from){I r=w->r-1,*d=w->d+1,n=tr(r,d); A z=ga(w->t,r,d);mv(z->p,w->p+(n**a->p),n);R z;} V1(box){A z=ga(1,0,0);*z->p=(I)w;R z;} V2(cat){I an=tr(a->r,a->d),wn=tr(w->r,w->d),n=an+wn; A z=ga(w->t,1,&n);mv(z->p,a->p,an);mv(z->p+an,w->p,wn);R z;} V2(find){} V2(rsh){I r=a->r?*a->d:1,n=tr(r,a->p),wn=tr(w->r,w->d); A z=ga(w->t,r,a->p);mv(z->p,w->p,wn=n>wn?wn:n); if(n-=wn)mv(z->p+wn,z->p,n);R z;} V1(sha){A z=ga(0,1,&w->r);mv(z->p,w->d,w->r);R z;} V1(id){R w;}V1(size){A z=ga(0,0,0);*z->p=w->r?*w->d:1;R z;} pi(i){P("%d ",i);}nl(){P("\n");} pr(w)A w;{I r=w->r,*d=w->d,n=tr(r,d);DO(r,pi(d[i]));nl(); if(w->t)DO(n,P(" p[i]))else DO(n,pi(w->p[i]));nl();} C vt[]="+{~<#,"; A(*vd[])()={0,plus,from,find,0,rsh,cat}, (*vm[])()={0,id,size,iota,box,sha,0}; /**************************************************************************** Function: RC_Init Parameters RCpins: an unsigned short with a 1 in each position to set the pin as an RC servo pin, should be a bitwise OR of the #define'd RC_PORTxxx pins. Returns char: SUCCESS or ERROR Description Initializes the RC_Servo subsystem, sets each pin as a digital output, and sets the uptime for each pin at 1.5msec, with a period of 20msec. Notes: Uses TIMER4 with a rollover. Author: Gabriel Hugh Elkaim, :42 ****************************************************************************/ char RC_Init(unsigned short int RCpins) { char i, curPin; unsigned short int CurrentTime; dbprintf("\nInitializing the RC Servo Module."); // Check if inputs are in range, and if already initialized if ((RCpins == 0x000) || (RCpins > 0x2FF) || (RCstate != off)) { return ERROR; } RCstate = init; // Go through input and set each RC pin direction and force to low for (i = 0; i < RCPINCOUNT; i++) { curPin = (1 << i); if (RCpins & curPin) { RCpinMap[numRCPins] = i; numRCPins++; RC_upTime[i] = SERVOCENTER; *RC_TRISCLR[i] = rcBitsMap[i]; // Sets pin direction to output *RC_LATCLR[i] = rcBitsMap[i]; // Forces pin to low state dbprintf("\nEnabling pin: 0x%X", curPin); }

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Concept of Ugly/Beautiful Code can be ugly or beautiful We will strive to write beautiful code While you might not recognize it, yet, you will by the end of this quarter.

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Software Architecture Often orthogonal to Project Management Can be the success or failure of a project

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Flow Chart and Pseudo-Code Pseudo-code is plain English that explains in coarse steps what the code should do –Not syntax specific –Forms the basis for your top-level comment –Hides details of programming language

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Style Examples Adherence to a specific style –Variables in camelCase with leading lower case –Functions in CamelCase with leading Upper case –#define (literal constants) are in UPPERCASE Exception: macros can look like functions if they act like one –Variable and Function names are descriptive Eg: backingUpState = TRUE; –Correct use of white space and indentation –Correct placement of braces {}

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Linker Development Tools Data Flow C Compiler Archiver (Librarian) MPLAB ® IDE Debug Tool C Source Files Assembly Source Files Object Files Object File Libraries (Archives) Linker Script COFF Debug File Executable Memory Map Compiler Driver Program Assembler (.asm or.s) (.lib or.a) (.lkr or.gld) (.asm or.s)

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Development Tools Data Flow C Compiler Compiler C Source FileC Header File Preprocessor.s Assembly Source File.h.c

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Example Fundamentals of C A Simple C Program #include #define PI int main(void) { float radius, area; //Calculate area of circle radius = 12.0; area = PI * radius * radius; printf("Area = %f", area); } Header File Function Variable Declarations Constant Declaration (Text Substitution Macro) Comment Preprocessor Directives

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 C Runtime Environment (1.2) C Compiler sets up a runtime environment –Allocates space for stack –Initialize stack pointer –Allocates space for heap –Copies values from Flash/ROM to variables in RAM that were declared with initial values –Clear uninitialized RAM –Disable all interrupts –Call main() function (where your code starts)

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 C Runtime Environment (2.2) Runtime environment setup code is automatically linked into application by most PIC ® compiler suites Usually comes from: –XC16: crt0.s / crt0.o (crt = C RunTime) User modifiable if absolutely necessary Details will be covered in lab sections

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Stack/Heap Stack grows from bottom “up” Heap grows from top “down”

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Stack/Heap

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013 Questions?

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013

CMPE-013/L: “C” Programming Gabriel Hugh Elkaim – Spring 2013