XC878 vs. XC888 Overview

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
I'm trying to determine the effort it takes to port our libraries to the XC888 (as far as applicable). Our formula student team uses and will continue to use the XC878, but several professors in automotive technology and mechatronics use the XC888 for teaching. So porting our libraries might benefit the teaching at the university. However I have several goals to achieve and only limited time, so I am forced to prioritize and for that I need to know what I'm getting into.

The XC888 has less XRAM and ROM than the XC878, but it has many of the same modules (except for the T2CCU), so it should be possible to port a lot of code.

What I need to know, though is which registers are at different addresses, which registers have different bits and whether registers are on the same pages.

A list would be optimal, but it's not what I'm looking for. What I'd like was someone to tell me a rough estimate of how much of a difference there is.

Maybe there even is a document about upgrading from XC888 to XC878 that contains such information. If so I have overlooked it and would appreciate a link.
0 Likes
4 Replies
Not applicable
Hi kamikaze,

You can download here the datasheet file and other info of XC878 & XC888

FOR XC878 = http://www.ic-on-line.cn/view_download.php?id=1438685&file=0211\xc878c_4677605.pdf

FOR XC888 = http://www.ic-on-line.cn/view_download.php?id=1094850&file=0050\xc886_367795.pdf
0 Likes
Not applicable
There is no XC878 to XC888 porting guide that I know of. Maybe because XC878 is a newer device. Anyway the two microcontrollers are very very similar so porting should be no challenge. As far as I know even SFR mapping is the same. Some differences that may be relevant:

- a couple of modules (e.g. T2CCU as you mentioned, or UART1) not available in XC888

- some FLASH and RAM address and range differences

- performance (execution from XC878 FLASH requires no waitstates --> much faster)
0 Likes
Not applicable
kamikaze wrote:
...
The XC888 has less XRAM and ROM than the XC878, but it has many of the same modules (except for the T2CCU), so it should be possible to port a lot of code.

What I need to know, though is which registers are at different addresses, which registers have different bits and whether registers are on the same pages.

A list would be optimal, but it's not what I'm looking for. What I'd like was someone to tell me a rough estimate of how much of a difference there is.


They are both 8051 from the same vendor, so there will be many more similarities than differences.

If you want a list, dig into the tools for the SFR files, usually called XC878.h XC888.h or XC878.inc XC888.inc, and those will have a simple list of SFR names and address.
If those files do not include Interrupt Vector info, copy that from the data sheets.

A few minutes with an editor or spread sheet, will allow a line-by-line compare, and generally in the 8051, if a SFR has the same name, and is at the same address, then it has the same function.
Some may be 'safe supersets' like interrupt enables.

Also, in most tool chains, you can do conditionals based on Target Device, so that means you can build and share libraries for both variants, with a small amount of work.
Sounds almost like a good student project ? 😉
0 Likes
Not applicable
I'm afraid it's not quite as easy as people make it out to be. E.g. the PLL is completely different.
0 Likes