0% found this document useful (0 votes)
80 views24 pages

Ee337: Microcontrollers and Microprocessors: Rajbabu Velmurugan and Shankar Balachandran

This document provides an overview of the EE337: Microcontrollers and Microprocessors course. It discusses using Embedded C with the Keil C51 compiler for programming microcontrollers. It covers various keywords added by Keil C51 like _at_, sbit, sfr, interrupt, using. It also discusses data memory models like small, compact, large and use of pointers, functions and interrupts in embedded C.

Uploaded by

Kusumit Ghoderao
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views24 pages

Ee337: Microcontrollers and Microprocessors: Rajbabu Velmurugan and Shankar Balachandran

This document provides an overview of the EE337: Microcontrollers and Microprocessors course. It discusses using Embedded C with the Keil C51 compiler for programming microcontrollers. It covers various keywords added by Keil C51 like _at_, sbit, sfr, interrupt, using. It also discusses data memory models like small, compact, large and use of pointers, functions and interrupts in embedded C.

Uploaded by

Kusumit Ghoderao
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

EE337: MICROCONTROLLERS

AND MICROPROCESSORS

RAJBABU VELMURUGAN AND


SHANKAR BALACHANDRAN

Embedded C
Using C
 Becoming very common for programming
microcontrollers
 Different flavors possible with different tools
 Embedded C using Keil is very convenient and
useful
Keywords

Keil C51 compiler adds few more keywords to the scope C Language:
_at_ far sbit
alien idata sfr
bdata interrupt sfr16
bit large small
code pdata _task_
compact _priority_ using
data reentrant xdata
Data/idata
unsigned char data x;
//or
unsigned char idata y;

Decides whether to store in internal data memory


bdata
unsigned char bdata x;
//each bit of the variable x can be accessed as
follows
x ^ 1 = 1; //1st bit of variable x is set
x ^ 0 = 0; //0th bit of variable x is cleared
_at_
 unsigned char idata x _at_ 0x30;
 // variable x will be stored at location 0x30
 // in internal data memory
sbit
 sbit Port0_0 = 0x80;
 // Special bit with name Port0_0 is defined at
address 0x80

Defines a special bit from special function register


(SFR)
Sfr
 sfr Port1 = 0x90;
 // Special function register with name Port1
defined at addrress 0x90
sfr16
 sfr16 DPTR = 0x82;
 // 16-bit special function register starting at 0x82
 // DPL at 0x82, DPH at 0x83
using
void function () using 2
{
// code
}
// Funtion named "function" uses register bank 2 while
executing its code
Interrupt
 Tells the compiler that a function is an ISR
 32 interrupts are possible
Example
void External_Int0() interrupt 0
{
//code
}
Memory Models
 Small
 All variables in internal data memory.
 Compact
 Variables in one page, maximum 256 variables (limited
due to addressing scheme, memory accessed indirectly
using r0 and r1 registers);
 Large
 All variables in external ram. variables are accessed
using DPTR.
Usage
 //For Small Memory model
 #pragma small
 //For Compact memory model
 #pragma compact
 //For large memory model
 #pragma large
Pointers
 Can do all operations that C has
 Two types
 Generic– just like in C
 Memory specific
Memory Specific
 Can specify pointers to be of specific type
 char data *c;
 //Pointer to character stored in Data memory
 char xdata *c1;
 //Pointer to character stored in External Data Memory.
 char code *c2;
 //Pointer to character stored in Code memory
Functions
 [Return_type] Fucntion_name ( [Arguments] )
[Memory_model] [reentrant] [interrupt n] [using n]
 Return_type
 The type of value returned from the function. If return
type of a function is not specified, int is assumed by
default.
 Function_name
 Name of function
 Arguments
 Arguments passed to function
Other options for functions
 Example: int add_number (int a, int b) Large
 reentrant
 To indicate if the function is reentrant or recursive.
 interrupt
 Indicates that function is an interrupt service routine.
 using
 Specify register bank to be used during function
execution.
Example
void function_name () using 2
{
//function uses Bank 2
//function code
}
Default INterrupts
ISR Example
void isr_name (void) interrupt 2
{
// Interrupt routine code
}
Function parameters
 Can be passed using registers
Or
 Fixed memory locations
Return
 Always in registers
Note
 Use C for large programs
 Can also use C And assembly together

You might also like