AT89C51CC01 Atmel Corporation, AT89C51CC01 Datasheet - Page 27
![no-image](/images/manufacturer_photos/0/0/79/atmel_corporation_sml.jpg)
AT89C51CC01
Manufacturer Part Number
AT89C51CC01
Description
Manufacturer
Atmel Corporation
Datasheets
1.AT89C51CC01.pdf
(167 pages)
2.AT89C51CC01.pdf
(12 pages)
3.AT89C51CC01.pdf
(32 pages)
4.AT89C51CC01.pdf
(29 pages)
Specifications of AT89C51CC01
Flash (kbytes)
32 Kbytes
Max. Operating Frequency
40 MHz
Cpu
8051-12C
Max I/o Pins
34
Uart
1
Can
1
Adc Channels
8
Adc Resolution (bits)
10
Adc Speed (ksps)
62.5
Sram (kbytes)
1.25
Eeprom (bytes)
2048
Self Program Memory
API
Operating Voltage (vcc)
3.0 to 5.5
Timers
4
Isp
UART/CAN
Watchdog
Yes
Available stocks
Company
Part Number
Manufacturer
Quantity
Price
Company:
Part Number:
AT89C51CC01CA-IM
Manufacturer:
ATMEL
Quantity:
831
Company:
Part Number:
AT89C51CC01CA-RLTUM
Manufacturer:
ATMEL
Quantity:
4 000
Company:
Part Number:
AT89C51CC01CA-RLTUM
Manufacturer:
Atmel
Quantity:
3 136
Company:
Part Number:
AT89C51CC01CA-SLIM
Manufacturer:
ATMEL
Quantity:
11
Company:
Part Number:
AT89C51CC01CA-SLSUM
Manufacturer:
ATMEL
Quantity:
2 916
Part Number:
AT89C51CC01UA-RLTUM
Manufacturer:
ATMEL/爱特梅尔
Quantity:
20 000
Part Number:
AT89C51CC01UA-UM
Manufacturer:
ATMEL/爱特梅尔
Quantity:
20 000
Dual Data Pointer
Description
Application
4129N–CAN–03/08
The T89C51CC01 implements a second data pointer for speeding up code execution
and reducing code size in case of intensive usage of external memory accesses.
DPTR 0 and DPTR 1 are seen by the CPU as DPTR and are accessed using the SFR
addresses 83h and 84h that are the DPH and DPL addresses. The DPS bit in AUXR1
register (see Figure 20) is used to select whether DPTR is the data pointer 0 or the data
pointer 1 (see Figure 16).
Figure 16. Dual Data Pointer Implementation
Software can take advantage of the additional data pointers to both increase speed and
reduce code size, for example, block operations (copy, compare…) are well served by
using one data pointer as a “source” pointer and the other one as a “destination” pointer.
Hereafter is an example of block move implementation using the two pointers and coded
in assembler. The latest C compiler takes also advantage of this feature by providing
enhanced algorithm libraries.
The INC instruction is a short (2 Bytes) and fast (6 machine cycle) way to manipulate the
DPS bit in the AUXR1 register. However, note that the INC instruction does not directly
force the DPS bit to a particular state, but simply toggles it. In simple routines, such as
the block move example, only the fact that DPS is toggled in the proper sequence mat-
ters, not its actual value. In other words, the block move routine works the same whether
DPS is '0' or '1' on entry.
; ASCII block move using dual data pointers
; Modifies DPTR0, DPTR1, A and PSW
; Ends when encountering NULL character
; Note: DPS exits opposite to the entry state unless an extra INC AUXR1 is
added
AUXR1EQU0A2h
move:movDPTR,#SOURCE ; address of SOURCE
mv_loop:incAUXR1; switch data pointers
end_move:
incAUXR1 ; switch data pointers
movDPTR,#DEST ; address of DEST
movxA,@DPTR; get a byte from SOURCE
incDPTR; increment SOURCE address
incAUXR1; switch data pointers
movx@DPTR,A; write the byte to DEST
incDPTR; increment DEST address
jnzmv_loop; check for NULL terminator
DPTR1
DPTR0
DPH0
DPH1
DPL0
DPL1
DPS
0
1
0
1
AUXR1.0
DPH
DPL
DPTR
27