Microprocessors and
Microcontrollers
(EE-231)
Main Objectives
Machine Cycle and Time Delay of 8051
I/O port programming of 8051
Machine Cycle
CPU executing an instruction takes a certain number of
clock cycles which are referred as to as machine cycles.
The length of machine cycle depends on the frequency of
the crystal oscillator connected to 8051
In original 8051, one machine cycle lasts 12 oscillator
periods. 4K
32K
Delay Calculation
Example
4K
32K
Delay Calculation
Example
4K
Solution
32K
Delay Using NOP
NOP instruction takes 1 Machine Cycle and does nothing. So it can be
used for generating delay.
Example
4K
32K
Delay Using Nested Loops
Example
4K
32K
Delay for other 8051s
Two factors can affect the accuracy of the delay
Crystal frequency
The duration of the clock period of the machine cycle is a function of
this crystal frequency
8051 design
The original machine cycle duration was set at 12 clocks
Advances in both IC technology and CPU design in recent years have
made the 1-clock machine cycle a common feature
32K
Delay for other 8051s
32K
I/O Port Programming
32K
Ground
I/O Ports
The four 8-bit I/O ports P0, P1, P2 and P3 each uses 8 pins
All the ports upon RESET are configured as input, ready to be used as
input ports
When the first 0 is written to a port, it becomes an output
To reconfigure it as an input, a 1 must be sent to the port
To use any of these ports as an input port, it must be programmed
32K
I/O port
internal
structure
Port 0
It can be used for input or output
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.
32K
Port 0
In order to make port 0 an input, the port must be programmed by
writing 1 to all the bits
32K
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
Port 1
Port 1 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 input port
32K
To make port 1 an input port, it must be programmed as such by
writing 1 to all its bits
Port 2
Port 2 can be used as input or output
Just like P1, port 2 does not need any pull-up resistors since
it already has pull-up resistors internally
Upon reset, port 2 is configured as an input port
To make port 2 an input port, it must be programmed as
such by writing 1 to all its bits
In 8031-based systems, port 2 must be used along with P0
to provide the 16-bit address for the external memory
Port 2 is also designated as A8 A15, providing upper
address
Port 0 provides the lower 8 bits via A0 A7
Port 3
Port 3 can be used as input or output and does not need any pull-up
resistors
Port 3 is configured as an input port upon reset
Port 3 provides some extremely important signals
32K
Different way of accessing Ports
32K
I/O Bit Manipulation Programming
Sometimes we need to access only 1 or 2 bits of the port, in that case
we use bit-manipulation programming
I/O ports of 8051 are bit addressable i.e., there bits can be individually
programmed
32K
I/O Bit Manipulation Programming
These are the bit names for different ports
32K
Bit Addressability of I/O ports
32K
Single Bit Instructions
Instructions that are used for signal-bit operations are as following
32K
Single Bit Instructions
The JNB and JB instructions are widely used single-bit operations
They allow you to monitor a bit and make a decision depending on
whether its 0 or 1
These instructions resemble if-else in C
These two instructions can be used for any bits of I/O ports 0, 1, 2, and
3
32K
Checking an Input Bit
32K
Checking an Input Bit
32K
Checking an Input Bit
32K
Reading a single Bit into Carry Flag
32K
Reading a single Bit into Carry Flag
Reading Input Pins vs Port Latch
In reading a port
Some instructions read the status of port pins
Others read the status of an internal port latch
Therefore, when reading ports there are two possibilities:
Read the status of the input pin
Read the internal latch of the output port
Confusion can cause errors in programming, especially when external
hardware is concerned
Reading Latch for Output port
Some instructions read the contents of an internal port
latch instead of reading the status of an external pin
For example, look at the ANL P1,A instruction and the
sequence of actions is executed as follow
1. It reads the internal latch of the port and brings that data
into the CPU
2. This data is ANDed with the contents of register A
3. The result is rewritten back to the port latch
4. The port pin data is changed and now has the same value
as port latch
Read Modify Write
Read-Modify-Write instructions
Read the port latch
Perform an Operation on the value and then
Rewrite it back to the port latch
Read Modify Write
The ports in 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 actions
Reading the port
Modifying it
Writing to the port