Welcome to the Industrial Automation website!

NameDescriptionContent
HONG  KANG
E-mail  
Password  
  
Forgot password?
  Register
当前位置:

SIEMENS C500 microcontroller architecture and instruction set

来源: | 作者:FAN | 发布时间 :2026-04-29 | 54 次浏览: | 🔊 Click to read aloud ❚❚ | Share:

CPU core enhancement: breaking through the bottleneck of single data pointer

One of the most significant architectural improvements in the C500 series is the extension of Data Pointer (DPTR). The standard 8051 only has one 16 bit DPTR for accessing external data storage or external I/O. In applications that require frequent switching between multiple memory regions or peripheral addresses, software must repeatedly perform PUSH/POP operations to save and restore DPTR, which not only consumes additional instruction cycles but also occupies valuable internal RAM stack space.

1. Implementation mechanism of eight data pointers

C500 cleverly implements up to 8 16 bit data pointers (DPTR0 to DPTR7) while maintaining full compatibility with the 8051 instruction set. Its core is an SFR called DPSEL (Data Pointer Select Register, address 92H), whose lower 3 bits (DPSEL. 2-DPSEL. 0) are used to select the currently activated DPTR. From a software perspective, any instruction to operate DPTR (such as MOV DPTR, # data16, MOVX A, @ DPTR, INC DPTR, etc.) only acts on the DPTR pointer currently selected by DPSEL. Switching data pointers only requires one instruction (such as MOV DPSEL, # 06H selecting DPTR6), without the need to use multiple instructions to save and restore pointer values like standard 8051.

2. Analysis of Performance Improvement Examples

To visually demonstrate the advantages of multiple data pointers, consider a typical table lookup transfer task: transfer a data table with a starting address of 1FFF H from the code memory (ROM) to a buffer with a starting address of 2FA0 H in the external data memory.

Using a single data pointer (such as standard C501): Each time a byte is moved, the source pointer and destination pointer need to be saved separately to the "shadow variables" in the internal RAM. For every byte moved, it takes approximately 28 machine cycles and consumes 4 bytes of RAM as shadow variables.

Use dual data pointers (such as C509): During initialization, store the source pointer in DPTR6 and the destination pointer in DPTR7. In each loop, only one MOV DPSEL instruction # 06H is needed to switch to the source pointer, read bytes, and then another MOV DPSEL instruction # 07H switches to the destination pointer for writing. It only takes about 12 machine cycles to move one byte, and there is no need for additional shadow variables.

According to the performance data provided in the manual, using multiple data pointers in the same table transfer task can reduce the execution time by half (from 28 cycles to approximately 12-14 cycles), while freeing up internal RAM space. When all 8 pointers are used simultaneously, a maximum of 24 bytes of RAM can be released for the application (16 bytes for storing pointer variables and 8 bytes for avoiding stack operations). This feature is particularly important for large-scale projects using high-level programming languages such as C51 and PLM51, as their code generation efficiency is relatively low and they tend to frequently use pointers.

3. Enhanced Hooks simulation concept

The C500 family has also introduced innovative Enhanced Hooks simulation technology. Traditionally, simulating on-chip ROM type MCUs requires expensive "bond out" chips (i.e. special versions that lead out the internal bus). The C500 integrates dedicated simulation logic inside each mass-produced chip. With the external EH-IC (Enhanced Hooks Interface Chip), the mass-produced chip itself can achieve full functional simulation, including single step execution, reading SFR after breakpoints, and simulation of all ROM/ROMless modes. This ensures that the simulated chip is identical to the mass-produced chip, eliminating behavioral differences introduced by using different wafer batches, while reducing the cost of in circuit simulators (ICE).


Interrupt system: precise guarantee of real-time response

Interrupt latency is a key indicator in real-time control systems. The interrupt handling mechanism of C500 has strict temporal determinism, allowing engineers to accurately calculate the worst-case response time.

1. Interrupt Vector and Hardware Response Process

Each interrupt source has a fixed interrupt vector address located at the low end of the code storage area. The vector address interval is 8 bytes (such as 0003H, 000BH, 0013H, etc.), and usually a jump instruction is placed here to point to the real service program. When an interrupt is accepted by the CPU, the hardware will automatically perform the following operations:

Complete the execution of the current instruction.

Push the current value of the program counter (PC) onto the stack (16 bits, low byte first).

Load the entry address (vector address) of the interrupt service program into the PC.

The program jumps to interrupt service program execution.

Important note: Not all interrupt hardware will automatically clear the interrupt request flag. Partial interrupt sources require users to clear the flag through software in the service program, otherwise the interrupt will be triggered repeatedly.

2. Blocking conditions for interrupt response

The generation of hardware LCALL (long call) will be blocked by any of the following three conditions:

  • ABB SCC-C 23070-0-10232110 gas cooler
  • Sick LGTN101-521 CPU Module
  • Okuma 1911-2836 PLC Circuit Board
  • Mitsubishi Melsec PM-120M PLC
  • Omron F210-C15 Vision Mate Controller System
  • Siemens 7ML5110-1GD07-4AF3 Ultrasonic Level Gauge
  • ABB Pluto S46 V2 Safety Relay
  • Omron Z3RN-5A Optical Serial Link
  • Omron R7D-APA3H 30W Servo Drive
  • Giddings Lewis 502-03638-41R3 PLC Processor
  • Omron SCY-P1 Sequencer Controller
  • Siemens C98043-A7002-L1-13 PCB Board
  • SACS TECNICA Palletizer PC PLC Control System
  • AutomationDirect T1F-14THM PLC Module T1F14THM
  • OMRON C200H-AD003 Analog Input Unit PLC Module
  • Applied Materials 0010-A0000 Electricity Box PLC 200mm
  • ABB RVT-6 Power Factor Controller RVT6
  • Allen-Bradley 2094-BC01-MP5-M Kinetix 6000 Axis Module
  • OMRON FQM1S-MC233 Motion Controller PLC Module
  • OMRON C200H-SNT31 PLC Special I-O Module
  • Yaskawa SGMPH-04AAA61D-OY Servo Motor 400W 200V
  • Yaskawa SGMGH-09DCA6F-OY AC Servo Motor 850W 400V
  • REFU ELEKTRONIK SR17002 PLC Logic Module Circuit Board
  • Siemens 6DP1231-7AA PLC Board Module Industrial Control
  • ABB SACE ISOMAX S3 N 160 Molded Case Circuit Breaker
  • OMRON C120-SC024-V1 SYSMAC C120 Compact PLC Unit
  • OMRON CJ1W-SCU41-V1 Serial Communication Unit PLC Module
  • OMRON 3G3MX2-A4110-ZV1 MX2 Variable Frequency Drive
  • Yaskawa SGDH-04AE-OY Sigma-II Servo Driver 400W 200V
  • OMRON CQM1-AD041 Analog Input Module PLC I/O Unit
  • Delta Omega XML2-0060-45-4/S-A Servo Drive
  • Omron CJ1W-AD041 Analog Input
  • Omron CJ1W-NC271 Position Control Unit
  • Omron CJ1G-CPU45H PLC CPU
  • Omron CJ1W-EIP21 EtherNet/IP Unit
  • Omron F210-C15 Vision Mate Controller
  • Omron CQM1H-ADB21 Analog I/O Board
  • Omron GRT1-PRT PROFIBUS DP-V1 Adapter
  • Omron CP1H-Y20DT-D PLC CPU
  • TE.CO TFX 4G 1.5 Grey Cable 470m
  • Yaskawa SGDH-04AE-OY Servo Driver 400W 200V
  • OMRON CJ1H-CPU66H V4.0 PLC CPU
  • OMRON R7M-A10030-BS1 Servo Motor 200W 100V
  • OMRON FQM1-MMA21 Motion Controller
  • Yaskawa SJDE-08APA Servo Amplifier
  • OMRON CQM1-AD041 Analog Input Unit
  • Siemens OCI55 Dialogue Module Landis
  • OMRON F350-C10E Image Processing Unit
  • OMRON NT10S-SF121 HMI Terminal
  • SIEMENS 3RB1262-0LB31 Overload Relay
  • OMRON YASKAWA SGDS-02A12A Servo Drive
  • TE.CO TFX 4G 1.5 Grey Cable ST 500m
  • FANUC A16B-3200-0362 PCB Control Board
  • OMRON CQM1-ARM21 Analog Output Unit
  • Allen-Bradley 1788-EN2DN Ethernet DeviceNet Gateway
  • Siemens 3VL9440-7EE40 3VL4740-2AA46-0AA0 Circuit Breaker
  • OMRON CJ1W-AD041-V1 Analog Input Unit
  • OMRON CQM1-AD041 CQM1-IPS02 Analog Input Power Supply
  • Texas Instruments System 505 PLC 525-110 525-1102
  • OMRON CQM1-AD042 Analog Input Unit
  • Yaskawa SGDH-04AE-OY Servo Driver 200V 400W
  • CTI 2512 75W Power Supply for CTI 2500
  • Omron F300-B5 Image Processing Unit
  • Mitsubishi 15050-PR01A PLC Board
  • Omron CQM1-TC101 Temperature Controller
  • SCE M68-2000 2 Axis Motion Controller HW 2.3/B
  • Omron 3Z4SP-C22 Visual Positioning Sensor
  • Omron 3G3SV-BB007-E 0.75kW VFD
  • CML 6622 IRD Entek AW10528 Vibration Monitor
  • Omron CP1L-EL20DR-D PLC CPU
  • TE.CO TFX 4G 1.5 Grey Cable 500m
  • Mitsubishi Electric 3BK23057 Circuit Board Module
  • OMRON FQM1-MMP21 Motion Control Module
  • OMRON CP1E-E40SDR-A Micro PLC CPU Unit
  • KEBA CU201 PLC Control Unit
  • OMRON F150-C10E-2 Vision Sensor Controller
  • YASKAWA SGDH-04AE-OY Sigma-II Servo Driver
  • OMRON CS1H-CPU65-V1 PLC Central Processing Unit
  • OMRON NB7W-TX01B Interactive Display HMI
  • OMRON C500-TU002E Programmable Logic Controller Timer Unit
  • OMRON C200HW-PRT21 PROFIBUS DP Slave Unit
  • ExcelTech MX-5-S-I-6-4 Static Transfer Switch
  • Allen-Bradley 100-B300ND3 Contactor 304A 600V
  • Pasaban MTC-3052 Fast I/O PLC Card
  • OMRON CQM1-TC101 Temperature Control Unit
  • OMRON 3G3SV-BB007-E VFD 0.75kW 220V
  • OMRON CQM1H-MAB42 PLC Module
  • OMRON R88M-K75030T-S2 Servo Motor
  • Yaskawa SGMAH-03DAAA61 Servo Motor 200V 300W
  • OMRON F300-P Power Supply Unit
  • Land System 4 M1 Thermometer 65071800C-L35-A50
  • Yamatake MAH10-ME0100 ME-NET Module
  • Siemens Simatic 505 16 Slot PLC Rack
  • Yaskawa SGDH-02AE-OY Servo Driver 200W
  • SCE M68-2000 2-Axis Motion Controller
  • Zenith Controls K-1201 Transfer Switch Controller
  • Yaskawa SGDH-02AE-OY 200W Servo Driver
  • Yaskawa SGMAH-02AAA61D-0Y 200W Servo Motor
  • Schneider TSX P573634M Modicon Premium CPU
  • Siemens 6FX5002-5DN31-1DA0 Power Cable
  • Omron CJ1G-CPU43H CPU Unit 30K Steps
  • OMRON C28P-EDR-D PLC Unit
  • SIEMENS S7-300 PLC System
  • Schneider TP400-PLC-1411 Board
  • Siemens 6FC5203-0AF00-0AA3 Panel
  • ALLEN BRADLEY 1754-L28BBB GuardPLC
  • Omron E6C3-AG5B-C Encoder
  • SCE M68-2000/5 CNC Controller
  • SCHNEIDER TM2ALM3LT Module
  • OMRON C200H-OV001 Voice Module
  • OMRON R88M-H30030 Servo Motor
  • Bosch RD500 Indramat Servo Drive RD51.2-4B
  • Siemens 6SE7090-0XX84-0AH2 T300 Module
  • Omron GRT1-TS2P SmartSlice Thermocouple Input
  • Xaar XP55500016 XUSB Drive Electronics
  • Siemens 6SL3210-1SE21-8UA0 PM340 Power Module
  • Mitsubishi GT2708-VTBA Touch Display 8.4 Inch
  • Pasaban Fast I/O MTC-3052 PLC Card
  • ABB ACS355-01U-02A4-2 VFD 0.37kW
  • Yamatake MAH20-PC2100 Processor Module
  • Allen Bradley 1774-P1 PLC Power Supply
  • Yaskawa SGDH-04AE-OY 400W Servo Driver
  • Omron CPH-X40DT1-D PLC CPU Unit
  • Pilz PNOZ mm0.2p Safety PLC Mini 772002
  • Siemens 6SL3555-OPR01-0AA0 Sinamics G110M Panel
  • Sanyo PLC-XTC50L LCD Projector
  • SCE M68-2000 2-Axis Motion Controller
  • Omron CS1W-CT021 High-Speed Counter Unit