80C51-Family-programming.pdf

(177 KB) Pobierz
80C51 family programmer's guide and instruction set
Philips Semiconductors
80C51 Family
80C51 family programmer’s guide
and instruction set
PROGRAMMER’S GUIDE AND INSTRUCTION SET
register bank contains eight 1-byte registers 0 through 7. Reset
initializes the stack pointer to location 07H, and it is incremented
once to start from location 08H, which is the first register (R0) of
the second register bank. Thus, in order to use more than one
register bank, the SP should be initialized to a different location
of the RAM where it is not used for data storage (i.e., the higher
part of the RAM).
2. Bit Addressable Area: 16 bytes have been assigned for this
segment, 20H-2FH. Each one of the 128 bits of this segment can
be directly addressed (0-7FH). The bits can be referred to in two
ways, both of which are acceptable by most assemblers. One
way is to refer to their address (i.e., 0-7FH). The other way is
with reference to bytes 20H to 2FH. Thus, bits 0-7 can also be
referred to as bits 20.0-20.7, and bits 8-FH are the same as
21.0-21.7, and so on. Each of the 16 bytes in this segment can
also be addressed as a byte.
3. Scratch Pad Area: 30H through 7FH are available to the user as
data RAM. However, if the stack pointer has been initialized to
this area, enough bytes should be left aside to prevent SP data
destruction.
Memory Organization
Program Memory
The 80C51 has separate address spaces for program and data
memory. The Program memory can be up to 64k bytes long. The
lower 4k can reside on-chip. Figure 1 shows a map of the 80C51
program memory.
The 80C51 can address up to 64k bytes of data memory to the chip.
The MOVX instruction is used to access the external data memory.
The 80C51 has 128 bytes of on-chip RAM, plus a number of Special
Function Registers (SFRs). The lower 128 bytes of RAM can be
accessed either by direct addressing (MOV data addr) or by indirect
addressing (MOV @Ri). Figure 2 shows the Data Memory
organization.
Direct and Indirect Address Area
The 128 bytes of RAM which can be accessed by both direct and
indirect addressing can be divided into three segments as listed
below and shown in Figure 3.
1. Register Banks 0-3: Locations 0 through 1FH (32 bytes). The
device after reset defaults to register bank 0. To use the other
register banks, the user must select them in software. Each
Figure 2 shows the different segments of the on-chip RAM.
FFFF
FFFF
60k
BYTES
EXTERNAL
OR
64k
BYTES
EXTERNAL
1000
AND
0FFF
4k BYTES
INTERNAL
0000
0000
SU00567
Figure 1. 80C51 Program Memory
1997 Sept 18
78
104092795.017.png
Philips Semiconductors
80C51 Family
80C51 family programmer’s guide
and instruction set
0FFF
INTERNAL
FF
64k
BYTES
EXTERNAL
SFRs
DIRECT ADDRESSING
ONLY
80
AND
7F
DRIECT AND INDIRECT
ADDRESSING
00
0000
SU00568
Figure 2. 80C51 Data Memory
8 BYTES
78
7F
70
77
68
6F
60
67
58
5F
SCRATCH
PAD
AREA
50
57
48
4F
40
47
38
3F
30
37
28
... 7F
2F
BIT
ADDRESSABLE
SEGMENT
20
0 ...
27
18
3
1F
10
2
17
REGISTER
BANKS
08
1
0F
00
0
07
SU00569
Figure 3. 128 Bytes of RAM Direct and Indirect Addressable
1997 Sept 18
79
104092795.018.png 104092795.019.png 104092795.020.png 104092795.001.png
Philips Semiconductors
80C51 Family
80C51 family programmer’s guide
and instruction set
Table 1. 80C51 Special Function Registers
SYMBOL
DESCRIPTION
DIRECT
ADDRESS
BIT ADDRESS, SYMBOL, OR ALTERNATIVE PORT FUNCTION
MSB
LSB
RESET VALUE
ACC*
Accumulator
E0H
E7
E6
E5
E4
E3
E2
E1
E0
00H
B*
B register
F0H
F7
F6
F5
F4
F3
F2
F1
F0
00H
DPTR
Data pointer (2 by-
tes)
DPH
Data pointer high
83H
00H
DPL
Data pointer low
82H
00H
AF
AE
AD
AC
AB
AA
A9
A8
IE*
Interrupt enable
A8H
EA
ES
ET1
EX1
ET0
EX0
0x000000B
BF
BE
BD
BC
BB
BA
B9
B8
IP*
Interrupt priority
B8H
PS
PT1
PX1
PT0
PX0
xx000000B
87
86
85
84
83
82
81
80
P0*
Port 0
80H
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
FFH
97
96
95
94
93
92
91
90
P1*
Port 1
90H
T2EX
T2
FFH
A7
A6
A5
A4
A3
A2
A1
A0
P2*
Port 2
A0H
A15
A14
A13
A12
A11
A10
A9
A8
FFH
B7
B6
B5
B4
B3
B2
B1
B0
P3*
Port 3
B0H
RD
WR
T1
T0
INT1
INT0
TxD
Rxd
FFH
PCON 1
Power control
87H
SMOD
GF1
GF0
PD
IDL
0xxxxxxxB
D7
D6
D5
D4
D3
D2
D1
D0
PSW*
Program status word
D0H
CY
AC
F0
RS1
RS0
OV
P
00H
SBUF
Serial data buffer
99H
xxxxxxxxB
9F
9E
9D
9C
9B
9A
99
98
SCON*
Serial controller
98H
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
00H
SP
Stack pointer
81H
07H
8F
8E
8D
8C
8B
8A
89
88
TCON*
Timer control
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TH0
Timer high 0
8CH
00H
TH1
Timer high 1
8DH
00H
TL0
Timer low 0
8AH
00H
TL1
Timer low 1
8BH
00H
TMOD
Timer mode
89H
GATE
C/T
M1
M0
GATE
C/T
M1
M0
00H
NOTES:
* Bit addressable
1. Bits GF1, GF0, PD, and IDL of the PCON register are not implemented on the NMOS 8051/8031.
1997 Sept 18
80
104092795.002.png 104092795.003.png 104092795.004.png 104092795.005.png 104092795.006.png 104092795.007.png 104092795.008.png
Philips Semiconductors
80C51 Family
80C51 family programmer’s guide
and instruction set
8 BYTES
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
P1
97
88
TCON
TMOD
TL0
TL1
TH0
TH1
8F
80
P0
SP
DPL
DPH
PCON
87
BIT ADDRESSABLE
SU00570
Figure 4. SFR Memory Map
1997 Sept 18
81
104092795.009.png
Philips Semiconductors
80C51 Family
80C51 family programmer’s guide
and instruction set
Those SFRs that have their bits assigned for various functions are listed in this section. A brief description of each bit is
provided for quick reference. For more detailed information refer to the Architecture Chapter of this book.
PSW: PROGRAM STATUS WORD. BIT ADDRESSABLE.
CY
AC
F0
RS1
RS0
OV
P
CY
PSW.7
Carry Flag.
AC
PSW.6
Auxiliary Carry Flag.
F0
PSW.5
Flag 0 available to the user for general purpose.
RS1
PSW.4
Register Bank selector bit 1 (SEE NOTE 1).
RS0
PSW.3
Register Bank selector bit 0 (SEE NOTE 1).
OV
PSW.2
Overflow Flag.
PSW.1
Usable as a general purpose flag.
P
PSW.0
Parity flag. Set/cleared by hardware each instruction cycle to indicate an odd/even number of ‘1’ bus in
the accumulator.
NOTE:
1. The value presented by RS0 and RS1 selects the corresponding register bank.
RS1
RS0
REGISTER BANK
ADDRESS
0
0
0
00H-07H
0
1
1
08H-0FH
1
0
2
10H-17H
1
1
3
18H-1FH
PCON: POWER CONTROL REGISTER. NOT BIT ADDRESSABLE.
SMOD
GF1
GF0
PD
IDL
SMOD Double baud rate bit. If Timer 1 is used to generate baud rate and SMOD = 1, the baud rate is doubled when the Serial
Port is used in modes 1, 2, or 3.
Not implemented, reserved for future use.*
Not implemented reserved for future use.*
Not implemented reserved for future use.*
GF1
General purpose flag bit.
GF0
General purpose flag bit.
PD
Power Down Bit. Setting this bit activates Power Down operation in the 80C51. (Available only in CMOS.)
IDL
Idle mode bit. Setting this bit activates Idle Mode operation in the 80C51. (Available only in CMOS.)
If 1s are written to PD and IDL at the same time, PD takes precedence.
* User software should not write 1s to reserved bits. These bits may be used in future 8051 products to invoke new features.
1997 Sept 18
82
104092795.010.png 104092795.011.png 104092795.012.png 104092795.013.png 104092795.014.png 104092795.015.png 104092795.016.png
Zgłoś jeśli naruszono regulamin