Вы находитесь на странице: 1из 134

Microcontrollers

 Specially designed microprocessors


– It is small on chip computer
 Highly integrated chip
includes all or most parts needed for controller
 A typical microcontroller has:
– bit manipulation
– easy and direct access to I/O
– quick and efficient interrupt processing
 Microcontroller drastically reduces design cost

1/175
Worldwide Microcontroller shipments
- in millions of dollars -

'95 '96 '97 '98 '99 00


4-bit 1826 1849 1881 1856 1816 1757
8-bit 5634 6553 7529 8423 9219 9715
16-bit 1170 1628 2191 2969 3678 4405

2/175
Worldwide Microcontroller shipments
- in millions -

'95 '96 '97 '98 '99 00


4-bit 1100 1100 1096 1064 1025 970
8-bit 1803 2123 2374 2556 2681 2700
16-bit 157 227 313 419 501 585

3/175
Applications
 Appliances
(microwave oven, refrigerators, television and VCRs, stereos)
 Computers and computer equipment
(laser printers, modems, disk drives)
 Automobiles
(engine control, diagnostics, climate control),
 Environmental control
(greenhouse, factory, home)
 Instrumentation
 Aerospace
 Robotics, etc...

4/175
Flavors
 4, 8, 16, or 32 bit microcontrollers
 specialized processors include features specific for
– communications,
– keyboard handling,
– signal processing,
– video processing, and other tasks.

5/175
Part 1

Popular Microcontrollers
 8048 (Intel)
 8051 (Intel and others)
 80c196 (MCS-96)
 80186,80188 (Intel)
 80386 EX (Intel)
 65C02/W65C816S/W65C134S (Western Design Center)
 MC14500 (Motorola)

6/175
Part 2

Popular Microcontrollers
 68HC05 (Motorola)
 68HC11 (Motorola and Toshiba)
 683xx (Motorola)
 PIC (MicroChip)
 COP400 Family (National Semiconductor)
 COP800 Family (National Semiconductor)
 HPC Family (National Semiconductor)
 Project Piranha (National Semiconductor)

7/175
Part 3

Popular Microcontrollers
 Z8 (Zilog)
 HD64180 (Hitachi)
 TMS370 (Texas Instruments)
 1802 (RCA)
 MuP21 (Forth chip)
 F21 (Next generation Forth chip)

8/175
Part 1

Programming Languages
 Machine/Assembly language
 Interpreters
 Compilers
 Fuzzy Logic and Neural Networks

9/175
Part 1

Development Tools
 Simulators
 Resident Debuggers
 Emulators
 Java on Embedded Systems

10/175
Choosing microcontoller
 Technical support
 Development tools
 Documentation
 Purchasing more devices at one manufacturer
(A/D, memory, etc.)
 Additional features
(EEPROM, FLASH, LCD driver, etc.)

11/175
Microcontrollers
 Basic parts are: e x t e r n a l
i n e r r u p t s
– Central Processing Unit
– RAM
i n t e r r u p t R O M t i m e r 1 c o u n t e
– EPROM/PROM/ROM or c o n t r o l
R A M
t i m e r 0 i n p u t s
FLASH Memory
– I/O serial or/and parallel
C P U
– timers
– interrupt controller
 Optional parts are: O S C
b u s 4 I / O s e r i a l
c o n t r o l p o r t s p o r t
– Watch Dog Timer
– AD Converter
T x DR x D
– LCD driver P 0P 2 P 1P 3
a d d r e s s /
– etc. d a t a

12/175
Intel 8051
 A typical 8051 contains: R A R
1 2 8 x 8
R A M
4 K x 8
R O M
P C

P C
H

L
D

D
P H

P L
P 2

P O
L A

R
T C

T 2
H

– CPU with Boolean processor R A M S E N S E


P 0 L A T C H

B U F F E R A M P S

– 5 or 6 interrupts:

INTERNAL BUS
P 2 L A T C H

2 external, 2 priority levels P O R T 2


A L U
A I R
R O M

– 2 or 3 16-bit timer/counters T M P 2 T M P 1 B
P L A

– programmable full-duplex P S W S P
C O N T R O L

serial port A L U

– 32 I/O lines (four 8-bit ports) P 0 L A T C H S C O N T C O N I E P 3 L A T C H

– RAM
P O R T 0 S B U F ( R E C ) T M O D I P P O R T 3

S B U F ( X M I T ) T L 0 I N T E R R U P T
C O N T R O L
S E R I A L T H 0

– ROM/EPROM in some models P O R T


T L 1

T H 1

T IM E R
C O N T R O L

13/175
Part 1

Intel 8051: Pin Description


V C C V S S
 VSS - Ground: 0V X T A L 1
 VCC - Power Supply

PORT 0
A D D R E S S
 P0.0-P0.7 - Port 0 D A T A B U
X T A L 2
– Open drain,
R S T
bi-directional I/O port

PORT 1
E A / V p p
– Pins that have 1s written to P S E N
A L E / P R O G
them float and can be used

SECONDARY FUNCTIONS
R x D
as high-impedance inputs T x D

– Multiplexed low-order

PORT 2
PORT 3
IN T 0
A D D R E S S
IN T 1
address and data bus during T 0
accesses to external program T 1

and data memory W


R D
R

14/175
Part 2

Intel 8051: Pin Description


 P2.0-P2.7 - Port 2  Port 3 serves the
– Bi-directional I/O port special features:
with internal pull-ups – RxD - Serial input port
– Pins that have 1s written to – TxD - Serial output port
them float and can be used as
high-impedance inputs. – INT0 - External interrupt
– Port 2 emits high-order address – INT1 - External interrupt
byte during accesses to – T0 - Timer 0 external input
external program and data – T1 - Timer 1 external input
memory
– WR - External data memory
 P3.0-P3.7 - Port 3 write strobe
– Bi-directional I/O port – RD - External data memory
with internal pull-ups
read strobe
– Pins that have 1s written to
them float and can be used as
high-impedance inputs.

15/175
Part 3

Intel 8051: Pin Description


 RST - Reset  EA - External Access Enable
– A high on this pin – EA must be externally held
for two machine cycles resets low to enable device to fetch
the devices code from external memory
 ALE - Address Latch Enable locations.
– Output pulse for latching  XTAL1 - Crystal 1
the low byte of address – Input to the inverting
during an access to external oscillator amplifier and
memory input to internal clock
 PSEN - Program Store Enable generator circuits
– Read strobe to external  XTAL2 - Crystal 2
program memory – Output from the inverting
oscillator amplifier

16/175
Part 1

Intel 8051: Pin Configurations


P 1 . 0 1 4 0 V c c
P 1 . 1 P 0 . 0 / A D 0
Dual In-Line Package
2 3 9

P 1 . 2 3 3 8 P 0 . 1 / A D 1
 Plastic Lead Chip Carrier P 1 . 3 4 3 7 P 0 . 2 / A D 2
 Plastic Quad Flat Pack P 1 . 4 5 3 6 P 0 . 3 / A D 3
P 1 . 5 6 3 5 P 0 . 4 / A D 4
P 1 . 6 7 3 4 P 0 . 5 / A D 5
P 1 . 7 8 3 3 P 0 . 6 / A D 6
R S T 9 3 2 P 0 . 6 / A D 6
R x D / P 3 1 0. 0 3 1 E A
T x D /
1 1 3 0 A L E
P 3 . 1
I N T 0 / P 31 2. 2 2 9 P S E N
IN T 1 / P 31 3. 3 2 8 P 2 . 7 / A 1 5
T 0 / P 3 1. 44 2 7 P 2 . 6 / A 1 4
T 1 / P 3 1. 55 2 6 P 2 . 5 / A 1 3
W R / P 3 1 .66 2 5 P 2 . 4 / A 1 2
R D / P 3 1 . 77 2 4 P 2 . 3 / A 1 1
X T A L 12 8 2 3 P 2 . 2 / A 1 0
X T A L 11 9 2 2 P 2 . 1 / A 9
V s s 2 0 2 1 P 2 . 0 / A 8
17/175
Part 2

Intel 8051: Pin Configurations


–6 –1 –40 44 34

–7 –39 1 33

PQFP PLCC

11 23
–17 –29

–18 –28
12 22
–1 NIC –16 P3.4/T0 –31 P2.7/A15
1 P 1 .5 16 V SS 31 P 0 .6 /A D 6
–2 P1.0 –17 P3.5/T1 –32 PSEN
2 P 1 .6 17 N IC 32 P 0 .5 /A D 5
–3 P1.1 –18 P3.6/WR –33 ALE
3 P 1 .7 18 P 2 .0 /A 8 33 P 0 .4 /A D 4
–4 P1.2 –19 P3.4/RD –34 NIC
4 RST 19 P 2 .1 /A 9 34 P 0 .3 /A D 3
–5 P1.3 –20 XTAL2 –35 EA
5 P 3 .0 /R x D 20 P 2 .2 /A 10 35 P 0 .2 /A D 2
–6 P1.4 –21 XTAL1 –36 P0.7/AD7
6 N IC 21 P 2 .3 /A 11 36 P 0 .1 /A D 1
–7 P1.5 –22 VSS –37 P0.6/AD6
7 P 3 .1 /T x D 22 P 2 .4 /A 12 37 P 0 .0 /A D 0
–8 P1.6 –23 NIC –38 P0.5/AD5
8 P 3 .2 /IN T 0 23 P 2 .5 /A 13 38 V CC
–9 P1.7 –24 P2.0/A8 –39 P0.4/AD4
9 P 3 .3 /IN T 1 24 P 2 .6 /A 14 39 N IC
–10 RST –25 P2.1/A9 –40 P0.3/AD3
1 0 P 3 .4 /T 0 25 P 2 .7 /A 15 40 P 1 .0
–11 P3.0/RxD –26 P2.2/A10 –41 P0.2/AD2
1 1 P 3 .5 /T 1 26 P SEN 41 P 1 .1
–12 NIC –27 P2.3/A11 –42 P0.1/AD1
1 2 P 3 .6 /W R 27 A LE 42 P 1 .2
–13 P3.1/TxD –28 P2.4/A12 –43 P0.0/AD0
1 3 P 3 .4 /R D 28 N IC 43 P 1 .3
–14 P3.2/INT0 –29 P2.5/A13 –44 VCC
14 XTAL2 29 E A 44 P 1 .4
–15 P3.3/INT1 –30 P2.6/A14
15 XTAL1 30 P 0 .7 /A D7 18/175
Part 1

Intel 8051: CPU


 Primary elements are: R A R
1 2 8 x 8
R A M
4 K x 8
R O M
P C

P C
H

L
D

D
P H

P L
P 2

P O
L A

R
T C

T 2

– eight bit ALU P 0 L A T C H

with associated registers B


R A M
U F F E R
S E N S E
A M P S

A, B, PSW and SP

INTE R NAL BUS


P 2 L A T C H

– sixteen-bit P O R T 2
A L U

Program Counter (PC) A


R O M
I R

P L A

– Data Pointer registers T M P 2 T M P 1 B

C O N T R O L
P S W S P
A L U

P 0 L A T C H S C O N T C O N I E P 3 L A T C H

P O R T 0 S B U F ( R E C ) T M O D I P P O R T 3

S B U F ( X M IT ) T L 0 I N T E R R U P T
C O N T R O L
S E R I A L T H 0
P O R T
T L 1

T H 1

T I M E R
C O N T R O L

19/175
Part 2

Intel 8051: CPU


 The ALU can manipulate one-bit as well as eight-bit data types
– This features makes the 8051 especially well suited
for controller-type applications
 A total of 51 separated operations
move and manipulate three data types:
– Boolean (1-bit)
– Byte (8-bit)
– Address (16-bit)

20/175
Part 3

Intel 8051: CPU


 Instruction types:
– Arithmetic Operations
– Logic Operations for Byte Variables
– Data Transfer Instructions
– Boolean Variable Manipulation
– Program Branching and Machine Control

21/175
Part 4

Intel 8051: CPU


 There are eleven addressing modes:
– seven for data
– four for program sequence control
 Most operations allow several addressing modes,
bringing total number of instructions to 111,
encompassing 255 of the 256 possible 8-bit instruction opcodes
 8051 instruction set fares well at both
real-time control and data intensive algorithms

22/175
Part 1

Intel 8051: Memory Organization


 Program memory is separate distinct from data memory
– Each memory type has a different addressing mechanism,
different control signals, and a different functions
 Architecture supports several distinct “physical” address spaces
functionally separated at the hardware level:
– On - chip program memory
– On - chip data memory
– Off - chip program memory
– Off - chip data memory
– On chip special function registers

23/175
Part 2

Intel 8051: Memory Organization


 Program (Code) memory
– Holds the actual 8051 program that is to be run

– Limited to 64K
– may be found on-chip as ROM or EPROM
– may be stored completely off-chip in
an external ROM or an external EPROM
– Flash RAM is also another popular method of storing a program
– Various combinations of these memory types may be used
(e.g. 4 K on-chip and 64 KB off-chip)

24/175
Part 3

Intel 8051: Memory Organization


 External RAM
– External RAM is any random access memory which is found off-chip
– External RAM is slower
• To increment an Internal RAM location by 1
requires only 1 instruction and 1 instruction cycle
• To increment a 1-byte value stored in External RAM
requires 4 instructions and 7 instruction cycles
– While Internal RAM is limited to 128 bytes (256 bytes with an 8052),
the 8051 supports External RAM up to 64K

25/175
Part 4

Intel 8051: Memory Organization


 On-chip memory
– Two types:
• Internal RAM; and
• Special Function Register (SFR) memory
– Internal RAM is on-chip so it is the fastest RAM available
– Internal RAM is volatile, when the 8051 is reset this memory is cleared
– Special Function Registers (SFRs) are areas of memory that
control specific functionality of the 8051 processor

26/175
Part 1

Intel 8051: Memory Access


 PORT 2 : High byte of address E A
P O R T 2 A 8 - A 1 5 A 8 - A 1 5 A 8 - A 1 5

held for the duration of


read or write cycle P O R T 0 A D 0 - A D 7 A 0 - A 7 A 0 - A 7 A 0 - A 7

Static R AM

R OM
L A T C H
C S
 PORT 0 : time multiplexed " 0 "
R D " 0 " C S
A L E L E W R O E

low byte of address with data byte 8 0 5 1


D 0 - D 7

 Signal ALE: used to capture the


address byte into an external latch
P S E N
R D
W R

6 4 K b y t e s - P r o g r a m m e m o r y (
6 4 K b y t e s - D a t a M e m o r y

27/175
Part 2

Intel 8051: Memory Access

S T A G E S 1T A G E S 2T A G E S 3T A G E S 4T A G E S 5T A G E 6 S T A G E S 4T A G E S 5T A G E S 6T A G E S 1T A G E S 2T A G E 3
P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2

X T A L 1 X T A L 1

A L E A L E

P S E N R D

IN S . IN S . IN S . F L O A T d a t aF L O A
A 0 - A 7 A 0 - A 7 A 0 - A 7
P 0 IN IN I N P 0 i n

A 8 - A 1 5 A 8 - A 1 5 A 8 - A 1 5 A 8 - A 1 5
P 2 P 2

28/175
Part 1

Intel 8051: Program Memory


P R O G R A M M E M O
 Up to 64K of Program Memory 0 x F F F F

 PSEN: read strobe


for all external program fetches

EXT ERNAL
 PSEN: not activated for
internal program fetches
 Depending on EA pin
lowest bytes can be either
in the on-chip ROM or in an external ROM

E A = 0 E A = 1

0 x 0 0 0 0

P S E N

29/175
Part 2

Intel 8051: Program Memory


 Boot address - 0x0000
 Each interrupt is assigned L O W E R P A R T O F P R O G R A M M

a fixed location in Program Memory


 If interrupt is not going to used,
0 x 0 0 2 8
its service location is available as
general purpose Program Memory 0 x 0 0 2 3

0 x 0 0 1 8
IN T E R R P U T
L O C A T IO N S
0 x 0 0 1 3
8 B Y T E S
0 x 0 0 0 8

0 x 0 0 0 3

R E S E T 0 x 0 0 0 0

30/175
Part 3

Intel 8051: Program Memory


 Port 0 and Port 2 are dedicated P O R T 0 I N S T R
to bus functions during
external Program Memory fetches E A
A D 0 - A D 7 A 0 - A 7

L A T C H
A D D R
A L E L E

P O R T 2 A 8 - A 1 5

P S E N O E

8 0 5 1 E R O M

31/175
Part 1

Intel 8051: Data Memory


D A T A M E M O R Y

 Up to 64K Data Memory 0 x F F F F

 Access to Data memory use


RD or WR to strobe the memory

EXTERNAL
I N T E R N A L

0 x F F

0 x 0 0 0 x 0 0 0 0

R DW R

32/175
Part 2

Intel 8051: Data Memory


 Internal Memory Addresses IN T E R N A L
are one byte wide - 0xF F

128 bytes address space


(256 - Intel 8052) A C C E S S IB L E A C C E S S IB L E
U P P E R B Y IN D IR E C T B Y D IR E C T
 Direct addressing higher then 0x7F 128 A D D R E S S IN G A D D R E S S IN G
access one memory space, O N LY O N L Y

indirect addressing higher then 0x7F


access a different memory space 0x7F

 Upper 128 and SFR space S P E C IA L


P O R T S
F U N C T IO N
S T A T U S B IT S
occupying same block of addresses, A C C E S S IB L E R E G IS T E R S
C O N T O L B IT S
L O W E R B Y D IR E C T
although they are 128 A N D IN D IR E C T
T IM E R R E G IS
S T A C K P O IN T
physically separate entities A D D R E S S IN G
A C C U M U L A TO
(E T C .)

0x00

33/175
Part 3

Intel 8051: Data Memory


 The lowest 32 bytes are grouped
into 4 banks of 8 registers LO W E R 128 B Y TE S O F
IN T E R N A L R A M
 Program instructions call out 0x7F

these registers R0 through R7


 Two bits in the PSW
0x2F
selects register bank B A N K S E L E C T B IT S B IT A D D R E S S A B L E S P
IN P S W (B IT A D D R E S S E S 0 -7 F
– Register instructions are shorter
0x20
 The next 16 bytes form a 11
0x1F

block of bit-addressable space 0x18


0x17 4 B A N K S O F
10 8 R E G IS T E R S
0x10 R 0-R 7
0x0F
01
0x08
0x07 R E S E T V A LU E O F
00 S T A C K P O IN T E R
0x00

34/175
Part 1

Intel 8051: SFR


 SFRs are accessed as if they were normal Internal RAM
 SFR registers exist in the address range of 80h through FFh
 Each SFR has an address and a name

35/175
Part 2

Intel 8051: SFR


0 1 2 3 4 5 6 7
F8 FF
F0 B F7
E8 EF
E0 ACC E7
D8 DF
D0 PSW D7
C8 CF
C0 C7
B8 IP BF
B0 P3 B7
A8 IE AF
A0 P2 A7
98 SCON SBUF 9F
90 T1 97
88 TCON TMOD TL0 TL1 TH0 TH1 8F
80 T0 SP DPL DPH PCON 87

36/175
Part 3

Intel 8051: SFR


 Accumulator (A) – The Stack Pointer is
– Accumulator register initialized on 0x07
after a reset, and this causes
 B Register (B) stack to begin at location
– Used during multiply and 0x08
divide operations  Data Pointer(DPTR)
 PSW – Consist high byte (DPH) and
– Contains program status low byte (DPL)
information – It may be manipulated as a
 Stack Pointer (SP) 16-bit register or as two
– Eight bits wide independent 8-bit registers
– Stack may reside anywhere
in on chip RAM

37/175
Part 4

Intel 8051: SFR


 Ports 0 to 3 (P0, P1, P2, P4)  Timer Registers (T1, T0)
– Latches of Port 0 to 3, – (TH1, TL1) (TH0, TL0)
respectively Counting Registers for
Timer/Counter 1 and 0
 Serial Data Buffer (SDBF)
– It is actually two separated
 Control Registers
registers: receive and – IP: Interrupt priority
transmit buffer registers – IE: Interrupt enable
– When data is moved to SBUF – TMOD Timer/Counter mode
it goes to the transmit buffer – TCON Timer/Counter control
– When data is moved from – PCON Power control
SBUF it comes from the
receive buffer

38/175
Intel 8051: PSW
7 6 5 4 3 2 1 0
PSW CY AC F0 RS1 RS0 O V - P

C a r r y fla g P a r ity fla g


A u x ilia r y C a r r y fla g O v e rflo w fla g
F la g 0 R e g is ta r B a n k
R e g is ta r B a n k S e le c t b it 1
S e le c t b it 1

 Auxiliary Carry flag is used for BCD operations


 Flag 0 is available to user for general purposes
 The contest of (RS1, RS2) enable working register banks as follows:
00 - Bank 0 [0x00-0x07], 01 - Bank 1 [0x08-0x0f],
10 - Bank 2 [ 0x10-0x17], 11 - Bank 3 [0x18-0x1F]

39/175
Intel 8051: CPU Timing
S 5 S 6 S 1 S 2 S 3 S 4 S 5 S 6 S 1 S 2 S 3 S 4 S 5
P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2 P 1 P 2

A L E

 The internal clock generator defines


the sequence of states that make up a machine cycle
 A machine cycle consists of 6 states, numbered S1 through S6
 Each state time lasts for two oscillator periods
 Each state is then divided into a Phase 1 and Phase 2 half

40/175
Part 1

Intel 8051: Port Structures


 Pseudo bi-directional + 5V + 5V
R E A D /M O D IF Y /
I/O port structure W R IT E

– On Port0 R2 is disabled E N B

except during bus operations Q 2


(open-collector output)
 The address latch bit is updated by S E T
R 1 R 2
IN T E R N A L B U S D Q I/O
direct addressing instructions W R IT E P U L S E
P IN

 The value read is “OR-tied” function Q 1


C LR
Q
of Q1 and the external device B U S C Y C LE
T IM IN G
 To use a pin for input
IN P U T
latch must be set E N B B U FFE R

R E A D

41/175
Intel 8051: Port Interfacing
 The output buffers of Ports 0, 1, 2 and 3
can each drive 4 LS TTL inputs
 Can be driven by open-collector and open-drain outputs
– 0-to-1 transitions will not be fast since
there is little current pulling the pin up
 Port 0 output buffers can each drive 8 LS TTL inputs
(external bus mode)
 As port pins PORT 0 requires external pull-ups
to be able to drive any inputs bit

42/175
Intel 8051: Special Peripheral Functions
 There are few special needs
common among control-oriented computer systems:
– keeping tracks of elapsed time
– maintaining a count of signal transitions
– measuring the precise width of input pulses
– communicating with other systems
– closely monitoring asynchronous external events

43/175
Part 1

Intel 8051: Timers/Counters


 Two 16-bit Timer/Counter registers
 Timer: Register is incremented every machine cycle
(1 machine cycle = 12 oscillator periods)
 Counter: Register is incremented in response to
1-to-0 transition at its corresponding external input pin (T0, T1)
– External input is sampled at S5P2 of every machine cycle
– When the samples show high in one cycle and low in the next,
the count is incremented
– The new count value is appears in S3P1
of the following detection cycle
– Max count rate is 1/24 of oscillator frequency
 TMOD - Timer/Counter mode register
 TCON - Timer/Counter control register

44/175
Part 2

Intel 8051: Timers/Counters


 GATE: Gating control when set
 C/T: Counter or Timer Selector
 M1 M0:
– 00: 8-bit Timer/Counter with 5-bit prescaler
01: 16-bit Timer/Counter

T I

– 10: 8-bit auto reload Timer/Counter
– 11: (Timer0)
TL0 is 8-bit Timer/Counter controlled by
Timer0 control bits
TH0 is 8-bit timer only controlled by Timer1
control bits
– 11: (Timer1) Timer/Counter is stopped

T I
45/175
Part 3

Intel 8051: Timers/Counters


7 6 5 4 3 2 1 0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

 TF: Overflow flag


– Set by hardware on Timer/Counter overflow
– Cleared by hardware when processor vectors to interrupt routine
 TR: Run control bit
– Set/Cleared by software to turn Timer/Counter on/off
 IE: Interrupt Edge flag
– Set by hardware when external interrupt edge detected
– Cleared when interrupt processed
 IT: Interrupt Type control bit
– Set/Cleared by software to specify
falling edge/low level triggered external interrupts
46/175
Part 4

Intel 8051: Timers/Counters

O S C 1 / 1 2

T L 1 T H 1
T F 1 IN T E R R U P T
( 5 b i t (s 8 ) b i t s )

T 1 P IN

M O D E 0
T R 1
G A T E

IN T 1 P IN

47/175
Part 5

Intel 8051: Timers/Counters

O S C 1 / 1 2
C / T = 0
T L 1 T H 1
T F 1 IN T E R R U P T
( 8 b i t (s 8 ) b i t s )

C / T = 1
T 1 P IN

M O D E 1
T R 1
G A T E

IN T 1 P IN

48/175
Part 6

Intel 8051: Timers/Counters

O S C 1 / 1 2

T L 1
T F 1 IN T E R R U P T
( 8 b i t s )

T 1 P IN
R E L O A D

M O D E 2
T R 1
G A T E T H 1
( 8 b i t s )

IN T 1 P IN

49/175
Part 7

Intel 8051: Timers/Counters

O S C 1 / 1 2
C / T = 0
T L 0
T F 0 IN T E R R U P T
( 8 b i t s )

C / T = 1
T 0 P I N

M O D E 3
T R 0
G A T E

IN T 0 P IN
T H 0
1 / 1 o2 f T F 1 IN T E R R U P T
s c ( 8 b i t s )

T R 1
50/175
Part 1

Intel 8051: Serial Port Interface


 Full-duplex
 Serial port receive and transmit registers
are both accessed at Special Function Register SBUF
– Writing to SBUF loads the transmit register
– Reading from SBUF accesses a physically separated receive register
 Four modes of operation
– In all four modes transmission is initiated by
any instruction that uses SBUF as destination register
– Reception is initiated in Mode 0 by condition RI=0 and REN=1
In other modes by the incoming start bit if REN=1
 SCON - Serial Port Control Register

51/175
Part 2

Intel 8051: Serial Port Interface


7 6 5 4 3 2 1 0
SCON SM0 SM1 SM0 REN TB8 RB8 TI RI

 SM0 SM1:
– 00: Mode 0, Shift register, fosc/ /12
– 01: Mode 1, 8-bit UART, variable
– 10: Mode 2, 9-bit UART, fosc/ /32 or fosc/ /64
– 11: Mode 3, 9-bit UART, variable
 SM2: Enables multiprocessor features in Mode 2 and Mode 3
– When the stop bit is received,
the interrupt will be activated only if RB8=1 (9th bit =1)
 REN: Enables serial reception
– Set/Clear by software

52/175
Part 3

Intel 8051: Serial Port Interface


7 6 5 4 3 2 1 0
SCON SM0 SM1 SM0 REN TB8 RB8 TI RI

 TB8: 9th data bit that will be transmitted in Mode2 and Mode3
– Set/Clear by software
 RB8: 9th data bit that was received in Mode2 and Mode3
In Mode 1, if SM2=0, is the stop bit that was received
 TI: Transmit interrupt flag
– Set by hardware. Must be cleared by software
 RI: Receive interrupt flag
– Set by hardware. Must be cleared by software

53/175
Part 4

Intel 8051: Serial Port Interface


 MODE 0:
– Serial data enters and exits through RXD
– TXD outputs shift clock
– 8 bits are transmitted/received: 8 data bits (LSB first)
– The baud rate is fixed at 1/12 oscillator frequency
 MODE 1:
– Serial data enters through RXD, exits through TXD
– 10 bits are transmitted/received:
start bit(0), 8 data bits (LSB first), stop bit(1)
– On receive the stop bit goes into RB8 in SCON register
– The baud rate is variable

54/175
Part 5

Intel 8051: Serial Port Interface


 MODE 2:
– Serial data enters through RXD, exits through TXD
– 11 bits are transmitted/received:
start bit(0), 8 data bits (LSB first), a programmable 9th bit, stop bit(1)
– On transmit, the 9th bit is TB8 in SCON register
– On receive, the 9th bit goes into RB8 in SCON register
– The baud rate is programmable to either
1/32 or 1/64 the oscillator frequency
 MODE 3:
– Same as MODE 2 in all respects except baud rate
– The baud rate is variable

55/175
Part 6

Intel 8051: Serial Port Interface


 Mode 0 Baud Rate = Oscillator frequency/12
 Mode 2 Baud Rate =[(2SMOD)/64]*Oscillator frequency
– SMOD is bit in Special Function Register PCON
 Mode 1 and Mode3 baud rate is
determined by Timer 1 overflow rate
 Mode 1,3 Baud Rate =[(2SMOD)/32]* Timer 1 Overflow Rate
– Timer mode, auto-reload :
Timer Overflow Rate=Oscillator frequency/[12*(256-TH1)]

56/175
Part 7

Intel 8051: Serial Port Interface


Timer1
Baud
fosc SMOD
Rate Reload
C/T Mode
Value
62.5 K 12 MHz 1 0 2 FF
19.2 K 11.059 MHz 1 0 2 FD
9.6 K 11.059 MHz 0 0 2 FD
4.8 K 11.059 MHz 0 0 2 FA
2.4 K 11.059 MHz 0 0 2 F4
1.2 K 11.059 MHz 0 0 2 E8
135.5 11.059 MHz 0 0 2 1D
110 6 MHz 0 0 2 72
110 12 MHz 0 0 1 FEEB

57/175
Part 1

Intel 8051: Interrupt Control


7 6 5 4 3 2 1 0
IE EA - - ES ET! EX1 ET0 EX0

 EA: Enable/Disable all interrupts


– If EA=0 no interrupts will be acknowledged
– If EA=1 each interrupt source is individually enabled/disbled
 ES: Serial Port interrupt enable bit
 ET: Timer interrupt enabled bit
 EX: External interrupt enable bit

58/175
Part 2

Intel 8051: Interrupt Control


• 5 interrupt sources
IT 0 = 0
• 2 external I N T 0 IE 0
(INT0, INT1)
IT 0 = 1

• 2 timers
(TF0, TF1) T F 0

• Serial Port
(RI or TI) IT 1 = 0
IN T E R R U
I N T 1 IE 1 S O U R C

IT 1 = 1

T F 1

R I
T I

59/175
Part 3

Intel 8051: Interrupt Control


 External interrupts IT 0 = 0

IN T 0 IE 0
– Level-activated or transition-activated
IT 0 = 1
depending on bits IT0, IT1 in register TCON
– The flags that generate these interrupts are
IE0, IE1 in TCON
• Cleared by hardware if the interrupt was transition-activated
• if the interrupt was level-activated,
external source controls request bits
– If external interrupt is level-activated,
the external source has to hold request active,
until the requested interrupt is actually generated.
– External source has to deactivate the request
before interrupt service is completed,
or else another interrupt will be generated

60/175
Part 4

Intel 8051: Interrupt Control


 Timer interrupts
– Interrupts are generated by TF0 and TF1 in register TCON
– When a timer interrupt is generated, the flag that generated it is
cleared by hardware when the service routine is vectored to
 Serial Port interrupt
– generated by the logical OR of bits RI and TI in register SCON

T I

R I

61/175
Part 5

Intel 8051: Interrupt Control


7 6 5 4 3 2 1 0
IP - - - PS PT1 PX1 PT0 PX0

 Priority bit=1: High Priority; Priority bit=0: Low Priority


 PS: Serial Port priority bit
 PT: Timer priority bit
 PX: External priority bit

62/175
Part 6

Intel 8051: Interrupt Control


 A low-priority interrupt can be interrupted by a higher priority
interrupt, but not by another low-priority interrupt
 A high priority interrupt
cannot be interrupted by any other interrupt source
 If two requests are received simultaneously,
the request of higher priority level is serviced
 If requests of the same priority level are received simultaneously,
an internal polling sequence determines which request is serviced
– ``priority within level'' structure is only used
to resolve simultaneous requests of the same priority level.

63/175
Part 7

Intel 8051: Interrupt Control


Interrupt Priority
within Level Polling Sequence
1 (Highest) External Interrupt 0
2 Timer 0
3 External Interrupt 1
4 Timer 1
5 (Lowest) Serial Port

64/175
Part 8

Intel 8051: Interrupt Control


 The INT0 and INT1 levels are inverted and latched
into the Interrupt Flags IE0 and IE1 at S5P2 of every machine cycle
 Serial Port flags RI and TI are set at S5P2
 The Timer 0 and Timer 1 flags, TF0 and TF1,
are set at S5P2 of the cycle in which the timers overflow
 If a request is active and conditions are right,
a hardware subroutine call to the requested service routine
will be the next instruction to be executed
 In a single-interrupt system, the response time is always
more than 3 cycles and less than 9 cycles

65/175
Part 1

Intel 8051: Reset


 The reset input is the RST pin, which has a Schmitt Trigger input
 Accomplished by holding the RST pin high
for at least two machine cycles (24 oscillator periods)
while the oscillator is running
 The RST pin is sampled during S5P2 of every machine cycle
 While the RST pin is high,
the port pins, ALE and PSEN are weakly pulled high
 Driving the ALE and PSEN pins to 0 while reset is active
could cause the device to go into an indeterminate state

66/175
Part 2

Intel 8051: Reset


S 5 S 6 S 1 S 2 S 3 S 4 S 5 S 6 S 1 S 2 S 3 S 4 S 5 S 6 S 1 S 2 S 3

R S T
IN T E R N A L R E S E T S IG N A L
S A M P L E S A M P L E
R S T R S T

A L E

P S E N

P 0 I N IN I N IN I N IN
S . A 0 - A 7 S . A 0 - A 7 S . A 0 - A 7 S . A 0 - A 7 S . A 0 - A 7 S .
I N IN I N IN I N IN

1 1 O S C . P E R IO D S 1 9 O S C . P E R I O D S
67/175
Intel 8051: Power On Reset
 RST pin must be held high long enough to allow the oscillator to
start up plus two machine cycles
 The oscillator start-up time depend on the oscillator frequency
 Port pins will be in a random state until the oscillator has started
and the internal reset algorithm has written 1s to them
 Powering up the device without a valid reset could cause the CPU
to start executing instructions from an indeterminate location

68/175
Intel 8051: EPROM Versions
 Electrically programmable by user
 Relative slow
 Limited number of erase/write cycles

69/175
Intel 8051: OTP Versions
 One Time Programmable
 It is standard EPROM without erasing window
 It is used for limited production

70/175
Intel 8051: FLASH Versions
 Supports in-system and in-board code changes
 Electrically erasable
 Reduces code inventory and scrap
 Simplifies the task of upgrading code and
reduces upgrade cycle time
 Provides just-in-time system software downloads
 Truly non-volatile

71/175
Intel 8051: The On-Chip Oscillator
 Intel 8051 microcontrollers have
an on-chip oscillator
 resonators are connected between
XTAL1 and XTAL2 pins
 external oscillators (HMOS or

Q U A R T Z
CMOS)

C E R A M I C

72/175
Intel 8051: Power Management
 Low power devices
 Power saving
 Voltage monitoring

73/175
Intel 8051: Power Reduction Modes
 CHMOS versions provides power reduced modes of operations
 There are two power reducing modes Idle and Power Down
 In the Idle mode oscillator continues to ran
Interrupt, Timer and Serial Port blocks continue to be clocked
clock signal is gated off to the CPU
 In the Power Down mode the oscillator is frozen

74/175
Part 1

Intel 8051: Instruction Set


Arithmetic Operations
ADD Addition
ADDC Addition with Carry Flag
SUBB Subtraction
INC Increment
DEC Decrement
MUL Multiply
DIV Divide
DA Decimal Adjust Accumulator

75/175
Part 2

Intel 8051: Instruction Set


Logical Operations
AND And
ORL Or
XRL Exclusive-Or
CLR A Clear (Accumulator)
CPL A Complement
RL A Rotate Left
RLC A Rotate Left through Carry Flag
RR A Rotate Right
RLC A Rotate Right through Carry Flag
SWAP A Swap nibbles within Accumulator
76/175
Part 3

Intel 8051: Instruction Set


Data Transfer
MOV Move
MOVC Move Code byte
MOVX Move External RAM byte/word
PUSH Push direct byte on stack
POP Pop direct byte from stack
XCH Exchange
XCHD Exchange low order Digit

77/175
Part 4

Intel 8051: Instruction Set


Boolean Variable Manipulation
CLR Clear bit/flag
SET Set bit/flag
CPL Complement bit/flag
ANL AND bit and flag
ORL OR bit and flag
MOV Move bit

78/175
Part 5

Intel 8051: Instruction Set


Program and Machine Control #1
ACALL Absolute Subroutine Call
LCALL Long Subroutine Call
RET Return from Subroutine
RETI Return from interrupt
AJMP Absolute Jump
LJMP Long Jump
SJMP Short (Relative) Jump
JMP @A+DPTR Jump indirect relative to the DPTR

79/175
Part 6

Intel 8051: Instruction Set


Program and Machine Control #2
JZ Jump if Accumulator is Zero
JNZ Jump if Accumulator is Not Zero
JC Jump if Carry flag is set
JNC Jump if No Carry flag
JB Jump if Bit set
JNB Jump if Bit Not set
JBC Jump if Bit set & Clear bit
CJNE Compare and Jump if Not Zero
DJNZ Decrement and Jump if Not Zero
NOP No Operation
80/175
Part 7

Intel 8051: Instruction Set


Instructions that affect Flag Settings #1
C OV AC
ADD X X X
ADDC X X X
SUBB X X X
MUL 0 X
DIV 0 X
DA X
RRC X
RLC X

81/175
Part 8

Intel 8051: Instruction Set


Instructions that affect Flag Settings #2
C OV AC
SET C 1
CLR C 0
CPL C X
ANL X
ORL X
MOV C, bit X
CJNE X
Operations on PSW X X X

82/175
Intel 8051: Addressing Modes
 Immediate Addressing MOV A,#20h
 Direct Addressing MOV A,30h
 Indirect Addressing MOV A,@R0
– refers to Internal RAM, never to an SFR
 External Direct MOVX A,@DPTR
– only two commands that use External Direct MOVX @DPTR,A
– DPTR holds the correct
external memory address
 External Indirect MOVX @R0,A
 Code Indirect MOVC A,@A+DPTR

83/175
Part 1

Intel 8051: Keil C Compiler


 Keil Compiler C51 includes extensions (for ANSI C) for:
– Memory Types and areas on the 8051
– Memory Models
– Memory Type Specifiers
– Variable Data Type Specifiers
– Bit variables and bit-addressable data
– Special Function Registers
– Pointers
– Function Attributes

84/175
Part 2

Intel 8051: Keil C Compiler


 Program Memory
– code specifier refers to to the 64Kbyte code memory
char code text[] = “ENTER PARAMETER”;
– Accessed by opcode MOVC @A+DPTR
 Program Memory is read only; it cannot be written to
 It can reside within 8051 CPU, it may be external, or both
 Program code, including all functions and library routines are
stored in program memory

85/175
Part 3

Intel 8051: Keil C Compiler


 Data Memory
– Up to 256 bytes of internal data memory are available
depending upon the 8051 derivate
– data refers to the first 128 bytes of internal memory
char data var1;
– idata refers to all 256 bytes of internal data memory
generated by indirect addressing
float idata x,y,z;
– bdata refers to 16 bytes of bit-addressable memory
in the internal data memory (20h to 2Fh)
char bdata flags;

86/175
Part 4

Intel 8051: Keil C Compiler


 External Data Memory
– xdata specifier refers to any location
in the 64KByte address space of external data memory
unsigned long xdata array[100];
– pdata specifier refers to only 1 page of 256 bytes
of external data memory
unsigned char xdata vector[10][4][4];

87/175
Part 5

Intel 8051: Keil C Compiler


 Special Function Register Memory
– SFRs are declared in the same fashion as other C variables
– sfr (rather then char or int)
sfr P0 = 0x80; /*Port0, address 80h*/
– sfr16 access 2 SFRs as 16-bit SFR (8051 derivatives)
sfr16 T2 = 0xCC /*Timer 2; T2L 0CCh, T2H 0CDh)
– sbit allows to access individual bits within an SFR
sfr PSW=0xD0;
sfr IE=0xA8;
sbit EA=IE^7;
sbit OV=0xD0^2;
sbit CY=0xD7;

88/175
Part 6

Intel 8051: Keil C Compiler


 Unique C51 Data Types
– bit
static bit done_flag=0;
– sbit
sbit EA= oxAF; /*defines EA to be the SFR bit at 0xAF*/
– sfr(Special Function Registers, 0x80-0xFF)
sfr P0 = 0x80; /* Port-0, address 80h*/
sfr P2 = 0xA0; /* Port-2, address 0A0h */
– sfr16
sfr16 T2=0xCC; /* Timer 2: T2L 0CCh, T2H 0CDh

89/175
Part 7

Intel 8051: Keil C Compiler


 Memory Models
– SmallModel -
all variables, by default, reside in the internal data memory
• All objects, as well as stack must fit into internal RAM
– Compact Model -
all variables, by default, reside in one page of external data memory
• Can accommodate a maximum of 256 variables
• Slower then small model
– Large Model -
all variables, by default, reside in external data memory
• The Data Pointer (DPTR) is used for addressing
• Memory access is inefficient
• Generates more code then small and compact model

90/175
Part 8

Intel 8051: Keil C Compiler


 Memory-specific Pointers
– Include a memory type specification in the pointer declaration
– May be used to access variables in the declared memory area only
char data *str;
int xdata *numtab;
long code *powtab;

91/175
Part 9

Intel 8051: Keil C Compiler


 Function Declarations Extensions allow to:
– Specify a function as an interrupt procedure
– Choose register bank used
– Select the memory model
– Specify reentrancy
[return_type] funcname ([args]) [{small|compact|
large}]
[reentrant][interrupt n][using n]
• small, compact, large - memory model
• reentrant - recursive function
• interrupt - interrupt function
• using - specify register bank

92/175
Part 10

Intel 8051: Keil C Compiler


 Function Parameters and the Stack
– The stack pointer on the 8051 access internal data memory only
– C51 locates the stack area immediately following
all variables in the internal data memory
– The stack pointer access internal data memory inirectly
– C51 assigns a fixed memory location for each function parameter
– Only return address is stored on the stack
– Interrupts fuctions switch register banks and
save the values of few registers on the stack
– By default, the C51 compiler passes up to three arguments in registers

93/175
Part 11

Intel 8051: Keil C Compiler


 Passing Parameters in Registers

Argument char int long


generic ptr
Number 1 byte ptr 2 bytes ptr float

1 R7 R6&R7 R4-R7 R1-R3

2 R5 R4&R5 R4-R7 R1-R3

3 R3 R2&R3

94/175
Part 12

Intel 8051: Keil C Compiler


 Function Return Values

Return Type Register Description

bit Carry Flag


char R7
int R6&R7 MSB in R6, LSB in R7
long R4-R7 MSB in R4, LSB in R7
float R4-R7 32-bit IEEE format
Memory type in R3,
generic ptr R1-R3
MSB R2, LSB R1

95/175
Part 13

Intel 8051: Keil C Compiler


 Specifying the Memory Model for a Function
#pragma small /*default small model */

extern int calc (char i, int b) large reentrant;


extern int func (char i, float f) large;
extern void *tcp (char xdata *xp, int ndx) small;

int mtest (int i, int y){ /*small model*/


return (i*y + y*i + func(-1, 4.75);}

int large_func (int i, int k) large { /*large model*/


return (mtest(i,k) * 2)}

96/175
Part 14

Intel 8051: Keil C Compiler


 Specifying the RegisterBank for a Function
void rb_function (void ) using 3 { ... }
– The using attribute affects object code as follows:
• The currently selected register bank is saved on stack
• The specified register bank is set
• The former register bank is restored before the function is exited
– Register banks are useful when processing interrupts or
when using a real-time operating system
– The using attribute may not be used in
functions that returns a value in registers

97/175
Part 15

Intel 8051: Keil C Compiler


 Register Bank Access
 The REGISTERBANK control directive allows you to specify which
default register bank to use
 Upon reset, 8051 loads the PSW with 00h, which selects register
bank 0. To change this, you sholud:
– Modify the startup code to select a different bank
– Specify the REGISTERBANK control directive along with the new
register bank number
 By default, C51 generates code that accesses the registers R0-R7
using absolute addresses
 To make a function insensitive to the current bank, it must be
compiled using the NOAREGS control directive

98/175
Part 16

Intel 8051: Keil C Compiler


 Interrupt Functions
void timer0 (void) interrupt 1 using 2 {
if (++interruptcnt == 4000){
second++;
Interruptcnt=0; }
}
– The interrupt attribute takes an argument
an integer constant in the 0 to 31 value range
– The interrupt attribute affects object code as follows:
• The contains of SFR ACC, B, DPH, DPL and PSW,
when required, are saved on stack
• All working registers are stored on stack
if a register bank is not specified
• SFRs and working registers are restored before exiting function
• The function is terminated by 8051 RETI instruction

99/175
Part 17

Intel 8051: Keil C Compiler


 Reentrant Function can be shared by several processes at the same time.
 When a reentrant function is executing, another process can interrupt it and
then begin to execute that same function. The reentrant functions may be
called recursively:
int calc (char i, int b) reentrant {
int x;
x=table[i];
return (x*b);
}
 Reentrant functions can be called simultaneously by two or more processes.

 Reentrant functions are often required in real-time applications or when


interrupt and non-interrupt code must share a function.

100/175
Part 18

Intel 8051: Keil C Compiler


 Functions may be selectively defined as reentrant, using the
reentrant attribute.
 For each reentrant function, a reentrant stack area is simulated in
internal or external memory.
 The following rules apply to reentrant functions:
– bit type arguments or local variables may not be used
– must not be called from alien functions or using alien attribute
– may have other attributes like using or interrupt
– return addresses are stored in the 8051 hardware stack
– functions using different memory models may be intermixed
– each of three reentrant models (small, compact and large) contains its
own reentrant stack and SP

101/175
Part 19

Intel 8051: Keil C Compiler


 Control directives are used to control the operation of the compiler and can
be specified after the filename on the command line or within a source file
using the #pragma directive:
C51 testfile.c SYMBOLS CODE DEBUG
or
#pragma SYMBOLS CODE DEBUG

 Directive categories:
– source controls define macros on the command line and determine the name of the
file to be compiled)
– object controls affect the form and content of the generated object module; allow
you to specify the optimizing level or include debugging information in the object
file
– listing controls govern various aspects of the listing file (format and specific
content)

102/175
Part 20

Intel 8051: Keil C Compiler


 The C51 is an optimizing compiler.
 The C51 provides six different levels of optimizing:
– constant folding, simple access optimizing, jump optimizing
– dead code elimination, jump negation
– data overlaying
– peephole optimizing
– register variables, extended access optimizing, local common
subexpression elimination, case/switch optimizing
– global common subexpression elimination, simple loop optimizing
– loop rotation

103/175
Part 21

Intel 8051: Keil C Compiler


 General optimizations:
– constant folding: several constant values occurring in an expression
or address calculation are combined as a constant
– jump optimizing: jumps are inverted or extended to the final target
addresses when the program efficiency is thereby increased
– dead code elimination: code which cannot be reached is removed
– register variables: automatic variables and function arguments are
located in registers when possible
– parameter passing via registers: a maximum of three function
arguments can be passed in registers
– global common subexpression elimination: identical subexpressions
or address calculations that occur multiple times in a function are
calculated only once

104/175
Part 22

Intel 8051: Keil C Compiler


 8051 - specific optimizations
– peephole optimization: complex operations are replaced by simplified
operations when memory space or execution time can be saved as a
result
– extended access optimizing: constants and variables are included
directly in operations
– data overlaying: data and bit segments of functions are overlaid with
other data and bit segments by the linker/locator
– case/switch optimization: any switch and case statements are
optimized by using a jump table or string of jumps

105/175
Part 23

Intel 8051: Keil C Compiler


 Options for code generation:
– OPTIMIZE(SIZE): common C operations are replaced by subprograms,
thereby reducing the program code
– NOAREGS: C51 no longer uses absolute register access; program
code is independent of the register bank
– NOREGPARAMS: parameter passing is always performed in local data
segments

106/175
Part 24

Intel 8051: Keil C Compiler


 You can easily interface C51 to routines written in 8051 assembler
 For an assembly routine to be called form C, it must be aware of
the parameter passing and return value conventions used in C

Function parameters
 By default C functions pass up to three parameters in registers.
The remaining parameters are passed in fixed memory locations.
 Functions that pass parameters in registers are prefixed with the
underscore character (_functionName)

107/175
Part 25

Intel 8051: Keil C Compiler


Parameter passing in registers
arg.no. char, 1byte ptr. Int, 2byte ptr long,float gen.ptr
1 R7 R6&R7 R4-R7 R1-R3
2 R5 R4&R5 R4-R7 R1-R3
3 R3 R2&R3 R1-R3

func1 (int a) - a is passed in R6 and R7


func2 (int b, int c, int *d) - b is passed in R6&R7, c in R4 & R3, d in R1, R2 & R3
func3 (long e, long f) - e is passed in R4, R5, R6 & R7, f cannot be located in
registers
func4(float g, char h) - g is passed in R4, R5, R6 & R7, h cannot be passed in
registers

108/175
Part 26

Intel 8051: Keil C Compiler


Parameter passing in fixed memory locations
 Parameters passed to assembly routines in fixed memory locations use
segments named ?function_name?BYTE and ?function_name?BIT to
hold the parameter values passed to the function function_name.

Function return values


 Function return values are always passed using CPU registers:
return type register
bit carry flag
char/unsigned char/1-byte pointer R7
int/unsigned int/2-byte pointer R6 & R7
long/unsigned long/float R4 - R7
generic pointer R1-R3

109/175
Part 27

Intel 8051: Keil C Compiler


Example:

#pragma SRC
#pragma SMALL
unsigned int asmfunc1(unsigned int arg) { return (1+arg); }

NAME ASM1
?PR?_asmfunc1?ASM1 SEGMENT CODE
PUBLIC _asmfunc1
RSEG ?PR?_asmfunc1?ASM1 USING 0
_asmfunc1: mov A,R7
add A,#10h
MOV R7,A
CLR A
ADDC A,R6
MOV R6,A
?C0001: RET END

110/175
Intel 8051: Manufacturers
 AMD  OKI
 Philips
 ARM Microcontrollers
 ARC Cores  Siemens
 Atmel  SMC
 Dallas
 SSI
 Hitachi semiconductors  Texas Instruments
 Intel  ZiLog
 ISSI  etc.

 Matra
 Microchip

111/175
Intel 8051: Additional Features
 Watch Dog Timers
 Clock Monitor
 Resident Program Loader
 Software protection
 µ P Supervisory Circuit

112/175
Watch Dog Timers
 Provides a means of graceful recovery from a system problem
 If the program fails to reset the watchdog at some predetermined
interval, a hardware reset will be initiated
 Especially useful for unattended systems

113/175
Clock Monitor
 If the input clock is too slow, a clock monitor can shut the
microcontroller down
 Usually software controlled status (on/off)

114/175
Resident Program Loader
 Loads a program by initializing program/data memory from either a
serial or parallel port
 Eliminates the erase/burn/program cycle (typical with EPROM’s)
 Allows system updating from an offsite location

115/175
Software protection
 Protect unauthorized snooping (reverse engineering,
modifications, piracy, etc.
 Only OTPs and Windowed devices option

116/175
Part 1

µ P Supervisory Circuit
 Functions:
µ P reset (active low or high) P F 1 1 1 6 O U T
– Manual reset input P F 0 2 1 5 B A T T O K
– Two stage power fall warning V c c 3 1 4 B A T T
– Backup-battery switchover W D I 4 M A X I M1 3 B A T T O N
– G N D M A X 8 01 27 C E IN
Write protection of RAM 5

– M R 6 1 1 C E O U T
2.275 threshold detector
L O W L I N7 E 1 0 W D O
– Battery OK flag indicator
R E S E 8T 9 R E S E T
– Watch Dog timer

117/175
Part 2

µ P Supervisory Circuit
PIN NAME FUNCTION

1 PFI Power-Fall Input


2 PFO Power-Fall Output
3 VCC Input Supply Voltage
4 WDI Watchdog Input
5 GND Ground
6 MR Manual-Reset Input
7 LOW LINE Low-Line Comparator Input
8 RESET (H) Active-High Reset Output

118/175
Part 3

µ P Supervisory Circuit
PIN NAME FUNCTION

9 RESET (L) Active-Low Reset Output


10 WDO Watchdog Output
11 CE OUT Chip-Enable Output
12 CE IN Chip-Enable Input
13 BATT ON Battery On Output
14 BATT Backup-Battery Input
15 BATT OK Battery OK Signal Output (Vbatt>2.265)
16 OUT Output Supply Voltage to CMOS RAM

119/175
Part 4

µ P Supervisory Circuit
+ 5 V

0 . 1 u F 0 . 1 u F

V c cB A T OT U T
O N
B A T T

R E A L
C M O S
T I M E
R A M
C L O C K
C E O U T
M R
O T H E R
S Y S T E M
R E S E T
A D D R E S S
S O U R C E S C E I N
D E C O D E
P U S H M A X I M
B U T T O N M A X 8 0 7 A D D R E S S
S W I T C H
W D I I /O
L O W L I N E N M I ( I N T )
R E S E T
+ 1 2 V
R E S E T R E S E T
B A T T O K I N T

u P
P F I
P F O + 1 2 V F A I L U R E
W D O W A T C H D O G F A I L U R E
G N D

120/175
Comparative Characteristics
Clock V ROM RAM Timers/ communi- Additional
Manufacturer I/O
[MHz] [V] [KB] [bytes] Counters cation Features
2.7 to 128 to full duplex
Atmel 24
6
2 to 8
256
32 Up to 3
serial port
watchdog,
256-byte
two serial power monitor,
Dallas 25 to 33 0 to 16 to 1.2 3
USARTs address and
kbyte
data encryption
4 to 8 channel 8-
0.5 to 2.7 to 128 to 24 to bit ADC,
Intel 24 6
0 to 32
256 56
2 to 3 serial port
watchdog,
PWM
ROM
2.7 to 128 to serial port, protection and
Matra 42
6
4 to 32
256
32 2 to 3
I2C secret tag,
watchdog
2.7 to 128 to
Oki 24
5.5
0 to 16
256
32 2 to 3 serial port
256-byte two watchdog
two serial
Siemens 18 to 40 8 to 32 to 2.2- 56 3 to 4
ports
timers, 16-bit
kbyte MPY/DIV unit

121/175
Intel 8051-Design Example
The complete design project using the 8051 microcontroller will be
presented here. All design phases mentioned earlier will be shown:

– specification

– circuit diagram

– pcb layout

122/175
Specification
The idea is to design a small, simple PCB for test purposes. The
device will have:

– 8 driver outputs (ie. LEDs, relays)

– a speaker output

– a light sensor input

– 3 extra inputs

– optional serial port

The device will be based on Atmel AT89C2051microprocessor, a 20


pin 8051 variant with FLASH program memory.
123/175
Circuit Diagram

124/175
Circuit Description
 The battery power supply is connected on terminals T1 &T2. While the circuit diagram specifies 3v/4.5v battery, the part ULN2803 needs 4.5v-5v battery

to get proper operation.


Switch SW2 allows the PCB to be turned on and off.


Capacitor C1 provides a reset signal to the microprocessor.

 XTAL1 provides the oscillator timing component for the microprocessor. It is important to use a crystal for XTAL1, not a ceramic resonator - prototype

testing shows that a ceramic resonator gives problems unless capacitors to ground are placed on X1 & X2.


Diode D1 provides some protection for the microprocessor in case of transients or misconnection of the battery


Optodarlington TR1 is the light sensor


Pot VR1, as labelled, adjusts the sensitivity of the light sensor

 Resistor R9 provides current limiting when full illumination is on TR1 at max sensitivity


The symbol PCB LAM#1 is a record of the PCB laminate ID number, and ensures the PCB laminate appears in the parts list


The symbol SKT1 is a record of the need for a socket for IC1, and ensures that the socket appears in the parts list

125/175
Circuit Description

TR2 is a switch used to sense illumination (On=TR1 illuminated)


Pin 6 of the micro is the LiteOn input (Low=TR1 illuminated)


SW1 is in parallel with the LiteOn input - pushing SW1 is like illuminating TR1


Resistors R12 & R13 pull up the open collector outputs P1.0 and P1.1 of IC1


IC2 is the driver IC, with several hundred milliamps drive capability on each output

 R1-R8 limit the current that can be taken from each output of IC2, and are most useful when LEDs are connected directly to pins L1-L8. If other devices

are used, such as relays, the values may of R1-R8 may have to be changed, or replaced with links.


R10 limits the current from IC1 into the base of TR3

 TR3 is a switch transistor that drives the sounder output (P3.7 Low=Sounder driven high)


R11 provides the class A load resistor for the sounder output


C2 Capacitively couples the speaker to TR3 and R11.


C3 provides some supply decoupling.

126/175
PCB Diagram
Central to the board are the
two IC's: The AT89C2051 (in
an IC socket) and ULN2803
driver. The bank of resistors
to the right of the ULN2803
are primarily for limiting the
current through LEDs, when
they are being driven direct
from the outputs. You may
wish to use another value
instead of the 27 ohm shown
on the circuit. The circuitry
to the left of the CPU is
primarily for the light sensor
- this is just a simple
darlington phototransistor,
sensitivity pot and switch
transistor.
127/175
PCB Artwork, overlay
The overlay
diagram is used
for the silkscreen
(legend) of the
circuit board.

128/175
PCB Artwork, top layer
The top layer
diagram is used
for the tracks
that go on the
component side
of the circuit
board.

129/175
PCB Artwork, bottom layer
The bottom layer
diagram is used for
the tracks that go on
the solder side of the
circuit board. The
layer is printed as if
you are viewing
through the circuit
board (this is a
convention used so
that the layers line
up) and will have to
be reversed left-for-
right before the
copper tracks are
printed.

130/175
PCB Art, Hole drilling diagram

131/175
Parts description

 RB.06/.15 - Radial polarised capacitor, 0.060 inch pitch lead space, 0.15 inch diameter

 RB.1/.2 - Radial polarised capacitor, 0.1 inch (2.5mm) pitch lead spacing, 0.2 inch (5mm) diameter

 DIODE0.3 - Axial diode, 0.3 inch (7.5mm) pitch lead spacing

 DIP20 - IC, standard 0.3 inch pitch 20 pin DIP package

 DIP18 - IC, standard 0.3 inch pitch 18 pin DIP package

 TP - Test point or terminal

 PCLAMINATE - The part being specified here is the etched PCB laminate

 AXIAL0.4 - 0.4 inch pitch unpolarised component (eg resistor)

 TV-06A - Push button switch, zippy brand

 S2020SMT - Slide switch

 TO-92A - Standard TO-92 package, with staggered leads, 0.1 inch pitch spacing

 VR4 - Adjustable pot, staggered leads, 0.1 inch pitch spacing

 XTAL2 - Crystal, HC49/4H (also called HC49Small) package

132/175
Parts notes


2.2UF50VMM - Radial polarised capacitor, Microminiature style, eg Rubycon, elna
 AT89C2051 - Atmel microprocessor, see Atmel site for data and a programmer


ULN2803A - Manufacturer: Allegro (formerly known as Sprague)


27E - Resistor, value 27 ohm - substitute if required for different outputs
 MEL12 - Phototransistor - many substitutes will work, but darlington types offer the best sensitivity. We have used BP103B (Farnell

212-763 in Australia). Flat goes toward TR2 for two leaded devices.
 3.57945Mhz - Frequency depends on application program. Use a crystal, rather than a ceramic resonator (otherwise fit extra
capacitors to gnd on X1 and X2).

133/175
Using the Device
The diagram on the
left shows a typical
circuit using the
HSETI PCB, with
the optional serial
port in place also.
The serial port
does not have
strict RS232 level
signals, but will
work with just
about all PC
clones with
reasonable cable
lengths.

134/175

Вам также может понравиться