The DS87C550 High-speed Micro with A/D and PWM as an Upgrade for 8051 Derivatives

The DS87C550 High-speed Micro with A/D and PWM as an Upgrade for 8051 Derivatives

作者联系方式

Generic_Author_image

Kevin Self

摘要

The Dallas Semiconductor DS87C550 EPROM High-Speed Microcontroller with A/D and PWM is an enhanced version of the popular 87C552 microcontroller. It is an 8051 drop-in replacement for the 87C552 with increased performance obtained by executing code with four clock cycles. This application note describes the issues related to this processor when utilizing software loops, power-on reset and memory interface timing while integrating into older 8032 designs.

Introduction

The DS87C550 High-Speed Microcontroller with A/D and PWM was designed to be highly compatible with many 8051 derivatives. It was designed with the same pinout and basic resources as the 87C552, but has significantly enhanced performance capabilities and a number of additional resources. Since the instruction set and pinout are the same, many situations allow it to be used as a drop-in replacement for that device. When doing so however, there are some issues that must be taken into account. This application note discusses those issues.

Processor Speed

While the DS87C550 is 100 percent compatible with the 8051 instruction set, the execution of the instructions has been streamlined for increased performance. A single byte instruction that previously required 12 clocks to complete now executes in 4 clocks. In addition, the DS87C550 can accept clock speeds up to 33 MHz where in some versions of the 8032 the maximum was 12 MHz. Because of this higher performance, there are speed-related issues that must be considered when evaluating the DS87C550 as a replacement for traditional 8051 microcontrollers.

Memory Interface Timing
The reduced instruction execution time of the DS87C550 can, for the same frequency crystal, result in faster external memory access times. For example, the data sheet for the 8032 stipulates that, when using a 12 MHz crystal, the program memory must have an address access time of 302 ns or less (neglecting any address latch overhead). A DS87C550 also using a 12 MHz crystal requires a memory with an address access time of 230 ns of less. Since most available memories today offer much faster access times, this is not likely to be an important design consideration.

Software Loops
Another speed-related issue is the use of software timing. It is frequently the case that software writers will use the presumed constant execution speed of a processor as a real time reference. Often a tight loop that requires a known number of clocks to execute will be used for generating delays. Since the DS87C550 executes instructions much more quickly than the standard 8032, these previously designed timing loops will no longer produce the originally intended results. While the use of software timing loops is generally discouraged, in practice they are used rather frequently in embedded applications. The DS87C550 was designed so that the internal timers default to a condition where they behave exactly as the timers in the 8032. If application code is written to make use of these timers rather than software delays, the code will run as originally intended.

Interrupts

The accommodation of the expanded features of the High-Speed Microcontroller Family required a slight reorganization of the interrupt vector address map compared with other 8051 derivatives as shown in the following table.

Interrupt Name Interrupt Description Vector Addresses
DS87C550 D7C552 DS80C320
INT0-bar External Interrupt 0 03h 03h 03h
SCON1 Serial Port 1 0Bh - 3Bh
A/D A/D Converter 13h 53h -
TF0 Timer 0 1Bh 0Bh 0Bh
INT2/CF0 External Interrupt 2 or Capture 0 23h 33h 43h
CM0F Compare Match 0 2Bh 5Bh -
PFI Power Fail Interrupt 33h - 33h
INT1-bar External Interrupt 1 3Bh 13h 13h
INT3-bar/CF1 External Interrupt 3 or Capture 1 43h - 4Bh
CM1F Compare Match 1 4Bh 63h -
TF1 Timer 1 53h 1Bh 1Bh
INT4/CF2 External Interrupt 2 or Capture 2 5Bh - 53h
CM2F Compare Match 2 63h 6Bh -
SCON0 Serial port 0 6Bh 23h 23h
INT5-bar/CF3 External Interrupt 5 or Capture 3 73h - 5Bh
TF2 Timer 2 7Bh 73h 2Bh

The DS87C550 incorporates circuitry to generate its own power-on reset function. This eliminates the cost and board-space associated with an external component. While the RST pin may still be connected to an external reset generating circuit, this internal feature allows the option of removing the external component as a cost reduction. Although these features are designed to be transparent if not needed, there a few situations where the internal power-fail reset feature could interact with an existing design in undesired ways. One such instance might be if the design requires the reset voltage to be at a specific point or exist for specific duration. Another case might be where battery backed RAM is relied upon for data storage. If the RAM contains its own voltage detection circuitry and does not become unprotected at the same voltage as the DS87C550 leaves reset (4.0 volts), then the processor could erroneously access protected RAM. While these cases are not common, they remain something to consider for each specific application.

Power Consumption

In addition to being a higher performance device, the DS87C550 is also a lower power device than the 8032 when equivalent work is considered. All CMOS parts exhibit the property that they consume more power as their speed goes up. Since the DS87C550 is a higher performance part, it will consume more power for a given crystal frequency. However, if an equivalent amount of work is considered, it consumes slightly less power than a conventional 8032. This difference in power consumption is probably only important for battery powered applications, in which case Stop mode power is likely to be an important consideration.

Special Function Register Changes

The Special Function Register (SFR) map of the DS87C550 differs slightly from other members of the 8051 family to accommodate the new feature set. The following table highlights DS87C550 SFR locations with different functions on either the 87C552 or DS80C320/8051. The use assembler/compiler header files specifically designed for the DS87C550 will remove any confusion when porting software from other members of the 8051 family.

Address DS87C550 87C552 DS80C320 Notes
86h DPS - DPS DS87C550 has new bits.
87h PCON PCON PCON DS87C550 has new bits.
90h P1 P1 P1 DS87C550 alternate pin functions changed
91h RCON - EXIF  
9Fh PMR - -  
A1h SADDR0 - -  
A2h SADDR1 - -  
A9h CMPL0 CML0 SADDR0  
AAh CMPL1 CML1 SADDR1  
B8h IP IP0 IP DS87C550 adds PAD bit
BEh T2CON - -  
BFh T2MOD - -  
C0h P4 - SCON1  
C1h - - SBUF1  
C4h P5 P5 PMR  
C8h T2IR TM2IR T2CON  
C9h CMPH0 CMH0 T2MOD  
CAh CMPH1 CMH1 RCAP2L  
CBh CMPH2 CMH2 RCAP2H  
CCh CPTH0 CTH0 TL2  
CDh CPTH1 CTH1 TH2  
D8h SCON1 S1CON WDCON  
D9h SBUF1 S1STA -  
ECh TL2 TML2 -  
EDh TH2 TMH2 -  
FFh WDCON T3 -