Electronics Tutorials -
Standard 8051 Tutorial - Low-Level Information
In order to understand--and
better make use of--the 8051, it is necessary to understand
some underlying information concerning timing.
The 8051 operates based on an external
crystal. This is an electrical device which, when energy is
applied, emits pulses at a fixed frequency. One can find
crystals of virtually any frequency depending on the
application requirements. When using an 8051, the most
common crystal frequencies are 12 megahertz and 11.059
megahertz--with 11.059 being much more common. Why would
anyone pick such an odd-ball frequency? Theres a real reason
for it--it has to do with generating baud rates and well
talk more about it in the Serial Communication chapter. For
the remainder of this discussion well assume that were using
an 11.059Mhz crystal.
Microcontrollers (and many other electrical
systems) use crystals to syncrhronize operations. The 8051
uses the crystal for precisely that: to synchronize its
operation. Effectively, the 8051 operates using what are
called "machine cycles." A single machine cycle is the
minimum amount of time in which a single 8051 instruction
can be executed. although many instructions take multiple
cycles.
A cycle is, in reality, 12 pulses of the
crystal. That is to say, if an instruction takes one machine
cycle to execute, it will take 12 pulses of the crystal to
execute. Since we know the crystal is pulsing 11,059,000
times per second and that one machine cycle is 12 pulses, we
can calculate how many instruction cycles the 8051 can
execute per second:
11,059,000 / 12 = 921,583
This means that the 8051 can execute 921,583
single-cycle instructions per second. Since a large number
of 8051 instructions are single-cycle instructions it is
often considered that the 8051 can execute roughly 1 million
instructions per second, although in reality it is
less--and, depending on the instructions being used, an
estimate of about 600,000 instructions per second is more
realistic.
For example, if you are using exclusively
2-cycle instructions you would find that the 8051 would
execute 460,791 instructions per second. The 8051 also has
two really slow instructions that require a full 4 cycles to
execute--if you were to execute nothing but those
instructions youd find performance to be about 230,395
instructions per second.
It is again important to emphasize that not
all instructions execute in the same amount of time. The
fastest instructions require one machine cycle (12 crystal
pulses), many others require two machine cycles (24 crystal
pulses), and the two very slow math operations require four
machine cycles (48 crystal pulses).
NOTE: Many 8051 derivative chips change
instruction timing. For example, many optimized versions of
the 8051 execute instructions in 4 oscillator cycles instead
of 12; such a chip would be effectively 3 times faster than
the 8051 when used with the same 11.059 Mhz crystal.
Since all the instructions require different
amounts of time to execute a very obvious question comes to
mind: How can one keep track of time in a time-critical
application if we have no reference to time in the outside
world?