Embedded Systems and IoT - CS3691 - Notes - Unit 1 to 3
Embedded Systems and IoT - CS3691 - Notes - Unit 1 to 3
Environmental Sciences
Professional English and Sustainability -
Professional English - - II - HS3252 Discrete Mathematics GE3451
I - HS3152 - MA3354
Statistics and Theory of Computation
Matrices and Calculus Numerical Methods - Digital Principles and - CS3452
3rd Semester
4th Semester
- MA3151 MA3251 Computer Organization
1st Semester
2nd Semester
8th Semester
6th Semester
www.BrainKart.com
3024
COURSE OBJECTIVES:
To learn the internal architecture and programming of an embedded processor.
To introduce interfacing I/O devices to the processor.
To introduce the evolution of the Internet of Things (IoT).
To build a small low-cost embedded and IoT system using Arduino/RaspberryPi/ openplatform.
To apply the concept of Internet of Things in real world scenario.
1|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
UNIT I
▪ 8-Bit Microcontroller
▪ Architecture
▪ Interrupt Handling.
2|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Any programmable device holds a processor, memory, I/O ports and timer within it. But a
microcontroller contains all these components embedded in a single chip. This single-chip
manages the overall operation of the device.
A microprocessor simply contains a CPU that processes the operations with the help of other
peripheral units. Microprocessors are used where huge space is present to inbuilt a large
motherboard like in PCs.
1.2.1. Central processing unit (CPU): 8051 uses the 8-bit processor. This unit carries out the
operation on 8-bit data. A processor is the heart of microcontroller. As the execution of the
program stored in the memory is performed by the processor.
The unit performs arithmetic and logical operations on 8-bit data as it has ALU, with internal
registers and program counters.
Several logical operations are performed by the ALU according to the program stored in the
memory.
The processor of 8051 microcontrollers possesses a special feature by which it can process single
bit or 8-bit data. This simply means that it has the ability to access each single bit data either to
clear, set or move etc. for any logical computation.
3|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
1.2.2. Memory: Basically 8051 microcontroller consists of on-chip program memory i.e., ROM
and on-chip data memory i.e., RAM.
Let us first understand
• ROM
8051 microcontroller has 4 KB ROM with 0000H to 0FFFH as the addressable space. It is
completely a program or code memory that means used by the programmer to store the
programs that are to be executed by the microcontroller.
• The operations that are executed by the device in which the microcontroller is present are
stored in the ROM of the memory at the time of fabrication. Hence cannot be changed or
modified.
• RAM
8051 holds a 128 bytes RAM. Basically, RAM is used to store data or operands for only a
small time duration. It can be altered anytime according to the need of the user. It is also
known as the data memory as it stores the data temporarily.
•
Out of the 128-byte RAM, first, 32 bytes is held by the working registers. Basically, these are
4|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
4 banks which separately has 8 registers. These registers are accessed either by its name or
address. It is to be noted here that at a particular time only a single register bank can be used.
• As in 8051, the data and program memory i.e., RAM and ROM hold a definite memory
space. However, for some applications there exist the need for external memory to enhance
the memory space, thus external RAM, ROM/EPROM is used by the 8051 microcontrollers.
1.2.3. Input/ Output port: 8051 consists of 4 parallel ports of 8 bit each thereby providing 32
input-output pins. All the 4 ports function bidirectional i.e., either input or output according to
the software control.
1.2.4. Timer and Control Unit: Timers are used to create a time gap or delay between 2 events.
8051 microcontroller consists of 2 timers of 16 bit each by which the system can produce two
delays simultaneously in order to generate the appropriate delay.
1.2.6. The Data Pointer (DPTR) is the 8051's only user-accessible 16-bit (2-byte) register. The
Accumulator, R0–R7 registers and B register are 1-byte value registers. DPTR is meant for
pointing to data. It is used by the 8051 to access external memory using the address indicated by
DPTR.
Basically, microcontrollers use hardware delays in which a physical device is used by the
processor to produce the respective delay. And this physical device is known as a timer.
The timer produces the delay according to the demand of the processor and sends the signal to
the processor once the respective delay gets produced.
5|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
6|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
• P3.0 (RXD) : 10th pin is RXD (serial data receive pin) which is for serial input. Through this
input signal microcontroller receives data for serial communication.
• P3.1 (TXD) : 11th pin is TXD (serial data transmit pin) which is serial output pin. Through
this output signal microcontroller transmits data for serial communication.
• P3.2 and P3.3 (INT0′, INT1′ ) : 12th and 13th pins are for External Hardware Interrupt 0
and Interrupt 1 respectively. When this interrupt is activated(i.e. when it is low), 8051 gets
interrupted in whatever it is doing and jumps to the vector value of the interrupt (0003H for
INT0 and 0013H for INT1) and starts performing Interrupt Service Routine (ISR) from that
vector location.
• P3.4 and P3.5 (T0 and T1) : 14th and 15th pin are for Timer 0 and Timer 1 external input.
They can be connected with 16 bit timer/counter.
• P3.6 (WR’) : 16th pin is for external memory write i.e. writing data to the external memory.
• P3.7 (RD’) : 17th pin is for external memory read i.e. reading data from external memory.
• Pin 18 and Pin 19 (XTAL2 And XTAL1) – These pins are connected to an external
oscillator which is generally a quartz crystal oscillator. They are used to provide an external
clock frequency of 4MHz to 30MHz.
• Pin 20 (GND) – This pin is connected to the ground. It has to be provided with 0V power
supply. Hence it is connected to the negative terminal of the power supply.
• Pin 21 to Pin 28 (Port 2) – Pin 21 to pin 28 are port 2 pins also referred to as P2.0 to P2.7.
When additional external memory is interfaced with the 8051 microcontroller, pins of port 2
act as higher-order address bytes. These pins are bidirectional.
• Pin 29 (PSEN) – PSEN stands for Program Store Enable. It is output, active-low pin. This is
used to read external memory. In 8031 based system where external ROM holds the program
code, this pin is connected to the OE pin of the ROM.
• Pin 30 (ALE/ PROG) – ALE stands for Address Latch Enable. It is input, active-high pin.
This pin is used to distinguish between memory chips when multiple memory chips are used.
It is also used to de-multiplex the multiplexed address and data signals available at port 0.
During flash programming i.e. Programming of EPROM, this pin acts as program pulse input
(PROG).
• Pin 31 (EA/ VPP) – EA stands for External Access input. It is used to enable/disable
external memory interfacing. In 8051, EA is connected to Vcc as it comes with on-chip ROM
to store programs. For other family members such as 8031 and 8032 in which there is no on-
chip ROM, the EA pin is connected to the GND.
• Pin 32 to Pin 39 (Port 0) – Pin 32 to pin 39 are port 0 pins also referred to as P0.0 to P0.7.
They are bidirectional input/output pins. They don’t have any internal pull-ups. Hence, 10 K?
pull-up registers are used as external pull-ups. Port 0 is also designated as AD0-AD7 because
8051 multiplexes address and data through port 0 to save pins.
• Pin 40 (VCC) – This pin provides power supply voltage i.e. +5 Volts to the circuit.
7|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The pin diagram of the 8051 microcontroller is used for various purposes in embedded systems.
Some of the main uses of the pin diagram are:
1. Interfacing with external devices: The 8051 microcontroller has several input/output pins
that can be used for interfacing with external devices such as sensors, actuators, displays, and
communication modules. The pin diagram provides the information about the location of
these pins, their functionalities, and their electrical characteristics.
2. Programming the microcontroller: The 8051 microcontroller can be programmed using
various programming languages such as Assembly, C, and BASIC. The pin diagram provides
the information about the pins that are used for programming the microcontroller, such as the
PSEN pin and the ALE pin.
3. Debugging and testing: The pin diagram provides access to the internal signals of the
microcontroller, such as the address and data buses, which can be used for debugging and
testing the microcontroller. Special hardware tools such as logic analyzers and oscilloscopes
can be connected to the pins to monitor the signals and diagnose any issues in the system.
4. Expansion and customization: The pin diagram provides the flexibility to expand and
customize the functionality of the microcontroller by connecting external devices and
peripherals. For example, additional memory can be added by connecting external RAM or
ROM chips to the address and data buses.
8|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The assembly language is a fully hardware related programming language. The embedded
designers must have sufficient knowledge on hardware of particular processor or controllers
before writing the program. The assembly language is developed by mnemonics; therefore, users
cannot understand it easily to modify the program.
Assembly programming language is developed by various compilers and the “keiluvison” is best
suitable for microcontroller programming development.
Microcontrollers or processors can understand only binary language in the form of ‘0s or 1s’;
An assembler converts the assembly language to binary language, and then stores it in
the microcontroller memory to perform the specific task.
The 8051 microcontroller is the CISC based Harvard architecture, and it has peripherals like 32
I/O, timers/counters, serial communication and memories. The microcontroller requires a
program to perform the operations that require a memory for saving and to read the functions.
The 8051 microcontroller consists of RAM and ROM memories to store instructions.
9|Page
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
A Register is the main part in the processors and microcontrollers which is contained in the
memory that provides a faster way of collecting and storing the data. The 8051 assembly
language programming is based on the memory registers. If we want to manipulate data to a
processor or controller by performing subtraction, addition, etc., we cannot do that directly in the
memory, but it needs registers to process and to store the data. Microcontrollers contain several
types of registers that can be classified according to their instructions or content that operate in
them.
The assembly language is made up of elements which all are used to write the program
in sequential manner. Follow the given rules to write programming in assembly language.
10 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Op-code: The op-code is a single instruction that can be executed by the CPU. Here the op-code
is a MOV instruction.
Operands: The operands are a single piece of data that can be operated by the op-code.
Example, multiplication operation is performed by the operands that are multiplied by the
operand.
Syntax: MUL a,b;
• Assembler Directives
• Instruction Set
• Addressing Modes
ORG(origin): This directive indicates the start of the program. This is used to set the register
address during assembly. For example; ORG 0000h tells the compiler all subsequent code
starting at address 0000h.
Syntax: ORG 0000h
11 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
(define byte): The define byte is used to allow a string of bytes. For example, print the
“EDGEFX” wherein each character is taken by the address and finally prints the “string” by the
DB directly with double quotes.
Syntax:
ORG 0000h
MOV a, #00h
————-
————-
DB”EDGEFX”
Syntax:
reg equ,09h
—————–
—————–
MOV reg,#2h
12 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The above instruction and its execution. The opcode 74H is saved at 0202 address. The data
6AH is saved at 0203 address in the program memory. After reading the opcode 74H, the data at
the next program memory address is transferred to accumulator A (E0H is the address of
accumulator). Since the instruction is of 2-bytes and is executed in one cycle, the program
counter will be incremented by 2 and will point to 0204 of the program memory.
Note − The '#' symbol before 6AH indicates that the operand is a data (8 bit). In the absence of
'#', the hexadecimal number would be taken as an address.
13 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
As shown in the above illustration, this is a 2-byte instruction which requires 1 cycle to
complete. The PC will be incremented by 2 and will point to 0204. The opcode for the
instruction MOV A, address is E5H. When the instruction at 0202 is executed (E5H), the
accumulator is made active and ready to receive data. Then the PC goes to the next address as
0203 and looks up the address of the location of 04H where the source data (to be transferred to
accumulator) is located. At 04H, the control finds the data 1F and transfers it to the accumulator
and hence the execution is completed.
14 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
At a time, a single register bank can be selected. Selection of a register bank is made possible
through a Special Function Register (SFR) named Processor Status Word (PSW). PSW is an
8-bit SFR where each bit can be programmed as required. Bits are designated from PSW.0 to
PSW.7. PSW.3 and PSW.4 are used to select register banks.
Now, take a look at the following illustration to get a clear understanding of how it works.
Opcode EC is used for MOV A, R4. The opcode is stored at the address 0202 and when it is
executed, the control goes directly to R4 of the respected register bank (that is selected in PSW).
If register bank #0 is selected, then the data from R4 of register bank #0 will be moved to the
accumulator. Here 2F is stored at 04H. 04H represents the address of R4 of register bank #0.
15 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Data (2F) movement is highlighted in bold. 2F is getting transferred to the accumulator from data
memory location 0C H and is shown as dotted line. 0CH is the address location of Register 4
(R4) of register bank #1. The instruction above is 1 byte and requires 1 cycle for complete
execution. What it means is, you can save program memory by using register direct addressing
mode.
Register Indirect Addressing Mode
In this addressing mode, the address of the data is stored in the register as operand.
MOV A, @R0
Here the value inside R0 is considered as an address, which holds the data to be transferred to the
accumulator. Example: If R0 has the value 20H, and data 2FH is stored at the address 20H, then
the value 2FH will get transferred to the accumulator after executing this instruction. See the
following illustration.
So the opcode for MOV A, @R0 is E6H. Assuming that the register bank #0 is selected, the R0
of register bank #0 holds the data 20H. Program control moves to 20H where it locates the data
2FH and it transfers 2FH to the accumulator. This is a 1-byte instruction and the program counter
increments by 1 and moves to 0203 of the program memory.
Note − Only R0 and R1 are allowed to form a register indirect addressing instruction. In other
words, the programmer can create an instruction either using @R0 or @R1. All register banks
are allowed.
16 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
We will take two examples to understand the concept of indexed addressing mode. Take a look
at the following instructions −
MOVC A, @A+DPTR
and
MOVC A, @A+PC
where DPTR is the data pointer and PC is the program counter (both are 16-bit registers).
Consider the first example.
MOVC A, @A+DPTR
The source operand is @A+DPTR. It contains the source data from this location. Here we are
adding the contents of DPTR with the current content of the accumulator. This addition will give
a new address which is the address of the source data. The data pointed by this address is then
transferred to the accumulator.
The opcode is 93H. DPTR has the value 01FE, where 01 is located in DPH (higher 8 bits) and
FE is located in DPL (lower 8 bits). Accumulator has the value 02H. Then a 16-bit addition is
performed and 01FE H+02H results in 0200 H. Data at the location 0200H will get transferred to
17 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
the accumulator. The previous value inside the accumulator (02H) will be replaced with the new
data from 0200H. The new data in the accumulator is highlighted in the illustration.
This is a 1-byte instruction with 2 cycles needed for execution and the execution time required
for this instruction is high compared to previous instructions (which were all 1 cycle each).
The other example MOVC A, @A+PC works the same way as the above example. Instead of
adding DPTR with the accumulator, here the data inside the program counter (PC) is added with
the accumulator to obtain the target address.
1.3.4.3. Instruction Set
In the program in Example, the R2 register is used as a counter. The counter is first set to 10. In
each iteration the instruction DJNZ decrements R2 and checks its value. If R2 is not zero, it
jumps to the target address associated with the label “AGAIN”. This looping action continues
until R2 becomes zero. After R2 becomes zero, it falls through the loop and executes the
18 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
instruction immediately below it, in this case the “MOV R5 , A” instruction. Notice in the DJNZ
instruction that the registers can be any of RO – R7. The counter can also be a RAM location
Example
Write a program to (a) load the accumulator with the value 55H, and (b) complement the ACC
700 times.
Solution:
Since 700 is larger than 255 (the maximum capacity of any register), we use two registers to hold
the count. The following code shows how to use R2 and R3 for the count.
In this program, R2 is used to keep the inner loop count. In the instruction “DJNZ R2 , AGAIN”,
whenever R2 becomes 0 it falls through and “DJNZ R3 , NEXT” is executed. This instruction
forces the CPU to load R2 with the count 70 and the inner loop starts again. This process will
continue until R3 becomes zero and the outer loop is finished.
JZ (jump if A = 0)
19 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
In this instruction the content of register A is checked. If it is zero, it jumps to the target
address. For example, look at the following code.
In this program,. if either RO or Rl is zero, it jumps to the label OVER. Notice that the JZ
instruction can be used only for register A. It can only check to see whether the accumulator is
zero, and it does not apply to any other register. More importantly, you don’t have to perform an
arithmetic instruction such as decrement to use the JNZ instruction. See Example 3-4.
Example
20 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
raised (CY =1). If it is not, the CPU starts to fetch and execute instructions from the address of
the label. If CY = 1, it will not jump but will execute the next instruction below JNC.
Note that there is also a “JC label” instruction. In the JC instruction, if CY = 1 it jumps to the
target address. We will give more examples of these instructions in the context of applications in
future chapters.
There are also JB (jump if bit is high) and JNB (jump if bit is low) instructions. These are
discussed in Chapters 4 and 8 when bit manipulation instructions are discussed.
21 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
value of the program counter. To calculate the target address, the second byte is added to the PC
of the instruction immediately below the jump.
Shifting Operators
The shift operators are used for sending and receiving the data efficiently. The
8051 microcontroller consist four shift operators:
• RR —> Rotate Right
• RRC —>Rotate Right through carry
• RL —> Rotate Left
• RLC —>Rotate Left through carry
Syntax:
MOV A, #25h
RR A
Syntax:
MOV A, #25h
RL A
22 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Syntax:
MOV A, #27h
RRC A
Syntax:
MOV A, #27h
RLC A
The microcontroller programming differs for each type of operating system. There are many
operating systems such as Linux, Windows, RTOS and so on. However, RTOS has several
advantages for embedded system development. Some of the Assembly levels programming
examples are given below.
1.3.5. Example Program for LED blinking using with 8051 microcontroller:
• Number Displaying on 7-segment display using 8051 microcontroller
• Timer/Counter calculations and program using 8051 microcontroller
• Serial Communication calculations and program using 8051 microcontroller
23 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
There are four ports P0, P1, P2 and P3 each use 8 pins, making them 8-bit ports. All the ports upon
RESET are configured as output, ready to be used as output ports. To use any of these ports as an input
port, it must be programmed.
24 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Port 0: Port 0 occupies a total of 8 pins (pins 32-39) .It can be used for input or output. To use the pins of
port 0 as both input and output ports, each pin must be connected externally to a 10K ohm pull-up
resistor. This is due to the fact that P0 is an open drain, unlike P1, P2, and P3.Open drain is a term used
for MOS chips in the same way that open collector is used for TTL chips. With external pull-up resistors
connected upon reset, port 0 is configured as an output port. For example, the following code will
continuously send out to port 0 the alternating values 55H and AAH
MOV A,#55H
BACK: MOV P0,A
ACALL DELAY
CPL A
SJMP BACK
25 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Port 0 as Input : With resistors connected to port 0, in order to make it an input, the port must be
programmed by writing 1 to all the bits. In the following code, port 0 is configured first as an input port
by writing 1’s to it, and then data is received from the port and sent to P1.
Dual role of port 0: Port 0 is also designated as AD0-AD7, allowing it to be used for both address and
data. When connecting an 8051/31 to an external memory, port 0 provides both address and data. The
8051 multiplexes address and data through port 0 to save pins. ALE indicates if P0 has address or data.
When ALE = 0, it provides data D0-D7, but when ALE =1 it has address and data with the help of a
74LS373 latch.
Port 1: Port 1 occupies a total of 8 pins (pins 1 through 8). It can be used as input or output. In contrast to
port 0, this port does not need any pull-up resistors since it already has pull-up resistors internally. Upon
reset, Port 1 is configured as an output port. For example, the following code will continuously send out
to port1 the alternating values 55h & AAh
Port 1 as input: To make port1 an input port, it must programmed as such by writing 1 to all its bits. In
the following code port1 is configured first as an input port by writing 1’s to it, then data is received from
the port and saved in R7 ,R6 & R5.
26 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Port 2 : Port 2 occupies a total of 8 pins (pins 21- 28). It can be used as input or output. Just like P1, P2
does not need any pull-up resistors since it already has pull-up resistors internally. Upon reset,Port 2 is
configured as an output port. For example, the following code will send out continuously to port 2 the
alternating values 55h and AAH. That is all the bits of port 2 toggle continuously.
Port 2 as input : To make port 2 an input, it must programme as such by writing 1 to all its bits. In the
following code, port 2 is configured first as an input port by writing 1’s to it. Then data is received from
that port and is sent to P1 continuously.
Dual role of port 2 : In systems based on the 8751, 8951, and DS5000, P2 is used as simple I/O.
However, in 8031-based systems, port 2 must be used along with P0 to provide the 16-bit address for the
external memory. As shown in pin configuration 8051, port 2 is also designed as A8-A15, indicating the
dual function. Since an 8031 is capable of accessing 64K bytes of external memory, it needs a path for the
16 bits of the address. While P0 provides the lower 8 bits via A0-A7, it is the job of P2 to provide bits
A8-A15 of the address. In other words, when 8031 is connected to external memory, P2 is used for the
upper 8 bits of the 16 bit address, and it cannot be used for I/O.
Port 3 : Port 3 occupies a total of 8 pins, pins 10 through 17. It can be used as input or output. P3 does
not need any pull-up resistors, the same as P1 and P2 did not. Although port 3 is configured as an output
port upon reset. Port 3 has the additional function of providing some extremely important signals such as
interrupts. This information applies both 8051 and 8031 chips.
27 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Read-modify-write feature : The ports in the 8051 can be accessed by the read-modify-write technique.
This feature saves many lines of code by combining in a single instruction all three action of (1) reading
the port, (2) modifying it, and (3) writing to the port. The following code first places 01010101 (binary)
into port 1. Next, the instruction “XLR P1,#0FFH” performs an XOR logic operation on P1 with 1111
1111 (binary), and then writes the result back into P1.
1.4.3. Addition of two 8-bit numbers in 8051 Microcontroller Using Ports Introduction:
To perform addition of two 8-bit numbers using ports in 8051 microcontroller, we need
to connect the two 8-bit numbers to be added to two ports of the microcontroller. We can use any
two ports of the microcontroller, for example, P1 and P2.
The first step is to load the two numbers into two different ports. For example, we can
load the first number into port P1 and the second number into port P2. We can use the MOV
instruction to load the numbers into the ports.
Once the numbers are loaded into the ports, we can use the ADD instruction to add the
two numbers. The ADD instruction adds the contents of the accumulator and the specified
operand and stores the result in the accumulator. Since the two numbers are already loaded into
the ports, we can simply use the ADD instruction with the accumulator and the appropriate port.
After the addition is complete, we can retrieve the result from the accumulator and store
it in another port or memory location for further processing or display. 8051 microcontroller is a
microcontroller designed by Intel in 1981. It is an 8-bit microcontroller with 40 pins DIP (dual
inline package), 4kb of ROM storage and 128 bytes of RAM storage, 16-bit timers. It consists of
four parallel 8-bit ports, which are programmable as well as addressable as per the requirement.
28 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
3. Port initialization: The ports used for input and output must be properly initialized before
use. If the ports are not properly initialized, the data may not be transferred correctly.
4. Endianness: The order in which the bytes of the numbers are stored in memory can affect the
result of the addition. It is important to ensure that the bytes are stored in the correct order
before performing the addition.
5. Interrupts: If interrupts are enabled during the addition operation, the result may be affected.
It is important to disable interrupts during critical operations to ensure the correct result.
6. Timing: The timing of the addition operation can affect the result. It is important to ensure
that the necessary delays are added between instructions to ensure correct operation.
7. Code optimization: The code used to perform the addition should be optimized to ensure that
it uses the least number of instructions and takes the least amount of time. This is important
to avoid potential timing issues and to ensure that the microcontroller can perform other tasks
while the addition is being performed.
Problem: To write an assembly language program to add two 8 bit numbers in 8051
microcontroller using ports.
Example:
Block diagram:
29 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Algorithm:
• Initialize Ports P0 and P1 as input ports.
• Initialize Ports P2 and P3 as output ports.
• Initialize the R1 register.
• Move the contents from Port 0 to B register.
• Move the contents from Port 1 to A register.
• Add contents in A and B.
• If carry is present increment R1.
• Move contents in R1 to Port 2.
• Move the sum in step 6 to Port 3.
Program:
ORG 00H // Indicates starting address
30 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Explanation:
• ORG 00H is the starting address of the program.
• Giving the values as #0FFH and #00H initializes the ports as input and output ports
respectively.
• R1 register is initialized to 0 so as to store any carry produced during the sum.
• MOV B, P0 moves the value present in P0 to the B register.
• MOV A, P1 moves the value present in P1 to Accumulator.
• ADD AB adds the values present in Accumulator and B register and stores the result in
Accumulator.
• JNC L2 refers to jump to label L2 if no carry is present by automatically checking whether
the carry bit is set or not.
• If the carry bit is set to increment register R1.
• MOV P2, R1, and MOV P3, A refers to moving the carry bit to P2 and result in Accumulator
to P3.
8051 Clock
Every Timer needs a clock to work, and 8051 provides it from an external crystal which is the
main clock source for Timer. The internal circuitry in the 8051 microcontrollers provides a clock
source to the timers which is 1/12th of the frequency of crystal attached to the microcontroller,
also called Machine cycle frequency.
For example, suppose we have a crystal frequency of 11.0592 MHz then the microcontroller will
provide 1/12th i.e.
31 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
8051 has a Timer Mode Register and Timer Control Register for selecting a mode of operation
and controlling purpose.
Let's see these registers,
Its lower 4 bits are used for Timer0 and the upper 4 bits are used for Timer1
Bit 7,3 – GATE:
1 = Enable Timer/Counter only when the INT0/INT1 pin is high and TR0/TR1 is set.
0 = Enable Timer/Counter when TR0/TR1 is set.
Bit 6,2 - C/ (Counter/Timer): Timer or Counter select bit
1 = Use as Counter
0 = Use as Timer
32 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
M1 M0 Mode Operation
0 0 0 (13-bit timer mode) 13-bit timer/counter, 8-bit of THx & 5-bit of TLx
0 1 1 (16-bit timer mode) 16-bit timer/counter, THx cascaded with TLx
8-bit timer/counter (auto-reload mode), TLx reload
1 0 2 (8-bit auto-reload mode)
with the value held by THx each time TLx overflow
Split the 16-bit timer into two 8-bit timers i.e. THx
1 1 3 (split timer mode)
and TLx like two 8-bit timer
TCON is an 8-bit control register and contains a timer and interrupt flags.
Bit 7 - TF1: Timer1 Overflow Flag
1 = Timer1 overflow occurred (i.e. Timer1 goes to its max and roll over back to zero).
0 = Timer1 overflow not occurred.
It is cleared through software. In the Timer1 overflow interrupt service routine, this bit will get
cleared automatically while exiting from ISR.
33 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The Mode 0 operation is the 8-bit timer or counter with a 5-bit pre-scaler. So it is a 13-bit
timer/counter. It uses 5 bits of TL0 or TL1 and all of the 8-bits of TH0 or TH1.
In this example the Timer1is selected, in this case, every 32 (25)event for counter operations or
32 machine cycles for timer operation, the TH1 register will be incremented by 1. When the
TH1overflows from FFH to 00H, then the TF1 of TCON register will be high, and it stops the
timer/counter. So for an example, we can say that if the TH1 is holding F0H, and it is in timer
mode, then TF1will be high after 10H * 32 = 512 machine cycles.
MOVTMOD, #00H
MOVTH1, #0F0H
MOVIE, #88H
SETB TR1
34 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
In the above program, the Timer1 is configured as timer mode 0. In this case Gate = 0. Then the
TH1 will be loaded with F0H, then enable the Timer1 interrupt. At last set the TR1 of TCON
register, and start the timer.
Mode1 (16-bit timer mode)
The Mode 1 operation is the 16-bit timer or counter. In the following diagram, we are using
Mode 1 for Timer0.
In this case every event for counter operations or machine cycles for timer operation, the TH0–
TL0 register-pair will be incremented by 1. When the register pair overflows from FFFFH to
0000H, then the TF0 of TCON register will be high, and it stops the timer/counter. So for an
example, we can say that if the TH0 – TL0 register pair is holding FFF0H, and it is in timer
mode, then TF0 will be high after 10H = 16 machine cycles. When the clock frequency is
12MHz, then the following instructions generate an interrupt 16 µs after Timer0 starts running.
MOVTMOD, #01H
MOVTL0, #0F0H
MOVTH0, #0FFH
MOVIE, #82H
SETB TR0
In the above program, the Timer0 is configured as timer mode 1. In this case Gate = 0. Then the
TL0 will be loaded with F0H and TH0 is loaded with FFH, then enable the Timer0 interrupt. At
last set the TR0 of TCON register, and start the timer.
Mode2 (8-bit auto-reload timer mode)
The Mode 2 operation is the 8-bit auto reload timer or counter. In the following diagram, we are
using Mode 2 for Timer1.
In this case every event for counter operations or machine cycles for timer operation, the
TL1register will be incremented by 1. When the register pair overflows from FFH to 00H, then
the TF1 of TCON register will be high, also theTL1 will be reloaded with the content of TH1
and starts the operation again.
35 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
So for an example, we can say that if the TH1 and TL1 register both are holding F0H and it is in
timer mode, then TF1 will be high after 10H= 16 machine cycles. When the clock frequency is
12MHz this happens after 16 µs, then the following instructions generate an interrupt once every
16 µs after Timer1 starts running.
MOVTMOD, #20H
MOVTL1, #0F0H
MOVTH1, #0F0H
MOVIE, #88H
SETBTR1
In the above program, the Timer1 is configured as timer mode 2. In this case Gate = 0. Then the
TL1 and TH1 are loaded with F0H. then enable the Timer1 interrupt. At last set the TR1 of
TCON register, and start the timer.
Mode 3 of Timer/Counter
Mode 3 is different for Timer0 and Timer1. When the Timer0 is working in mode 3, the TL0
will be used as an 8-bit timer/counter. It will be controlled by the standard Timer0 control bits,
T0 and INT0 inputs. The TH0 is used as an 8-bit timer but not the counter. This is controlled by
Timer1 Control bit TR1. When the TH0 overflows from FFH to 00H, then TF1 is set to 1. In the
following diagram, we can Timer0 in Mode 3.
36 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
When the Timer1 is working in Mode 3, it simply holds the count but does not run. When
Timer0 is in mode 3, the Timer1 is configured in one of the mode 0, 1 and 2. In this case, the
Timer1 cannot interrupt the microcontroller. When the TF1 is used by TH0 timer, the Timer1 is
used as Baud Rate Generator.
The meaning of gate bit in Timer0 and Timer1 for mode 3 is as follows
It controls the running of 8-bit timer/counter TL0 as like Mode 0, 1, or 2. The running of TH0 is
controlled by TR1 bit only. So the gate bit in this mode for Timer0 has no specific role.
The mode 3 is present for applications requiring an extra 8-bit timer/counter. In Mode 3 of
Timer0, the 8051 has three timers. One 8-bit timer by TH0, another8-bit timer/counter by TL0,
and one 16-bit timer/counter by Timer1.
If the Timer0 is in mode3, and Timer1 is working on either 0, 1 or 2, then the gun control of the
Timer1 is activated when the gate bit is low or INT1 is high. The run control is deactivated
when the gate is high and INT1 is low.
37 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
TxD:
This pin basically acts as a transmitter ( sending data ), but in some other modes it doesn’t do the
job of transmitter. As it is serial communication, it sends bit by bit, the processor gives 8-bit at 1
time and those 8-bits are stored in a register named SBUF. Processor gives 1 byte of data that is
to be transmitted to SBUF and from there bit by bit is transferred , firstly LSB and then at last
MSB of the byte stored in SBUF. Once the total byte is transmitted, an interrupt is sent to the
processor by making some flag 1, so that the processor can send more data for transmission as
soon as the interrupt is received.
After every bit is transmitted, it requires delay for next bit transmission. So SBUF needs
triggering which is provided by
• Timer T1 ( here T1 only needs to trigger, T1 does not require its overflow flag , mode 3
in timers ). Here we can vary the delay, so data transmission delay can be varied
( frequency can be varied ). It has a variable baud rate.
• There is an internal clock in 8051 ( fosc / 12 = 1Mhz ) , where delay cannot be varied, this
has fixed trigger delay. So frequency cannot be varied.It has a fixed baud rate.
Whenever SBUF transferred 8bit of data , T i flag becomes 1. Whenever processors go to ISR( in
other interrupts the flag is auto cleared whenever processor goes to ISR ) , in this the T i flag is
not auto cleared.
RxD:
This pin is basically for data reception . It received data bit by bit ( as the transmitter sends LSB
first, it received LSB first ). There is also a register SBUF which stores 8 received bits. Once the
8 bits are received, instead of sending an interrupt it firstly checks for errors ( errors caused due
to transmission). Once there is no error in the received information R i flag is set and an interrupt
is sent to the processor. Processor goes to ISR ( here also Ri is not cleared automatically ).
38 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
How are SBUF in TxD and RxD different from each other ?
In SBUF of TxD, data is sent from processor to SBUF
In SBUF of RxD, data is sent from SBUF to the processor.
In this way both registers are differentiated by the processor.
Receiver assumes blue data ( when there was no communication ) also as data.
39 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Here green is the start bit which is zero. And then the yellow colored is stop bit which is 1.
Whenever the first 0 bit comes, the receiver discards the start bit and accepts the next 8 bits and
stores in SBUF. Then the 9th bit is 1 , this bit is stored in RB8 ( will be discussed later ). Then
after this whenever the next zero bit comes ( that zero bit is discarded and accepts the next 8 bits
and so on ).
Stop bit is also used for error checking. Whenever SM2=1, It checks for error, If the RB8 = 1
( which means stop = 1 received, so the data is received correctly ) and if RB8=0 ( transmitter
generated stop as 1, but received as 0 ) so there is an error. If there is an error in received data, no
interrupt is sent to the processor.
The 9th bit is a programmable bit and it is given through TB8. Here 9th bit is 1 and it is used for
error checking and stop bit for triggering the data high ( so start bit gets 0 and so on ).
40 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Why the 9th bit , when the already stop bit exists?
Standard value of 9th bit is 1 and can be made 0.
Whenever SM2 = 1( receiver accepts only errorless data ) and if 9th bit is 1, then only errorless
data is accepted or else discarded. Discarding data is a purpose.
Mode 0 :
Totally there were four modes in serial port of 8051, but for better understanding mode 0 is
explained after three modes. In this mode data is transferred and received only through the RxD
channel. TxD is used for clocks. This is synchronous mode of communication.
Such a system is also known as half duplex mode. It has fixed baud rate.
SCON register:
41 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Ri :
When 8-bits are sent from SBUF,and SBUF is empty , then Ri = 1, that would send an interrupt
to the processor. Before Ri=1, it checks for error based on SM2.
Interrupts are events detected by the MCU which cause normal program flow to be pre-empted.
Interrupts pause the current program and transfer control to a specified user-written firmware
routine called the Interrupt Service Routine (ISR). The ISR processes the interrupt event, then
resumes normal program flow.
Interrupt occurs
When an interrupt request flag is set and the interrupt is properly enabled, the interrupt process
begins:
1. Global Interrupts are disabled by clearing GIE to 0.
2. The current program context is saved to the shadow registers.
3. The value of the Program Counter is stored on the return stack.
4. Program control is transferred to the interrupt vector at address 04h.
ISR runs
The ISR is a function written by the user and placed at address 04h. The ISR does the following:
42 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
1. Checks the interrupt-enabled peripherals for the source of the interrupt request.
2. Performs the necessary peripheral tasks.
3. Clears the appropriate interrupt request flag.
4. Executes the Return From Interrupt instruction (RETFIE) as the final ISR instruction.
43 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
44 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
PIR2 register
The INTEDG flag in OPTION_REG is used to set a rising or falling edge on the INT pin as the
trigger for an INTE interrupt.
Enabling Interrupts
Core Interrupts
Three interrupt sources (Timer0, External Interrupt, and Interrupt on Change) have interrupt
enable bits located in INTCON. These interrupts are referred to as core interrupts.
45 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
46 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
UNIT II
EMBEDDED C PROGRAMMING
• Context Switching
47 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
48 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Hence, it is clear that the memory is an important part of the 8051 Microcontroller Architecture
(for that matter, any Microcontroller). So, it is important for us to understand the 8051
Microcontroller Memory Organization i.e., how memory is organized, how the processor
accesses each memory and how to interface external memory with 8051 Microcontroller.
Before going in to the details of the 8051 Microcontroller Memory Organization, we will first
see a little bit about the Computer Architecture and then proceed with memory organization of
8051 Microcontroller.
1.2.3. Types of Computer Architecture
Basically, Microprocessors or Microcontrollers are classified based on the two types of
Computer Architecture: Von Neumann Architecture and Harvard Architecture.
49 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Harvard Architecture
Harvard Architecture, in contrast to Von Neumann Architecture, uses separate memory for
Instruction (Program) and Data. Since the Instruction Memory and Data Memory are separate in
a Harvard Architecture, their signal paths i.e., buses are also different and hence, the CPU can
access both Instructions and Data at the same time.
Almost all Microcontrollers, including 8051 Microcontroller implement Harvard Architecture.
50 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
In 8051 Microcontroller, the code or instructions to be executed are stored in the Program
Memory, which is also called as the ROM of the Microcontroller. The original 8051
Microcontroller by Intel has 4KB of internal ROM.
Some variants of 8051 like the 8031 and 8032 series doesn’t have any internal ROM (Program
Memory) and must be interfaced with external Program Memory with instructions loaded in it.
Almost all modern 8051 Microcontrollers, like 8052 Series, have 8KB of Internal Program
Memory (ROM) in the form of Flash Memory (ROM) and provide the option of reprogramming
the memory.
In case of 4KB of Internal ROM, the address space is 0000H to 0FFFH. If the address space i.e.,
the program addresses exceed this value, then the CPU will automatically fetch the code from the
external Program Memory.
For this, the External Access Pin (EA Pin) must be pulled HIGH i.e., when the EA Pin is high,
the CPU first fetches instructions from the Internal Program Memory in the address range of
0000H to 0FFFFH and if the memory addresses exceed the limit, then the instructions are
fetched from the external ROM in the address range of 1000H to FFFFH.
51 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
There is another way to fetch the instructions: ignore the Internal ROM and fetch all the
instructions only from the External Program Memory (External ROM). For this scenario, the EA
Pin must be connected to GND. In this case, the memory addresses of the external ROM will be
from 0000H to FFFFH.
52 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
But
almost all modern variants of 8051 Microcontroller have 256B of RAM. In this 256B, the first
128B i.e., memory addresses from 00H to 7FH is divided in to Working Registers (organized as
Register Banks), Bit – Addressable Area and General Purpose RAM (also known as Scratchpad
area).
In the first 128B of RAM (from 00H to 7FH), the first 32B i.e., memory from addresses 00H to
1FH consists of 32 Working Registers that are organized as four banks with 8 Registers in each
Bank.
The 4 banks are named as Bank0, Bank1, Bank2 and Bank3. Each Bank consists of 8 registers
named as R0 – R7. Each Register can be addressed in two ways: either by name or by address.
To address the register by name, first the corresponding Bank must be selected. In order to select
the bank, we have to use the RS0 and RS1 bits of the Program Status Word (PSW) Register (RS0
and RS1 are 3rd and 4th bits in the PSW Register).
When addressing the Register using its address i.e., 12H for example, the corresponding Bank
may or may not be selected. (12H corresponds to R2 in Bank2).
The next 16B of the RAM i.e., from 20H to 2FH are Bit – Addressable memory locations. There
are totally 128 bits that can be addressed individually using 00H to 7FH or the entire byte can be
addressed as 20H to 2FH.
53 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The designer of an 8051 Microcontroller based system is not limited to the internal RAM and
ROM present in the 8051 Microcontroller. There is a provision of connecting both external RAM
and ROM i.e., Data Memory and Program.
The reason for interfacing external Program Memory or ROM is that complex programs written
in high – level languages often tend to be larger and occupy more memory.
Another important reason is that chips like 8031 or 8032, which doesn’t have any internal ROM,
have to be interfaced with external ROM.
A maximum of 64KB of Program Memory (ROM) and Data Memory (RAM) each can be
interface with the 8051 Microcontroller.
The following image shows the block diagram of interfacing 64KB of External RAM and 64KB
of External ROM with the 8051 Microcontroller.
An important point to remember when interfacing external memory with 8051 Microcontroller is
that Port 0 (P0) cannot be used as an IO Port as it will be used for multiplexed address and data
bus (A0 – A7 and D0 – D7). Not always, but Port 2 may be used as higher byte of the address
bus.
54 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Embedded C programming plays a key role in performing specific function by the processor. In
day-to-day life we used many electronic devices such as mobile phone, washing machine, digital
camera, etc. These all device working is based on microcontroller that are programmed by
embedded C.
In embedded system programming C code is preferred over other language. Due to the following
reasons:
o Easy to understand
o High Reliability
o Portability
o Scalability
Let's see the block diagram representation of embedded system programming:
Basic Declaration
Let's see the block diagram of Embedded C Programming development:
55 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Function is a collection of statements that is used for performing a specific task and a collection
of one or more functions is called a programming language. Every language is consisting of
basic elements and grammatical rules. The C language programming is designed for function
with variables, character set, data types, keywords, expression and so on are used for writing a C
program.
#include<microcontroller name.h>
The microcontroller programming is different for each type of operating system. Even though
there are many operating system are exist such as Windows, Linux, RTOS, etc but RTOS has
several advantage for embedded system development.
56 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Embedded C is one of the most popular and most commonly used Programming Languages in
the development of Embedded Systems. So, we will see some of the Basics of Embedded C
Program and the Programming Structure of Embedded C.
An example for embedded system, which we use daily, is a Wireless Router. In order to get
wireless internet connectivity on our mobile phones and laptops, we often use routers. The task
of a wireless router is to take the signal from a cable and transmit it wirelessly. And take wireless
data from the device (like a mobile) and send it through the cable.
We use washing machines almost daily but wouldn’t get the idea that it is an embedded system
consisting of a Processor (and other hardware as well) and software.
It takes some inputs from the user like wash cycle, type of clothes, extra soaking and rinsing,
spin rpm, etc., performs the necessary actions as per the instructions and finishes washing and
drying the clothes. If no new instructions are given for the next wash, then the washing machines
repeats the same set of tasks as the previous wash.
Embedded Systems can not only be stand-alone devices like Washing Machines but also be a
part of a much larger system. An example for this is a Car. A modern day Car has several
57 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
individual embedded systems that perform their specific tasks with the aim of making a smooth
and safe journey.
Some of the embedded systems in a Car are Anti-lock Braking System (ABS), Temperature
Monitoring System, Automatic Climate Control, Tire Pressure Monitoring System, Engine Oil
Level Monitor, etc.
All these devices have one thing in common: they are programmable i.e., we can write a program
(which is the software part of the Embedded System) to define how the device actually works.
Embedded Software or Program allow Hardware to monitor external events (Inputs / Sensors)
and control external devices (Outputs) accordingly. During this process, the program for an
Embedded System may have to directly manipulate the internal architecture of the Embedded
Hardware (usually the processor) such as Timers, Serial Communications Interface, Interrupt
Handling, and I/O Ports etc.
From the above statement, it is clear that the Software part of an Embedded System is equally
important as the Hardware part. There is no point in having advanced Hardware Components
with poorly written programs (Software).
There are many programming languages that are used for Embedded Systems like Assembly
(low-level Programming Language), C, C++, JAVA (high-level programming languages), Visual
Basic, JAVA Script (Application level Programming Languages), etc.
In the process of making a better embedded system, the programming of the system plays a vital
role and hence, the selection of the Programming Language is very important.
• Size: The memory that the program occupies is very important as Embedded Processors
like Microcontrollers have a very limited amount of ROM (Program Memory).
58 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
• Speed: The programs must be very fast i.e., they must run as fast as possible. The
hardware should not be slowed down due to a slow running software.
• Portability: The same program can be compiled for different processors.
• Ease of Implementation
• Ease of Maintenance
• Readability
Earlier Embedded Systems were developed mainly using Assembly Language. Even though
Assembly Language is closest to the actual machine code instructions and produces small size
hex files, the lack of portability and high amount of resources (time and man power) spent on
developing the code, made the Assembly Language difficult to work with.
There are other high-level programming languages that offered the above mentioned features but
none were close to C Programming Language. Some of the benefits of using Embedded C as the
main Programming Language:
59 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Processor: The heart of an Embedded System is the Processor. Based on the functionality of the
system, the processor can be anything like a General Purpose Processor, a single purpose
processor, an Application Specific Processor, a microcontroller or an FPGA.
Memory: Memory is another important part of an embedded system. It is divided in to RAM and
ROM. Memory in an Embedded System (ROM to be specific) stores the main program and
RAM stores the program variables and temporary data.
Peripherals: In order to communicate with the outside world or control the external devices, an
Embedded System must have Input and Output Peripherals. Some of these peripherals include
Input / Output Ports, Communication Interfaces, Timers and Counters, etc.
Software: All the hardware work according to the software (main program) written. Software
part of an Embedded System includes initialization of the system, controlling inputs and outputs,
error handling etc.
NOTE: Many Embedded Systems, usually small to medium scaled systems, generally consists
of a Microcontroller as the main processor. With the help of a Microcontroller, the processor,
memory and few peripherals will be integrated in to a single device.
60 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The C Programming Language became so popular that it is used in a wide range of applications
ranging from Embedded Systems to Super Computers.
The extension in Embedded C from standard C Programming Language include I/O Hardware
Addressing, fixed point arithmetic operations, accessing address spaces, etc.
61 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
62 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
There are two ways you can write comments: one is the single line comments denoted by // and
the other is multiline comments denoted by /*….*/.
Global Variables: Global Variables, as the name suggests, are Global to the program i.e., they
can be accessed anywhere in the program.
Local Variables: Local Variables, in contrast to Global Variables, are confined to their
respective function.
Main Function: Every C or Embedded C Program has one main function, from where the
execution of the program begins.
63 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
In order to write the Embedded C Program for the above circuit, we will use the Keil C
Compiler. This compiler is a part of the Keil µVision IDE. The program is shown below.
64 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
It is very cheap and easily available in variety of shape, color and size. The LEDs are also used
in designing of message display boards and traffic control signal lights etc.
Consider the Proteus Software based simulation of LED blinking using 8051
Microcontroller is shown below:-
65 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
In above Proteus based simulation the LEDs are interfaced to the PORT0 of the 8051
microcontroller.
Let's see the Embedded C Program for generating the LED output sequence as shown
below:
00000001
00000010
00000100.....
.... And so on up to 10000000.
#include<reg51.h>
void main()
{
unsigned int k;
unsigned char l,b;
while(1)
{
P0=0x01;
b=P0;
for(l-0;l<3000;l++);
for(k=0;k<8;k++)
{
b=b<<1;
66 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
P0=b;
}
}
}
Consider the Embedded C Program for generating the LED output sequence as shown
below is:-
00000001
00000011
00000111.....
.... And so on up to 11111111.
#include<reg51.h>
void main()
{
unsigned int i;
unsigned char j,b;
while(1)
{
P0=0x01;
b=P0;
for(j-0;j<3000;j++);
for(j=0;j<8;j++)
{
bb=b<<1;
b=0x01;
P0=b;
}
}
}
Displaying Number on 7-Segment Display using 8051 Microcontroller
Electronic display used for displaying alphanumeric character is known as 7-Segment display it
is used in many systems for displaying the information.
It is constructed using eight LEDs which are connected in sequential way so as to display digits
from 0 to 9, when certain combinations of LEDs are switched on. It displays only one digit at a
time.
Consider the Proteus software based simulation of displaying number on 7-segment display
using 8051 microcontroller is:-
67 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Consider the program for displaying the number from '0 to F' on 7-segment display is:- 10s
#include<reg51.h>
sbit a= P3^0;
sbit x= P3^1;
sbit y= P3^2;
sbit z= P3^3;
void main()
{
unsigned char m[10]={0?40,0xF9,0?24,0?30,0?19,0?12,0?02,0xF8,0xE00,0?10};
unsigned int i,j;
a=x=y=z=1;
while(1)
{
for(i=0;i<10;i++)
{
P2=m[i];
for(j=0;j<60000;j++);
}
}
}
Consider the program for displaying numbers from '00 to 10' on a 7segment display is:-
#include<reg51.h>
sbit x= P3^0;
sbit y= P3^1;
void display1();
68 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
void display2();
void delay();
void main()
{
unsigned char m[10]={0?40,0xF9,0?24,0?30,0?19,0?12,0?02,0xF8,0xE00,0?10};
unsigned int i,j;
ds1=ds2=0;
while(1)
{
for(i=0,i<20;i++)
display1();
display2();
}
}
void display1()
{
x=1;
y=0;
P2=m[ds1];
delay();
x=1;
y=0;
P2=m[ds1];
delay();
}
void display2()
{
ds1++;
if(ds1>=10)
{
ds1=0;
ds2++;
if(ds2>=10)
{
ds1=ds2=0;
}
}
}
void delay()
{
unsigned int k;
69 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
for(k=0;k<30000;k++);
}
The key difference between an operating system such as Windows and an RTOS often found in
embedded systems is the response time to external events. An ordinary OS provides a non-
deterministic response to events with no guarantee with respect to when they will be processed,
albeit while trying to stay responsive. The user perceiving the OS to be responsive is more
important than handling underlying tasks. On the other hand, an RTOS' goal is fast and more
deterministic reaction.
Developers used to OS’s such as Windows or Linux will be quite familiar with the
characteristics of an embedded RTOS. They are designed to run in systems with limited memory,
and to operate indefinitely without the need to be reset.
Because an RTOS is designed to respond to events quickly and perform under heavy loads, it can
be slower at big tasks when compared to another OS.
The time-criticality of embedded systems vary from soft-real time washing machine control
systems through hard-real time aircraft safety systems. In situations like the latter, the
fundamental demand to meet real-time requirements can only be made if the OS scheduler’s
behavior can be accurately predicted.
Many operating systems give the impression of executing multiple programs at once, but this
multi-tasking is something of an illusion. A single processor core can only run a single thread of
execution at any one time. An operating system’s scheduler decides which program, or thread, to
70 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
run when. By rapidly switching between threads, it provides the illusion of simultaneous
multitasking.
The flexibility of an RTOS scheduler enables a broad approach to process priorities, although an
RTOS is more commonly focused on a very narrow set of applications. An RTOS scheduler
should give minimal interrupt latency and minimal thread switching overhead. This is what
makes an RTOS so relevant for time-critical embedded systems.
Using an RTOS means you can run multiple tasks concurrently, bringing in the basic
connectivity, privacy, security, and so on as and when you need them. An RTOS allows you to
create an optimized solution for the specific requirements of your project.
In a RTOS, Processing time requirement are calculated in tenths of seconds increments of time.
It is time-bound system that can be defined as fixed time constraints. In this type of system,
processing must be done inside the specified constraints. Otherwise, the system will fail.
71 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
72 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The Scheduler: This component of RTOS tells that in which order, the tasks can be executed
which is generally based on the priority.
Function Library: It is an important element of RTOS that acts as an interface that helps you to
connect kernel and application code. This application allows you to send the requests to the
Kernel using a function library so that the application can give the desired results.
Memory Management: this element is needed in the system to allocate memory to every
program, which is the most important element of the RTOS.
Fast dispatch latency: It is an interval between the termination of the task that can be identified
by the OS and the actual time taken by the thread, which is in the ready queue, that has started
processing.
User-defined data objects and classes: RTOS system makes use of programming languages
like C or C++, which should be organized according to their operation.
73 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
RTOS
74 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
robot hardly on the time., scientific experiments, medical imaging systems, industrial control
systems, weapon systems, robots, air traffic control systems, etc.
2. Task Shifting
Time assigned for shifting tasks in these systems is very less. For example, in older systems,
it takes about 10 microseconds. Shifting one task to another and in the latest systems, it takes
3 microseconds.
3. Focus On Application –
Focus on running applications and less importance to applications that are in the queue.
5. Error Free –
These types of systems are error-free.
75 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
6. Memory Allocation –
Memory allocation is best managed in these types of systems.
1. Limited Tasks –
Very few tasks run simultaneously, and their concentration is very less on few applications to
avoid errors.
3. Complex Algorithms –
The algorithms are very complex and difficult for the designer to write on.
5. Thread Priority –
It is not good to set thread priority as these systems are very less prone to switching tasks.
76 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Many (if not most) embedded computing systems do more than one thing that is, the
environment can cause mode changes that in turn cause the embedded system to behave quite
differently. For example, when designing a telephone answering machine,
We can define recording a phone call and operating the user’s control panel as distinct tasks,
because they perform logically distinct operations and they must be performed at very different
rates. These different tasks are part of the system’s functionality, but that application-level
organization of functionality is often reflected in the structure of the program as well.
A process is a single execution of a program. If we run the same program two different times,
we have created two different processes. Each process has its own state that includes not only its
registers but all of its memory. In some OSs, the memory management unit is used to keep each
process in a separate address space. In others, particularly lightweight RTOSs, the processes run
in the same address space. Processes that share the same address space are often called threads.
As shown in Figure, this device is connected to serial ports on both ends. The input to the box is
an uncompressed stream of bytes. The box emits a compressed string of bits on the output serial
line, based on a predefined compression table. Such a box may be used, for example, to
compress data being sent to a modem.
The program’s need to receive and send data at different rates for example, the program may
emit 2 bits for the first byte and then 7 bits for the second byte will obviously find itself reflected
in the structure of the code. It is easy to create irregular, ungainly code to solve this problem; a
more elegant solution is to create a queue of output bits, with those bits being removed from the
queue and sent to the serial port in 8-bit sets.
But beyond the need to create a clean data structure that simplifies the control structure of the
code, we must also ensure that we process the inputs and outputs at the proper rates. For
example, if we spend too much time in packaging and emitting output characters, we may drop
an input character. Solving timing problems is a more challenging problem.
The text compression box provides a simple example of rate control problems. A control panel
on a machine provides an example of a different type of rate control problem,
the asynchronous input.
77 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The control panel of the compression box may, for example, include a compression mode button
that disables or enables compression, so that the input text is passed through unchanged when
compression is disabled. We certainly do not know when the user will push the compression
mode button the button may be depressed asynchronously relative to the arrival of characters for
compression.
2.4.2. Multirate Systems
Implementing code that satisfies timing requirements is even more complex when multiple rates
of computation must be handled. Multirate embedded computing systems are very common,
including automobile engines, printers, and cell phones. In all these systems, certain operations
must be executed periodically, and each operation is executed at its own rate.
Figure illustrates different ways in which we can define two important requirements on
processes: release time and deadline.
The release time is the time at which the process becomes ready to execute; this is not
necessarily the time at which it actually takes control of the CPU and starts to run. An aperiodic
78 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
process is by definition initiated by an event, such as external data arriving or data computed by
another process.
The release time is generally measured from that event, although the system may want to make
the process ready at some interval after the event itself. For a periodically executed process, there
are two common possibilities.
In simpler systems, the process may become ready at the beginning of the period. More
sophisticated systems, such as those with data dependencies between processes, may set the
release time at the arrival time of certain data, at a time after the start of the period.
A deadline specifies when a computation must be finished. The deadline for an aperiodic
process is generally measured from the release time, since that is the only reasonable time
reference. The deadline for a periodic process may in general occur at some time other than the
end of the period.
Rate requirements are also fairly common. A rate requirement specifies how quickly processes
must be initiated.
The period of a process is the time between successive executions. For example, the period of a
digital filter is defined by the time interval between successive input samples.
79 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
The process’s rate is the inverse of its period. In a multirate system, each process executes at its
own distinct rate.
The most common case for periodic processes is for the initiation interval to be equal to the
period. However, pipelined execution of processes allows the initiation interval to be less than
the period. Figure illustrates process execution in a system with four CPUs.
CPU Metrics
We also need some terminology to describe how the process actually executes.
The initiation time is the time at which a process actually starts executing on the CPU.
The completion time is the time at which the process finishes its work.
The most basic measure of work is the amount of CPU time expended by a process. The CPU
time of process i is called Ci . Note that the CPU time is not equal to the completion time minus
initiation time; several other processes may interrupt execution. The total CPU time consumed
by a set of processes is
T= ∑ Ti
We need a basic measure of the efficiency with which we use the CPU. The simplest and most
direct measure is utilization:
Utilization is the ratio of the CPU time that is being used for useful computations to the total
available CPU time. This ratio ranges between 0 and 1, with 1 meaning that all of the available
CPU time is being used for system purposes. The utilization is often expressed as a percentage. If
we measure the total execution time of all processes over an interval of time t, then the CPU
utilization is
U=T/t.
80 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
It is easy to create irregular, ungainly code to solve this problem; a more elegant solution
is to create a queue of out put bits, with those bits being removed from the queue and sent to the
serial port in 8-bit sets. But beyond the need to create a clean data structure that simplifies the
control structure of the code, we must also ensure that we process the inputs and outputs at the
proper rates. For example, if we spend too much time in packaging and emitting output
characters, we may drop an input character. Solving timing problems is a more challenging
problem.
The text compression box provides a simple example of rate control problems. A control
panel on a machine provides an example of a different type of rate con- troll problem, the
asynchronous input. The control panel of the compression box may, for example, include a
compression mode button that disables or enables com- pression, so that the input text is passed
through unchanged when compression is disabled. We certainly do not know when the user will
push the compression modebutton— the button may be depressed a synchronously relative to the
arrival of characters for compression. We do know, however, that the button will be depressed at
a much lower rate than characters will be received, since it is not physically possible for a person
to repeatedly depress a button at even slow serial line rates. Keeping up with the input and output
data while checking on the button can introduce some very complex control code in to the
program. Sampling the button’s state too slowly can cause the machine to miss a button
depression entirely, but sampling it too frequently and duplicating a data value can cause the
machine to in correctly compress data.
One solution is to introduce a counter in to the main compression loop, so that a subroutine to
check the input button is called once every times the compression loop is executed. But this
solution does not work when either the compression loop or the button-handling routine has
81 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
highly variable execution times—if the execution time of either varies significantly, it will cause
the other to execute later than expected, possibly causing data to be lost. We need to be able to
keep track of these two different tasks separately, applying different timing requirements to each.
This is the sort of control that processes allow. The above two examples illustrate how
requirements on timing and execution rate can create major problems in programming. When
code is written to satisfy several different timing requirements at once, the control structures
necessary to get any sort of solution become very complex very quickly. Worse, such complex
control is usually quite difficult to verify for either functional or timing properties.
Utilization is the ratio of the CPU time that is being used for useful computations to the total
available CPUtime. This ratio ranges between 0 and 1, with 1 meaning that all of the available
CPU time is being used for system purposes. The utilization is often expressed as a percentage. If
82 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
we measure the total execution time of all processes over an interval of time t, then the CPU
utilization is U/T
Schedulability means whether there exists a schedule of execution for the processes in a
system that satisfies all their timing requirements. In general, we must construct a schedule to
show schedulability, but in some cases we can eliminate some sets of processes as unschedulable
using some very simple tests. Utilization is one of the key metrics in evaluating a scheduling
policy. Our most basic require- ment is that CPU utilization be no more than 100% since we
can’t use the CPU more than100% of the time.
When we evaluate the utilization of the CPU, we generally do so over a finite period that covers
all possible combinations of process executions. For periodic processes, the length of time that
must be considered is the hyper period, which is the least-common multiple of the periods of all
the processes. If we evaluate the hyper period, we are sure to have considered all possible
combinations of the periodic processes.
designer. Here is a very simple program that runs our process subroutines repeatedly: A timer is
a much more reliable way to control execution of the loop. We would probably use the timer to
generate periodic interrupts. Let’s assume for the moment that the pall() function is called by the
timer’s interrupt handler. Then this code will execute each process once after a timer interrupt:
83 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
voidpall()
{
p1();
p2();
}
But what happens when a process runs too long? The timer’s interrupt will cause the CPU’s
interrupt system to mask its interrupts, so the interrupt will not occur until after the pall() routine
returns. As a result, the next iteration will start late. This is a serious problem, but we will have
to wait for further refinements before we can fix it.
Our next problem is to execute different processes at different rates. If we have several timers,
we can set each timer to a different rate. We could then use a function to collect all the processes
that run at that rate:
voidpA()
{
/*processesthatrunatrateA*/
p1();
p3();
}
void pB()
{
/*processesthatrunatrateB*/
}
This solution allows us to execute processes at rates that are simple multiples of each other.
However, when the rates are n’t related by a simple ratio, the counting process becomes more
complex and more likely to contain bugs. We have developed somewhat more reliable code, but
this programming style is still limited in capability and prone to bugs. To improve both the
capabilities and reliability of our systems, we need to invent the RTOS.
84 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Context Switch
Context switching in an operating system involves saving the context or state of a running
process so that it can be restored later, and then loading the context or state of another. process
and run it.
Context Switching refers to the process/method used by the system to change the process from
one state to another using the CPUs present in the system to perform its job.
Example – Suppose in the OS there (N) numbers of processes are stored in a Process Control
Block(PCB). like The process is running using the CPU to do its job. While a process is running,
other processes with the highest priority queue up to use the CPU to complete their job.
The operating system’s need for context switching is explained by the reasons listed below.
1. One process does not directly switch to another within the system. Context switching makes
it easier for the operating system to use the CPU’s resources to carry out its tasks and store its
context while switching between multiple processes.
2. Context switching enables all processes to share a single CPU to finish their execution and
store the status of the system’s tasks. The execution of the process begins at the same place
where there is a conflict when the process is reloaded into the system.
3. Context switching enables all processes to share a single CPU to finish their execution and
store the status of the system’s tasks. The execution of the process begins at the same place
where there is a conflict when the process is reloaded into the system.
4. Context switching only allows a single CPU to handle multiple processes requests parallelly
without the need for any additional processors.
Interrupts: When a CPU requests that data be read from a disc, if any interruptions occur,
context switching automatically switches to a component of the hardware that can handle the
interruptions more quickly.
85 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Multitasking: The ability for a process to be switched from the CPU so that another process can
run is known as context switching. When a process is switched, the previous state is retained so
that the process can continue running at the same spot in the system.
Kernel/User Switch: This trigger is used when the OS needed to switch between the user mode
and kernel mode.
When switching between user mode and kernel/user mode is necessary, operating systems use
the kernel/user switch.
86 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
87 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
• In priority scheduling, a number is assigned to each process that indicates its priority
level.
• Lower the number, higher is the priority.
• In this type of scheduling algorithm, if a newer process arrives, that is having a higher
priority than the currently running process, then the currently running process is
preempted.
Step 2) At time 2, no new process arrives, so you can continue with P1. P2 is in the waiting
queue.
88 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Step 3) At time 3, no new process arrives so you can continue with P1. P2 process still in the
waiting queue.
Step 6) At time=6, P3 arrives. P3 is at higher priority (1) compared to P2 having priority (2). P2
is preempted, and P3 begins its execution.
89 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Step 7) At time 7, no-new process arrives, so we continue with P3. P2 is in the waiting queue.
90 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Step 10) At time interval 10, no new process comes, so we continue with P3
Step 11) At time=11, P4 arrives with priority 4. P3 has higher priority, so it continues its
execution.
Process Priority Burst time Arrival time
P1 1 4 0
P2 2 1 out of 3 pending 0
P3 1 2 out of 7 pending 6
P4 3 4 11
P5 2 2 12
91 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Step 13) At time=13, P3 completes execution. We have P2,P4,P5 in ready queue. P2 and P5
have equal priority. Arrival time of P2 is before P5. So P2 starts execution.
Process Priority Burst time Arrival time
P1 1 4 0
P2 2 1 out of 3 pending 0
P3 1 7 6
P4 3 4 11
P5 2 2 12
Step 14) At time =14, the P2 process has finished its execution. P4 and P5 are in the waiting
state. P5 has the highest priority and starts execution.
92 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
Step 16) At time= 16, P5 is finished with its execution. P4 is the only process left. It starts
execution.
Step 17) At time =20, P5 has completed execution and no process is left.
Step 18) Let’s calculate the average waiting time for the above example.
Waiting Time = start time – arrival time + wait time for next burst
P1 = o - o = o
P2 =4 - o + 7 =11
P3= 6-6=0
P4= 16-11=5
Average Waiting time = (0+11+0+5+2)/5 = 18/5= 3.6
93 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
• This method provides a good mechanism where the relative important of each process
may be precisely defined.
• Suitable for applications with fluctuating time and resource requirements.
Each thread in the system may run using any method. The methods are effective on a per-thread
basis, not on a global basis for all threads and processes on a node.
Remember that the FIFO and round-robin scheduling policies apply only when two or more
threads that share the same priority are READY (i.e., the threads are directly competing with
each other). The sporadic method, however, employs a “budget” for a thread's execution. In all
cases, if a higher-priority thread becomes READY, it immediately preempts all lower-priority
threads.
In the following diagram, three threads of equal priority are READY. If Thread A blocks,
Thread B will run. Although a thread inherits its scheduling policy from its parent process, the
thread can request to change the algorithm applied by the kernel.
94 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
95 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
UNIT III
• IoT Configurations
• Basic Components
• Introduction to Arduino
• Types of Arduino
• Arduino Toolchain
• Sketches
• Pins
96 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
IoT stands for Internet of Things, which means accessing and controlling daily usable
equipments and devices using Internet.
Connecting everyday things embedded with electronics, software, and sensors to internet
enabling to collect and exchange data without human interaction called as the Internet of Things
(IoT).
The term "Things" in the Internet of Things refers to anything and everything in day to day life
which is accessed or connected through the internet.
IoT is an advanced automation and analytics system which deals with artificial intelligence,
sensor, networking, electronic, cloud messaging etc. to deliver complete systems for the product
or services. The system created by IoT has greater transparency, control, and performance.
As we have a platform such as a cloud that contains all the data through which we connect all the
things around us. For example, a house, where we can connect our home appliances such as air
conditioner, light, etc. through each other and all these things are managed at the same platform.
Since we have a platform, we can connect our car, track its fuel meter, speed level, and also track
the location of the car.
97 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
If there is a common platform where all these things can connect to each other would be great
because based on my preference, I can set the room temperature. For example, if I love the room
temperature to to be set at 25 or 26-degree Celsius when I reach back home from my office, then
according to my car location, my AC would start before 10 minutes I arrive at home. This can be
done through the Internet of Things (IoT).
Connectivity: Connectivity refers to establish a proper connection between all the things of IoT
to IoT platform it may be server or cloud. After connecting the IoT devices, it needs a high speed
98 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
lOMoARcPSD|26885763
www.BrainKart.com
messaging between the devices and cloud to enable reliable, secure and bi-directional
communication.
Analyzing: After connecting all the relevant things, it comes to real-time analyzing the data
collected and use them to build effective business intelligence. If we have a good insight into
data gathered from all these things, then we call our system has a smart system.
Integrating: IoT integrating the various models to improve the user experience as well.
Artificial Intelligence: IoT makes things smart and enhances life through the use of data. For
example, if we have a coffee machine whose beans have going to end, then the coffee machine
itself order the coffee beans of your choice from the retailer.
Sensing: The sensor devices used in IoT technologies detect and measure any change in the
environment and report on their status. IoT technology brings passive networks to active
networks. Without sensors, there could not hold an effective or true IoT environment.
Active Engagement: IoT makes the connected technology, product, or services to active
engagement between each other.
Endpoint Management: It is important to be the endpoint management of all the IoT system
otherwise, it makes the complete failure of the system. For example, if a coffee machine itself
order the coffee beans when it goes to end but what happens when it orders the beans from a
retailer and we are not present at home for a few days, it leads to the failure of the IoT system.
So, there must be a need for endpoint management.
99 | P a g e
https://play.google.com/store/apps/details?id=info.therithal.brainkart.annauniversitynotes&hl=en_IN
Click on Subject/Paper under Semester to enter.
Professional English Discrete Mathematics Environmental Sciences
Professional English - - II - HS3252 - MA3354 and Sustainability -
I - HS3152 GE3451
Digital Principles and
Statistics and Probability and
Computer Organization
Matrices and Calculus Numerical Methods - Statistics - MA3391
- CS3351
- MA3151 MA3251
3rd Semester
1st Semester
4th Semester
2nd Semester
Deep Learning -
AD3501
Embedded Systems
Data and Information Human Values and
and IoT - CS3691
5th Semester
7th Semester
8th Semester
Open Elective-1
Distributed Computing Open Elective 2
- CS3551 Project Work /
Elective-3
Open Elective 3 Intership
Big Data Analytics - Elective-4
CCS334 Open Elective 4
Elective-5
Elective 1 Management Elective
Elective-6
Elective 2
All Computer Engg Subjects - [ B.E., M.E., ] (Click on Subjects to enter)
Programming in C Computer Networks Operating Systems
Programming and Data Programming and Data Problem Solving and Python
Structures I Structure II Programming
Database Management Systems Computer Architecture Analog and Digital
Communication
Design and Analysis of Microprocessors and Object Oriented Analysis
Algorithms Microcontrollers and Design
Software Engineering Discrete Mathematics Internet Programming
Theory of Computation Computer Graphics Distributed Systems
Mobile Computing Compiler Design Digital Signal Processing
Artificial Intelligence Software Testing Grid and Cloud Computing
Data Ware Housing and Data Cryptography and Resource Management
Mining Network Security Techniques
Service Oriented Architecture Embedded and Real Time Multi - Core Architectures
Systems and Programming
Probability and Queueing Theory Physics for Information Transforms and Partial
Science Differential Equations
Technical English Engineering Physics Engineering Chemistry
Engineering Graphics Total Quality Professional Ethics in
Management Engineering
Basic Electrical and Electronics Problem Solving and Environmental Science and
and Measurement Engineering Python Programming Engineering
Click on Subject/Paper under Semester to enter.
Environmental Sciences
Professional English and Sustainability -
Professional English - - II - HS3252 Discrete Mathematics GE3451
I - HS3152 - MA3354
Statistics and Theory of Computation
Matrices and Calculus Numerical Methods - Digital Principles and - CS3452
3rd Semester
4th Semester
- MA3151 MA3251 Computer Organization
1st Semester
2nd Semester
8th Semester
6th Semester
4th Semester
- MA3151 MA3251 Computer Organization
1st Semester
2nd Semester
Computer Networks -
CS3591
Object Oriented
Full Stack Web Software Engineering - Human Values and
5th Semester
8th Semester
6th Semester
Elective 1 Elective-5
Management Elective
Elective-6
Elective 2
All Computer Engg Subjects - [ B.E., M.E., ] (Click on Subjects to enter)
Programming in C Computer Networks Operating Systems
Programming and Data Programming and Data Problem Solving and Python
Structures I Structure II Programming
Database Management Systems Computer Architecture Analog and Digital
Communication
Design and Analysis of Microprocessors and Object Oriented Analysis
Algorithms Microcontrollers and Design
Software Engineering Discrete Mathematics Internet Programming
Theory of Computation Computer Graphics Distributed Systems
Mobile Computing Compiler Design Digital Signal Processing
Artificial Intelligence Software Testing Grid and Cloud Computing
Data Ware Housing and Data Cryptography and Resource Management
Mining Network Security Techniques
Service Oriented Architecture Embedded and Real Time Multi - Core Architectures
Systems and Programming
Probability and Queueing Theory Physics for Information Transforms and Partial
Science Differential Equations
Technical English Engineering Physics Engineering Chemistry
Engineering Graphics Total Quality Professional Ethics in
Management Engineering
Basic Electrical and Electronics Problem Solving and Environmental Science and
and Measurement Engineering Python Programming Engineering