Early 8051 variants with dual dptr (AMD?)

Jun 29, 2016 10 Replies

Which were the first 8051 derivatives with multiple dptr? AFAIK the Siemens 80C517 was the first with 8 dptr. I've read that AMD had an early dual dptr vairant, but couldn't find a datasheet yet. Which device was the first to use the following scheme: DPL1 at 0x84, DPH1 at 0x85, DPS at 0x86.0?



Philipp


I found the AMD 80C521, which looks like a good candiate for the first dual-dptr 8051-variant. But I'm not sure if there might be earlier ones.

Philipp

I vaguely remember a Dallas Part with dual data pointers. Not sure if it was among the first tho. Maybe 1996 or so. keil has a list and data sheets on their site.

Cheers

In the Phillips IC20 1997 data book the 80C52 has the feature list 'Second DPTR register' Dated 1996 Aug 16

In the Dallas Semi 1994-1995 Application data book, there are some appnotes on the DS80C320, dated 8-30-93. I know that had a Dual DP. I no longer have the Dallas data book for the DS51 series. ;(

I see no mention in the Intel 1993/1994 Embedded application handbook.

Cheers

I've had many people say they use the 8051 because it is second sourced widely. With multiple DPTR registers, wouldn't the instruction set be modified making it no longer code compatible? Or is the DPTR register switched out by some mechanism that is essentially transparent to existing code?

Rick C

The oldest multi-dptr datasheets I found so far are an 1994 one for the Siemens 80C517 and an 1987 one for the AMD 80C521.

Philipp

There a re lots of different ways to switch the dptr, but they are all transparent to code that uses only one dptr.

Philipp

P.S.: A wiki page for the multi-dptr stuff is currently being created at

formatting link

The default operation is drop-in equivlent to the stock 51 series.

Cheers

Am 30.06.2016 um 06:15 schrieb rickman:

Of course not. That would be silly.

The 8051 has an entire dedicated memory space for "special function registers". The obvious place to put the switch that flips the two available DPTRs is in there.

Normal compiled code won't get to use the additional DPTR, though. It would be used mainly to speed up optimized or inlined versions of stuff like memcpy(), memset() etc. It was great fun to deal with this in assembly, though.

Yes. The only exception I know of are the ds390 and ds400 backends in SDCC, which use the dual dptr for normal code. But one could argue that the DS390 and DS400 with their 24-bit pointers are more than just normal

8051 drivatives.

Philipp

which one had dual dptr first. AFAIK the P89C51R had DPS at 0xa2 and neither dpl1 nor dph1.

Philipp

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required