Key board
R L S
First Design
Second Design
B
A
Key board
B
C D
Third Design
B
A
C
Contents:
Introduction
Block Diagram and Pin Description of the 8051
Registers
Memory mapping in 8051
Stack in the 8051
I/O Port Programming
Timer
Interrupt
Why do we need to learn
The microprocessor is the core of
Microprocessors/controller
computer systems.
s?
Nowadays many communication,
digital entertainment, portable
devices, are controlled by them.
A designer should know what types of
components he needs, ways to reduce
production costs and product reliable.
Different aspects of a
microprocessor/controller
Hardware :Interface to the real world
Software :order how to deal with inputs
The necessary tools for a
microprocessor/controller
CPU: Central Processing Unit
I/O: Input /Output
Bus: Address bus & Data bus
Memory: RAM & ROM
Timer
Interrupt
Serial Port
Parallel Port
Microprocessors:
General-purpose microprocessor
CPU for Computers
No RAM, ROM, I/O on CPU chip itself
Example Intels x86, Motorolas 680x0
CPU
GeneralPurpose
Microprocessor
Many chips on mothers board
Data Bus
RAM
ROM
I/O
Port
Address Bus
General-Purpose Microprocessor System
Timer
Serial
COM
Port
Microcontroller :
A smaller computer
On-chip RAM, ROM, I/O ports...
Example Motorolas 6811, Intels 8051, Zilogs Z8 and PIC 16X
CPU
I/O
Port
RAM ROM
Serial
Timer COM
Port
A single chip
Microcontroller
Microprocessor vs. Microcontroller
Microcontroller
Microprocessor
CPU, RAM, ROM, I/O and
CPU is stand-alone, RAM,
timer are all on a single chip
ROM, I/O, timer are separate fix amount of on-chip ROM,
designer can decide on the
RAM, I/O ports
amount of ROM, RAM and
for applications in which cost,
I/O ports.
power and space are critical
expansive
single-purpose
versatility
general-purpose
Block Diagram
External interrupts
Interrupt
Control
On-chip
ROM for
program
code
Timer/Counter
On-chip
RAM
Timer 1
Timer 0
CPU
OSC
Bus
Control
4 I/O Ports
P0 P1 P2 P3
Address/Data
Serial
Port
TxD RxD
Counter
Inputs
Pin Description of the 8051
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
(RXD)P3.0
(TXD)P3.1
(INT0)P3.2
(INT1)P3.3
(T0)P3.4
(T1)P3.5
(WR)P3.6
(RD)P3.7
XTAL2
XTAL1
GND
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
8051
(8031)
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
Vcc
P0.0(AD0
P
) 0.1(AD1)
P0.2(AD2
P
) 0.3(AD3)
P0.4(AD4)
P0.5(AD5)
P0.6(AD6)
P0.7(AD7)
EA/VPP
ALE/PROG
PSEN
P2.7(A15)
P2.6(A14
)P2.5(A13
P
) 2.4(A12
)P2.3(A11)
P2.2(A10)
P2.1(A9)
P2.0(A8)
Figure (b). Power-On RESET Circuit
Vcc
+
10 uF
31
30 pF
8.2 K
30 pF
11.0592 MHz
19
18
EA/VPP
X1
X2
9 RST
Port 0 with Pull-Up Resistors
Vcc
Port 0
P0.0
DS5000 P0.1
P0.2
8751
P0.3
P0.4
8951
P0.5
P0.6
P0.7
10 K
Registers
A
B
R0
DPTR
DPH
DPL
R1
R2
PC
PC
R3
R4
R5
R6
R7
Some 8-bitt Registers of
the 8051
Some 8051 16-bit Register
Stack in the 8051
7FH
The register used to access
the stack is called SP
(stack pointer) register. 30H
Scratch pad RAM
2FH
Bit-Addressable RAM
The stack pointer in the 20H
8051 is only 8 bits wide,1FH
which means that it can 18H
17H
10H
take value 00 to FFH.
When 8051 powered up, 0FH
08H
the SP register contains 07H
00H
value 07.
Register Bank 3
Register Bank 2
Register Bank 1( Stack)
Register Bank 0
Timer:
:
Interrupt :
Numerical Bases Used
in
Programming
Hexadecimal
Binary
BCD
Hexadecimal Basis
Hexadecimal Digits:
1 2 3 4 5 6 7 8 9 A B C D E
F
A=10
B=11
C=12
D=13
E=14
Decimal, Binary, BCD, &
Hexadecimal Numbers
(43)10=
(0100 0011)BCD=
( 0010 1011 )2 =
(
)16
Register Addressing Mode
MOV Rn, A
;n=0,..,7
ADD
A, Rn
MOV DPL, R6
MOV DPTR, A
MOV Rm, Rn
Direct Addressing Mode
Although the entire of 128 bytes of RAM can be
accessed using direct addressing mode, it is most often
used to access RAM loc. 30 7FH.
MOV R0, 40H
MOV 56H, A
MOV A, 4
MOV 6, 2
; MOV A, R4
; copy R2 to R6
; MOV R6,R2 is invalid !
Immediate Addressing Mode
MOV A,#65H
MOV R6,#65H
MOV DPTR,#2343H
MOV P1,#65H
SETB bit
CLR bit
; bit=1
; bit=0
SETB
SETB
SETB
SETB
SETB
; CY=1
;bit 0 from port 0 =1
;bit 7 from port 3 =1
;bit 2 from ACCUMULATOR =1
;set high D5 of RAM loc. 20h
C
P0.0
P3.7
ACC.2
05
Note:
CLR instruction is as same as SETB
i.e.:
CLR
C
;CY=0
But following instruction is only for CLR:
CLR
A
;A=0
DEC
INC
byte
byte
;byte=byte-1
;byte=byte+1
INC
DEC
DEC
R7
A
40H
; [40]=[40]-1
LOOP and JUMP Instructions
Conditional Jumps :
JZ
Jump if A=0
JNZ
Jump if A/=0
DJNZ
Decrement and jump if A/=0
CJNE A,byte
Jump if A/=byte
CJNE reg,#data
Jump if byte/=#data
JC
Jump if CY=1
JNC
Jump if CY=0
JB
Jump if bit=1
JNB
Jump if bit=0
JBC
Jump if bit=1 and clear bit
Call instruction
SETB P0.0
.
.
CALL UP
.
.
.
UP:CLR P0.0
.
.
RET