0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
MPC82G516A

MPC82G516A

  • 厂商:

    MEGAWIN(笙泉)

  • 封装:

  • 描述:

    MPC82G516A - 8-bit microcontroller - Megawin Technology Co., Ltd

  • 数据手册
  • 价格&库存
MPC82G516A 数据手册
MPC82G516A 8-bit microcontroller Contents List of Figures....................................................................................................... 5 List of Tables........................................................................................................ 7 1 Description ....................................................................................................... 8 2 Features ........................................................................................................... 9 3 Block Diagram................................................................................................ 10 4 Pin Configuration............................................................................................ 11 4.1 Pin Assignment ........................................................................................................................ 11 4.2 Pin Description ......................................................................................................................... 14 4.3 Alternate Function Redirection................................................................................................. 17 5 Memory Organization..................................................................................... 18 5.1 Program Memory ..................................................................................................................... 18 5.2 Data Memory............................................................................................................................ 19 5.3 Declaration Identifiers in a C51-Compiler................................................................................. 23 6 Special Function Registers (SFRs) ................................................................ 24 6.1 SFR Memory Map .................................................................................................................... 24 6.2 SFR Introduction ...................................................................................................................... 25 6.2.1 The Standard 80C51 SFRs.............................................................................................................25 6.2.2 The New Added SFRs ....................................................................................................................27 7 On-Chip eXpanded RAM (XRAM).................................................................. 30 7.1 Using the XRAM in Software.................................................................................................... 30 8 External Data Memory Accessing .................................................................. 31 8.1 ALE-Pin Configuration.............................................................................................................. 31 8.2 Access Timing Stretching for Low-speed Memory ................................................................... 32 9 Dual Data Pointer Register (DPTR) ............................................................... 35 10 I/O Port Structure and Operation ................................................................. 36 10.1 Port Configurations ................................................................................................................ 36 10.1.1 10.1.2 10.1.3 10.1.4 Quasi-Bidirectional I/O ..................................................................................................................37 Open-Drain Output........................................................................................................................38 Input-Only (High Impedance Input) ...............................................................................................38 Push-Pull Output ...........................................................................................................................38 10.2 I/O Pins Used with ADC Function .......................................................................................... 39 10.3 Additional Note for I/O Port .................................................................................................... 39 11 Timers/Counters........................................................................................... 40 11.1 Timer 0 and Timer 1 ............................................................................................................... 40 11.1.1 11.1.2 11.1.3 11.1.4 11.1.5 Mode 0: 13-Bit Timer/Counter.......................................................................................................41 Mode 1: 16-Bit Timer/Counter.......................................................................................................42 Mode 2: 8-Bit Auto-Reload............................................................................................................42 Mode 3: Two 8-Bit Timer/Counters ...............................................................................................43 Programmable Clock-Out from Timer 0 ........................................................................................44 11.2 Timer 2 ................................................................................................................................... 45 11.2.1 Capture Mode................................................................................................................................46 11.2.2 Auto-Reload Mode (Up or Down Counter)....................................................................................46 11.2.3 Baud Rate Generator Mode ..........................................................................................................47 This document contains information on a new product under development by Megawin. Megawin reserves the right to change or discontinue this product without notice. © Megawin Technology Co., Ltd. 2008 All rights reserved. 2008/12 version A4 MEGAWIN 11.2.4 Programmable Clock-Out from Timer 2 ........................................................................................50 12 Serial Port .................................................................................................... 51 12.1 Standard UART Operation ..................................................................................................... 51 12.1.1 12.1.2 12.1.3 12.1.4 12.1.5 12.1.6 12.1.7 Multiprocessor Communications ...................................................................................................51 Serial Port Related Registers........................................................................................................51 Baud Rates....................................................................................................................................52 Using Timer 1 to Generate Baud Rates........................................................................................53 More About Mode 0.......................................................................................................................55 More About Mode 1.......................................................................................................................55 More About Modes 2 and 3...........................................................................................................56 12.2 Enhanced UART Functions.................................................................................................... 61 12.2.1 Framing Error Detection................................................................................................................61 12.2.2 Automatic Address Recognition ....................................................................................................61 13 Secondary UART (UART2) .......................................................................... 63 13.1 UART2 Related Registers ...................................................................................................... 63 13.2 UART2 Baud Rates................................................................................................................ 64 13.2.1 Mode 0 ..........................................................................................................................................64 13.2.2 Mode 1 and Mode 3 ......................................................................................................................64 13.2.3 Mode 2 ..........................................................................................................................................64 13.3 UART2 Baud Rate Timer Used by the First UART ................................................................ 65 13.4 Programmable Clock-Out from UART2 Baud Rate Timer...................................................... 66 14 Programmable Counter Array (PCA) ........................................................... 67 14.1 14.2 14.3 14.4 PCA Overview ........................................................................................................................ 67 PCA Timer/Counter................................................................................................................ 67 Compare/Capture Modules .................................................................................................... 69 Operation Modes of the PCA ................................................................................................. 70 Capture Mode...............................................................................................................................70 16-bit Software Timer Mode..........................................................................................................71 High Speed Output Mode..............................................................................................................71 PWM Mode....................................................................................................................................72 14.4.1 14.4.2 14.4.3 14.4.4 15 Serial Peripheral Interface (SPI) .................................................................. 73 15.1 Typical SPI Configurations ..................................................................................................... 75 15.1.1 Single Master & Single Slave........................................................................................................75 15.1.2 Dual Device, where either can be a Master or a Slave.................................................................75 15.1.3 Single Master & Multiple Slaves....................................................................................................76 15.2 15.3 15.4 15.5 15.6 15.7 15.8 16.1 16.2 16.3 16.4 Configuring the SPI ................................................................................................................ 77 Additional Considerations for a Slave .................................................................................... 77 Additional Considerations for a Master .................................................................................. 77 Mode Change on /SS-pin ....................................................................................................... 78 Write Collision ........................................................................................................................ 78 SPI Clock Rate Select............................................................................................................ 78 Data Mode.............................................................................................................................. 79 ADC Control Registers ........................................................................................................... 81 ADC Operation....................................................................................................................... 82 Sample Code for ADC............................................................................................................ 83 Notes on ADC ........................................................................................................................ 84 A/D Conversion Time ....................................................................................................................84 I/O Pin Used with ADC Function ...................................................................................................84 Idle and Power-Down Mode..........................................................................................................84 Requirements on VDD Power Supply...........................................................................................84 16 A/D Converter .............................................................................................. 81 16.4.1 16.4.2 16.4.3 16.4.4 17 Keypad Interrupt........................................................................................... 85 18 Watchdog Timer........................................................................................... 86 18.1 WDT Control Register ............................................................................................................ 86 18.2 WDT Operation ...................................................................................................................... 87 18.3 Sample Code for WDT ........................................................................................................... 87 MEGAWIN MPC82G516A Data Sheet 2 18.4 WDT during Power-Down and Idle......................................................................................... 88 18.5 WDT Initialized by Hardware Option ...................................................................................... 88 19 Interrupt System........................................................................................... 89 19.1 19.2 19.3 19.4 19.5 19.6 19.7 Interrupt Sources.................................................................................................................... 89 SFRs Associated with Interrupts ............................................................................................ 91 Interrupt Enable...................................................................................................................... 93 Interrupt Priority...................................................................................................................... 93 How Interrupts are Handled ................................................................................................... 93 External Interrupts.................................................................................................................. 94 Single-Step Operation............................................................................................................ 94 20 ISP, IAP and ICP.......................................................................................... 95 20.1 Embedded Flash .................................................................................................................... 96 20.1.1 Flash Features ..............................................................................................................................96 20.1.2 Flash Configuration .......................................................................................................................96 20.2 ISP Operation......................................................................................................................... 97 20.2.1 20.2.2 20.2.3 20.2.4 20.2.5 SFRs for ISP .................................................................................................................................97 Introduction to the ISP Modes.......................................................................................................99 How to Implement In-System Programming ...............................................................................102 Notes for ISP ...............................................................................................................................104 ISP Tools Provided by Megawin .................................................................................................105 20.3 IAP Operation....................................................................................................................... 107 20.3.1 Update the Data in the IAP-memory ...........................................................................................107 20.3.2 Demo Code for IAP .....................................................................................................................108 20.3.3 Notes for IAP ...............................................................................................................................109 20.4 About ICP............................................................................................................................. 110 20.4.1 The “Megawin 8051 ICP Programmer” .......................................................................................110 21 Power Saving Modes ................................................................................. 111 21.1 Idle Mode ............................................................................................................................. 111 21.2 Power-Down Mode............................................................................................................... 112 21.2.1 Wake-up from Power-Down Mode ..............................................................................................112 21.3 Slow-Down Operation .......................................................................................................... 113 22 System Clock ............................................................................................. 114 22.1 Built-in Oscillator .................................................................................................................. 114 23 Power Monitoring Function ........................................................................ 115 23.1 Power-on Detection.............................................................................................................. 115 23.2 Brownout Detection .............................................................................................................. 116 24 Reset Sources............................................................................................ 117 24.1 24.2 24.3 24.4 24.5 Power-On Reset................................................................................................................... 117 Hardware Reset from RST-Pin............................................................................................. 117 Watchdog Timer Reset ........................................................................................................ 117 Software Reset..................................................................................................................... 118 Brownout Reset from Power Monitor ................................................................................... 118 25 MCU’s Hardware Option ............................................................................ 119 26 Instruction Set ............................................................................................ 121 26.1 26.2 26.3 26.4 26.5 Arithmetic Operations........................................................................................................... 123 Logic Operations .................................................................................................................. 124 Data Transfer ....................................................................................................................... 125 Boolean Variable Manipulation ............................................................................................ 126 Program and Machine Control ............................................................................................. 127 27 Application Notes ....................................................................................... 128 27.1 Power Supply for 3.3V, 5V and Wide-Range Systems ........................................................ 128 27.1.1 Power Supply for a 3.3V System ................................................................................................128 27.1.2 Power Supply for a 5V or Wide-Range System ..........................................................................129 27.2 Reset Circuit......................................................................................................................... 129 27.3 XTAL Oscillating Circuit ....................................................................................................... 130 3 MPC82G516A Data Sheet MEGAWIN 28 On-Chip Debug Function ........................................................................... 131 Features ........................................................................................................................................ 131 29 Absolute Maximum Ratings ....................................................................... 132 30 DC Characteristics ..................................................................................... 133 [Condition 1] 3.3V System (V30 tied to VDD)............................................................................... 133 [Condition 2] 5V or Wide-Range System (V30 not tied to VDD) .................................................. 135 31 Ordering Information .................................................................................. 137 32 Package Outline......................................................................................... 138 40-Pin PDIP Package ................................................................................................................... 138 44-Pin PLCC Package .................................................................................................................. 139 44-Pin PQFP Package .................................................................................................................. 140 48-Pin LQFP Package .................................................................................................................. 141 28-Pin SSOP Package.................................................................................................................. 142 33 Disclaimers................................................................................................. 143 Life Support................................................................................................................................... 143 Right to Make Changes................................................................................................................. 143 Revision History ............................................................................................... 144 MEGAWIN MPC82G516A Data Sheet 4 List of Figures Figure 3-1. Block Diagram ..................................................................................................................................10 Figure 4-1. Pin Assignment: 40-Pin PDIP...........................................................................................................11 Figure 4-2. Pin Assignment: 28-Pin SSOP .........................................................................................................11 Figure 4-3. Pin Assignment: 44-Pin PLCC..........................................................................................................12 Figure 4-4. Pin Assignment: 44-Pin PQFP .........................................................................................................12 Figure 4-5. Pin Assignment: 48-Pin LQFP..........................................................................................................13 Figure 5-1. Program Memory..............................................................................................................................18 Figure 5-2. Data Memory ....................................................................................................................................20 Figure 5-3. Lower 128 Bytes of Internal RAM.....................................................................................................20 Figure 5-4. SFR Space .......................................................................................................................................21 Figure 5-5. External RAM Accessing by an 8-Bit Address (using ‘MOVX @ Ri’ and Page Bits) .......................22 Figure 5-6. External RAM Accessing by a 16-Bit Address (using ‘MOVX @ DPTR’) ........................................22 Figure 8-1. “MOVX @DPTR,A” without Stretch.................................................................................................33 Figure 8-2. “MOVX @DPTR,A” with Stretch......................................................................................................33 Figure 8-3. “MOVX A,@DPTR” without Stretch.................................................................................................34 Figure 8-4. “MOVX A,@DPTR” with Stretch ......................................................................................................34 Figure 9-1. Use of Dual DPTR ............................................................................................................................35 Figure 10-1. Quasi-Bidirectional I/O....................................................................................................................37 Figure 10-2. Open-Drain Output .........................................................................................................................38 Figure 10-3. Input-Only .......................................................................................................................................38 Figure 10-4. Push-Pull Output ............................................................................................................................38 Figure 11-1. Timer 1 in Mode 0: 13-Bit Timer/Counter .......................................................................................41 Figure 11-2. Timer 1 in Mode 1: 16-Bit Timer/Counter .......................................................................................42 Figure 11-3. Timer 1 in Mode 2: 8-Bit Auto-Reload ............................................................................................42 Figure 11-4. Timer 0 in Mode 3: Two 8-Bit Timer/Counters ...............................................................................43 Figure 11-5. Programmable Clock-Out from Timer 0 .........................................................................................44 Figure 11-6. Timer 2 in Capture Mode................................................................................................................46 Figure 11-7. Timer 2 in Auto-Reload Mode (DCEN=0).......................................................................................47 Figure 11-8. Timer 2 in Auto-Reload Mode (DCEN=1).......................................................................................47 Figure 11-9. Timer 2 in Baud Rate Generator Mode ..........................................................................................48 Figure 11-10. Programmable Clock-Out from Timer 2 .......................................................................................50 Figure 12-1. Serial Port Mode 0..........................................................................................................................57 Figure 12-2. Serial Port Mode 1..........................................................................................................................58 Figure 12-3. Serial Port Mode 2..........................................................................................................................59 Figure 12-4. Serial Port Mode 3..........................................................................................................................60 Figure 12-5. UART Framing Error Detection ......................................................................................................61 Figure 12-6. UART Multiprocessor Communication, Auto Address Recognition ...............................................62 Figure 13-1. New Baud Rate Source for the 1st UART .......................................................................................65 Figure 13-2. Programmable Clock-Out from UART2 Baud Rate Timer .............................................................66 Figure 14-1. PCA Block Diagram........................................................................................................................67 Figure 14-2. PCA Timer/Counter ........................................................................................................................68 Figure 14-3. PCA Interrupt System.....................................................................................................................69 Figure 14-4. PCA Capture Mode ........................................................................................................................70 Figure 14-5. PCA Software Timer Mode.............................................................................................................71 Figure 14-6. PCA High Speed Output Mode.......................................................................................................71 Figure 14-7. PCA PWM Mode.............................................................................................................................72 Figure 15-1. SPI Block Diagram .........................................................................................................................73 Figure 15-2. SPI single master single slave configuration..................................................................................75 Figure 15-3. SPI dual device configuration, where either can be a master or a slave .......................................75 Figure 15-4. SPI single master multiple slaves configuration .............................................................................76 Figure 15-5. SPI Slave Transfer Format with CPHA=0 ......................................................................................79 Figure 15-6. Slave Transfer Format with CPHA=1 .............................................................................................79 Figure 15-7. SPI Master Transfer Format with CPHA=0 ....................................................................................80 Figure 15-8. SPI Master Transfer Format with CPHA=1 ....................................................................................80 Figure 16-1. ADC Block Diagram........................................................................................................................81 Figure 18-1. WDT Block Diagram .......................................................................................................................86 Figure 19-1. Interrupt System .............................................................................................................................90 Figure 20-1. Flash Configuration ........................................................................................................................96 Figure 20-2. Flow Chart for “Flash Page Erase” .................................................................................................99 Figure 20-3. Flow Chart for “Flash Program” ....................................................................................................100 5 MPC82G516A Data Sheet MEGAWIN Figure 20-4. Flow Chart for “Flash Read” .........................................................................................................101 Figure 20-5. Directly boot from ISP-memory (HWBS or HWBS2 is enabled) ..................................................102 Figure 20-6. Re-boot from ISP-memory through AP-memory ..........................................................................103 Figure 20-7. Picture of the “8051 ISP Programmer” .........................................................................................105 Figure 20-8. System Diagram for the ISP Function ..........................................................................................105 Figure 20-9. System Diagram for ISP via COM Port ........................................................................................106 Figure 20-10. Usage of IAP-memory when the page buffer is less than 512 bytes .........................................107 Figure 20-11. Picture of the “8051 ICP Programmer”.......................................................................................110 Figure 20-12. System Diagram for the ICP Function........................................................................................110 Figure 22-1. Block Diagram of System Clock ...................................................................................................114 Figure 23-1. Power Monitor Block Diagram ......................................................................................................115 Figure 24-1. Block Diagram of Reset................................................................................................................117 Figure 27-1. Power Scheme .............................................................................................................................128 Figure 27-2. Power Supplied to a 3.3V System ................................................................................................128 Figure 27-3. Power Supplied to a 5V or Wide-Range System..........................................................................129 Figure 27-4. Reset Circuit .................................................................................................................................129 Figure 27-5. XTAL Oscillating Circuit................................................................................................................130 Figure 28-1. Picture of the “8051 ICE Adapter” ................................................................................................131 Figure 28-2. System Diagram for the ICE Function..........................................................................................131 MEGAWIN MPC82G516A Data Sheet 6 List of Tables Table 4-1. Pin Description...................................................................................................................................14 Table 6-1. SFR Memory Map..............................................................................................................................24 Table 6-2. The Standard 80C51 SFRs ...............................................................................................................26 Table 6-3. The New Added SFRs .......................................................................................................................27 Table 7-1. Declaration of XRAM Memory Type ..................................................................................................30 Table 10-1. Number of I/O Pins Available...........................................................................................................36 Table 10-2. Port Configuration Settings..............................................................................................................36 Table 11-1. Timer 2 Operating Modes ................................................................................................................45 Table 11-2. Timer 2 Generated Commonly Used Baud Rates @ Fosc=11.0592MHz.......................................49 Table 11-3. Timer 2 Generated Commonly Used Baud Rates @ Fosc=22.1184MHz.......................................49 Table 12-1. Timer 1 Generated Commonly Used Baud Rates @ Fosc=11.0592MHz.......................................53 Table 12-2. Timer 1 Generated Commonly Used Baud Rates @ Fosc=22.1184MHz.......................................54 Table 14-1. PCA Module Modes.........................................................................................................................70 Table 15-1. SPI Master and Slave Selection ......................................................................................................77 Table 15-2. SPI Serial Clock Rates ....................................................................................................................78 Table 18-1. WDT Overflow Period ......................................................................................................................87 Table 19-1. Interrupt Sources .............................................................................................................................89 Table 19-2. Four Priority Level of External Interrupt 0........................................................................................93 Table 20-1. Comparison between the Various Programming Methods..............................................................95 Table 20-2. ISP Timing Setting ...........................................................................................................................97 Table 20-3. ISP Mode Select ..............................................................................................................................97 7 MPC82G516A Data Sheet MEGAWIN 1 Description The MPC82G516A is a single-chip microcontroller based on a high performance 1-T architecture 80C51 CPU that executes instructions in 1~7 clock cycles (about 6~7 times the rate of a standard 8051 device), and has an 8051 compatible instruction set. Therefore at the same performance as the standard 8051, the MPC82G516A can operate at a much lower speed and thereby greatly reduce the power consumption. The MPC82G516A has 64K bytes of embedded Flash memory for code and data. The Flash memory can be programmed either in parallel mode or in serial mode with the In-System Programming (ISP) and In-Circuit Programming (ICP) capability. And, it also provides the In-Application Programming (IAP) capability. ISP and ICP allow the user to download new code without removing the microcontroller from the actual end product; IAP means that the device can write non-volatile data in the Flash memory while the application program is running. There needs no external high voltage for programming due to its built-in charge-pumping circuitry. In addition to the standard features of an 8051 MCU (such as 256 bytes scratch-pad RAM, four 8-bit I/O ports, three timer/counters, full-duplex serial port and a multi-source 4-level interrupt controller), many system-level functions have been incorporated into the MPC82G516A. The functions are on-chip 1024 bytes expanded RAM (XRAM), an extra I/O port (P4), 10-bit ADC, PCA, SPI, secondary UART, keypad interrupt, one-time enabled Watchdog Timer, and so forth. These additional functions greatly reduce the discrete component, board space and system cost, and also make the MPC82G516A become a powerful microcontroller for a wide range of applications. The MPC82G516A has two power-saving modes and an 8-bit system clock prescaler to reduce the power consumption. In the Idle mode the CPU is frozen while the peripherals and the interrupt system are still operating. In the Power-Down mode the RAM and SFRs’ value are saved and all other functions are inoperative; most importantly, in the Power-down mode the device can be waked up by the external interrupts. And, the user can further reduce the power consumption by using the 8-bit system clock prescaler to slow down the operating speed. Additionally, the MPC82G516A is equipped with the Megawin proprietary On-Chip Debug (OCD) interface for InCircuit Emulator (ICE). The OCD interface provides on-chip and in-system non-intrusive debugging without any target resource occupied. Several operations necessary for an ICE are supported such as Reset, Run, Stop, Step, Run to Cursor and Breakpoint Setting. The user has no need to prepare any development board during firmware developing or the socket adapter used in the traditional ICE probe head. All the thing the user needs to do is to prepare a 4-pin connector for the dedicated OCD interface. This powerful feature make the developing very easy for any user. MEGAWIN MPC82G516A Data Sheet 8 2 Features General 8051 Functions - 8051 Compatible Instruction Set - 256 Bytes Internal Scratch-pad RAM - 64K External Data Memory Space - Four 8-Bit Bidirectional I/O Ports - Three 16-Bit Timer/Counters - Full-duplex UART - 14 Interrupt Sources with 4 Priority Levels - Power Saving Modes: Idle Mode & Power-Down Mode High Performance 1-T Architecture 80C51 CPU On-chip 64K bytes Flash Program Memory On-chip 1024 bytes eXpanded RAM (XRAM) Additional Bit-addressable I/O Port, P4 Configurable I/O Port Type - Quasi-bidirectional Output - Open-drain Output - Input-only - Push-pull Output Additional External Interrupts /INT2 & /INT3 Down-counting Capability in Timer2 Enhanced UART Functions - Framing Error Detection - Automatic Address Recognition Secondary UART with Dedicated Baud Rate Generator PCA (Programmable Counter Array) with 6 Modules - Capture Mode - 16-bit Software Timer Mode - High Speed Output Mode - PWM (Pulse Width Modulator) Mode SPI Interface (Master/Slave Mode) 10-Bit ADC with 8 Multiplexed Analog Inputs Keypad Interrupt with 8 Inputs Wake-up from Power-down Mode by an External Interrupt Three Programmable Clock Outputs One-time Enabled Watchdog Timer Dual DPTR Variable Access Timing of ‘MOVX’ Instruction for Slow External Data Memory Configurable System Clock for Reduction of Power Consumption Power Monitoring Functions: Brownout Detection & Power-on Flag ISP (In-System Programming) & ICP (In-Circuit Programming) to Update Program Memory IAP (In-Application Programming) Flash for Applications with Non-volatile Data OCD (On-Chip Debug) Interface for ICE Flash Endurance: 20,000 Erase/Write cycles Operating Frequency: Up to 24MHz Power Supply: 2.4V~3.6V (for 3.3V System), or 2.7V~5.5V (for 5V or Wide-Range System) Industrial Temperature Range: -40 to +85 °C Packages: PDIP40, PLCC44, PQFP44, LQFP48 and SSOP28 9 MPC82G516A Data Sheet MEGAWIN 3 Block Diagram Figure 3-1 shows the functional block diagram of the MPC82G516A. It gives the outline of the device. The user can easily find all the device’s peripheral functions in the diagram. Figure 3-1. Block Diagram MPC82G516A VDD VSS V30 RST LDO Regulator and Power Monitoring High-Performance 1-T 80C51 CPU Internal Bus On-Chip Debug Interface (for ICE & ICP) OCD_SDA OCD_SCL 64K Bytes Code Flash 256 Bytes Internal RAM 1024 Bytes eXpanded RAM (XRAM) P0[7:0] Timer0 Timer1 Timer2 Serial Port Secondary UART PCA SPI ADC Keypad Interrupt Interrupt Handler 8 6 T0 (P3.4) T1 (P3.5) T2 (P1.0) T2EX (P1.1) T0CKO (P3.4) T2CKO (P1.0) TXD (P3.1) RXD (P3.0) S2TXD (P1.3) S2RXD (P1.2) S2CKO (P3.5) CEX0~CEX5 (P1.2~P1.7) ECI (P1.1) MISO (P1.6) MOSI (P1.5) SPICLK (P1.7) /SS (P1.4) AIN0~AIN7 (P1.0~P1.7) Configurable I/O Port, P0 Configurable I/O Port, P1 Configurable I/O Port, P2 Configurable I/O Port, P3 Configurable I/O Port, P4 System Clock Divider System and CPU Clock P1[7:0] P2[7:0] P3[7:0] 8 KBI0~KBI7 (P2.0~P2.7) /INT0 (P3.2) /INT1 (P3.3) /INT2 (P4.3) /INT3 (P4.2) P4[7:0] Watchdog Timer 8 Crystal or Resonator XTAL1 XTAL2 Oscillating Circuitry ~6MHz External Data Memory Accessing 8 AD[7:0] (P0) A[15:8] (P2) ALE (P3.5 or P4.1) /WR (P3.6) /RD (P3.7) Built-in RC Oscillator MEGAWIN MPC82G516A Data Sheet 10 4 Pin Configuration 4.1 Pin Assignment Figure 4-1. Pin Assignment: 40-Pin PDIP Figure 4-2. Pin Assignment: 28-Pin SSOP 11 MPC82G516A Data Sheet MEGAWIN Figure 4-3. Pin Assignment: 44-Pin PLCC Figure 4-4. Pin Assignment: 44-Pin PQFP MEGAWIN MPC82G516A Data Sheet 12 Figure 4-5. Pin Assignment: 48-Pin LQFP 13 MPC82G516A Data Sheet MEGAWIN 4.2 Pin Description Table 4-1. Pin Description PIN NUMBER MNEMONIC P0.0 (Alt. Fun.) AD0 P0.1 (Alt. Fun.) AD1 P0.2 (Alt. Fun.) AD2 P0.3 (Alt. Fun.) AD3 P0.4 (Alt. Fun.) AD4 P0.5 (Alt. Fun.) AD5 P0.6 (Alt. Fun.) AD6 P0.7 (Alt. Fun.) AD7 P1.0 (Alt. Fun.) T2 (Alt. Fun.) AIN0 (Alt. Fun.) T2CKO P1.1 (Alt. Fun.) T2EX (Alt. Fun.) AIN1 (Alt. Fun.) ECI P1.2 (Alt. Fun.) AIN2 (Alt. Fun.) S2RXD (Alt. Fun.) CEX0 P1.3 (Alt. Fun.) AIN3 (Alt. Fun.) S2TXD (Alt. Fun.) CEX1 P1.4 (Alt. Fun.) AIN4 (Alt. Fun.) /SS (Alt. Fun.) CEX2 P1.5 (Alt. Fun.) AIN5 (Alt. Fun.) MOSI (Alt. Fun.) CEX3 P1.6 (Alt. Fun.) AIN6 (Alt. Fun.) MISO (Alt. Fun.) CEX4 P1.7 (Alt. Fun.) AIN7 (Alt. Fun.) SPICLK (Alt. Fun.) CEX5 40-Pin DIP 44-Pin PLCC 44-Pin PQFP 48-Pin LQFP 28-Pin SSOP I/O TYPE I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I I O I/O I I I I/O I I I/O I/O I O I/O I/O I I I/O I/O I I/O I/O I/O I I/O I/O I/O I I/O I/O DESCRIPTION * Port 0 bit-0. * AD0: multiplexed A0/D0 during external data memory access. * Port 0 bit-1. * AD1: multiplexed A1/D1 during external data memory access. * Port 0 bit-2. * AD2: multiplexed A2/D2 during external data memory access. * Port 0 bit-3. * AD3: multiplexed A3/D3 during external data memory access. * Port 0 bit-4. * AD4: multiplexed A4/D4 during external data memory access. * Port 0 bit-5. * AD5: multiplexed A5/D5 during external data memory access. * Port 0 bit-6. * AD6: multiplexed A6/D6 during external data memory access. * Port 0 bit-7. * AD7: multiplexed A7/D7 during external data memory access. * Port 1 bit-0. * T2: Timer/Counter 2 external input. * AIN0: ADC channel-0 analog input. * T2CKO: programmable clock-out from Timer 2. * Port 1 bit-1. * T2EX: Timer/Counter 2 Reload/Capture/Direction control. * AIN1: ADC channel-1 analog input. * ECI: PCA external clock input. * Port 1 bit-2. * AIN2: ADC channel-2 analog input. * S2RXD: 2nd UART serial input port. * CEX0: PCA module-0 external I/O. * Port 1 bit-3. * AIN3: ADC channel-3 analog input. * S2TXD: 2nd UART serial output port. * CEX1: PCA module-1 external I/O. * Port 1 bit-4. * AIN4: ADC channel-4 analog input. * /SS: SPI Slave select. * CEX2: PCA module-2 external I/O. * Port 1 bit-5. * AIN5: ADC channel-5 analog input. * MOSI: SPI master out & slave in. * CEX3: PCA module-3 external I/O. * Port 1 bit-6. * AIN6: ADC channel-6 analog input. * MISO: SPI master in & slave out. * CEX4: PCA module-4 external I/O. * Port 1 bit-7. * AIN7: ADC channel-7 analog input. * SPICLK: SPI clock, output for master and input for slave. * CEX5: PCA module-5 external I/O. 39 38 37 36 35 34 33 32 1 43 42 41 40 39 38 37 36 2 37 36 35 34 33 32 31 30 40 40 39 38 37 36 35 34 33 43 27 26 25 24 23 2 2 3 41 44 - 3 4 42 45 3 4 5 43 46 4 5 6 44 47 - 6 7 1 2 5 7 8 2 3 - 8 9 3 4 - (Continued) MEGAWIN MPC82G516A Data Sheet 14 PIN NUMBER MNEMONIC P2.0 (Alt. Fun.) A8 (Alt. Fun.) KBI0 P2.1 (Alt. Fun.) A9 (Alt. Fun.) KBI1 P2.2 (Alt. Fun.) A10 (Alt. Fun.) KBI2 P2.3 (Alt. Fun.) A11 (Alt. Fun.) KBI3 P2.4 (Alt. Fun.) A12 (Alt. Fun.) KBI4 P2.5 (Alt. Fun.) A13 (Alt. Fun.) KBI5 P2.6 (Alt. Fun.) A14 (Alt. Fun.) KBI6 P2.7 (Alt. Fun.) A15 (Alt. Fun.) KBI7 P3.0 (Alt. Fun.) RXD P3.1 (Alt. Fun.) TXD P3.2 (Alt. Fun.) /INT0 P3.3 (Alt. Fun.) /INT1 P3.4 (Alt. Fun.) T0 (Alt. Fun.) T0CKO P3.5 (Alt. Fun.) T1 (Alt. Fun.) ALE (Alt. Fun.) S2CKO 40-Pin DIP 44-Pin PLCC 44-Pin PQFP 48-Pin LQFP 28-Pin SSOP I/O TYPE I/O O I I/O O I I/O O I I/O O I I/O O I I/O O I I/O O I I/O O I I/O I/O I/O O I/O I I/O I I/O I O I/O I O O DESCRIPTION * Port 2 bit-0. * A8: A8 output during external data memory access. * KBI0: keypad input 0. * Port 2 bit-1. * A9: A9 output during external data memory access. * KBI1: keypad input 1. * Port 2 bit-2. * A10: A10 output during external data memory access. * KBI2: keypad input 2. * Port 2 bit-3. * A11: A11 output during external data memory access. * KBI3: keypad input 3. * Port 2 bit-4. * A12: A12 output during external data memory access. * KBI4: keypad input 4. * Port 2 bit-5. * A13: A13 output during external data memory access. * KBI5: keypad input 5. * Port 2 bit-6. * A14: A14 output during external data memory access. * KBI6: keypad input 6. * Port 2 bit-7. * A15: A15 output during external data memory access. * KBI7: keypad input 7. * Port 3 bit-0. * RXD: serial input port, data i/o in mode 0. * Port 3 bit-1. * TXD: serial output port. * Port 3 bit-2. * /INT0: external interrupt 0 input. * Port 3 bit-3. * /INT1: external interrupt 1 input. * Port 3 bit-4. * T0: Timer/Counter 0 external input. * T0CKO: programmable clock-out from Timer 0. * Port 3 bit-5. * T1: Timer/Counter 1 external input. * ALE: Address Latch Enable, output pulse for latching the low byte of the address during an access to external data memory. * S2CKO: programmable clock-out from Timer S2BRT. * Port 3 bit-6. * /WR: external data memory write strobe. * Port 3 bit-7. * /RD: external data memory read strobe. 21 24 18 19 15 22 25 19 20 16 23 26 20 21 - 24 27 21 22 17 25 28 22 23 18 26 29 23 26 19 27 30 24 27 - 28 31 25 28 - 10 11 12 13 14 11 13 14 15 16 5 7 8 9 10 6 8 9 10 11 7 8 9 10 - 15 17 11 12 11 P3.6 (Alt. Fun.) /WR P3.7 (Alt. Fun.) /RD 16 17 18 19 12 13 13 14 - I/O O I/O O 15 MPC82G516A Data Sheet MEGAWIN (Continued) PIN NUMBER MNEMONIC P4.0 P4.1 (Alt. Fun.) ALE 40-Pin DIP 44-Pin PLCC 44-Pin PQFP 48-Pin LQFP 28-Pin SSOP I/O TYPE I/O I/O O DESCRIPTION * Port 4 bit-0. * Port 4 bit-1. * ALE: Address Latch Enable, output pulse for latching the low byte of the address during an access to external data memory. * Port 4 bit-2. * /INT3: external interrupt 3 input. * Port 4 bit-3. * /INT2: external interrupt 2 input. * Port 4 bit-4. * Port 4 bit-5. * Port 4 bit-6. * Port 4 bit-7. On-Chip Debug Interface, serial data. On-Chip Debug Interface, serial clock. Crystal1: input to the inverting oscillator amplifier and input to the internal clock generator circuits. Crystal 2: output from the inverting oscillator amplifier. A high on this pin for 24 clock cycles while the oscillator is running, resets the device. Output of the internal LDO (Low Drop-Out voltage regulator): should be connected to - 23 34 17 28 18 31 - P4.2 (Alt. Fun.) /INT3 P4.3 (Alt. Fun.) /INT2 P4.4 P4.5 P4.6 P4.7 OCD_SDA OCD_SCL XTAL1 XTAL2 RST V30 30 29 19 18 9 31 1 12 33 32 21 20 10 35 39 6 27 26 15 14 4 29 42 7 24 25 48 1 30 29 16 15 5 32 1 21 20 13 12 6 22 I/O I I/O I I/O I/O I/O I/O I/O I I O I O ground through an external capacitor (4.7μF~100μF) in the application with VDD power higher than 3.6V; and tied to VDD pin in the application with VDD power lower than 3.6V. VDD VSS 40 20 44 22 38 16 41 17 28 14 I I Power supply, for normal, idle and powerdown operation. Ground, 0 V reference. Note: “(Alt. Fun.)” means the Alternate Function of this pin. MEGAWIN MPC82G516A Data Sheet 16 4.3 Alternate Function Redirection Many I/O pins, in addition to their normal I/O function, also serve the alternate function for internal peripherals. For the peripherals Keypad interrupt, PCA, SPI and UART2, Port 2 and Port 1 serve the alternate function in the default state. However, the user may select Port 4 to serve their alternate function by setting the corresponding control bits P4KB, P4PCA, P4SPI and P4S2 in AUXR1 register. It is especially useful when the package more than 40 pins is adopted. Note that only one of the four control bits can be set at any time. AUXR1 (Address=8EH, Auxiliary Register1, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P4KB P4PCA P4SPI P4S2 GF2 - - DPS P4KB: When set, the Keypad interface is directed to P4, as shown below. ‘KBI7’ function in P2.7 is moved to P4.7. ‘KBI6’ function in P2.6 is moved to P4.6. ‘KBI5’ function in P2.5 is moved to P4.5. ‘KBI4’ function in P2.4 is moved to P4.4. ‘KBI3’ function in P2.3 is moved to P4.3. ‘KBI2’ function in P2.2 is moved to P4.2. ‘KBI1’ function in P2.1 is moved to P4.1. ‘KBI0’ function in P2.0 is moved to P4.0. P4PCA: When set, the PCA interface is directed to P4, as shown below. ‘ECI’ function in P1.1 is moved to P4.1. ‘CEX0’ function in P1.2 is moved to P4.2. ‘CEX1’ function in P1.3 is moved to P4.3. ‘CEX2’ function in P1.4 is moved to P4.4. ‘CEX3’ function in P1.5 is moved to P4.5 ‘CEX4’ function in P1.6 is moved to P4.6. ‘CEX5’ function in P1.7 is moved to P4.7. P4SPI: When set, the SPI interface is directed to P4, as shown below. ‘/SS’ function in P1.4 is moved to P4.4. ‘MOSI’ function in P1.5 is moved to P4.5. ‘MISO’ function in P1.6 is moved to P4.6. ‘SPICLK’ function in P1.7 is moved to P4.7. P4S2: When set, the UART2 interface is directed to P4, as shown below. ‘S2RXD’ function in P1.2 is moved to P4.2. ‘S2TXD’ function in P1.3 is moved to P4.3. 17 MPC82G516A Data Sheet MEGAWIN 5 Memory Organization Like all 80C51 devices, the MPC82G516A has separate address spaces for program and data memory. The logical separation of program and data memory allows the data memory to be accessed by 8-bit addresses, which can be quickly stored and manipulated by the 8-bit CPU. Program memory (ROM) can only be read, not written to. There can be up to 64k bytes of program memory. In the MPC82G516A, all the program memory are on-chip Flash memory, and without the capability of accessing external program memory because of no External Access Enable (/EA) and Program Store Enable (/PSEN) signals designed. Data memory occupies a separate address space from program memory. In the MPC82G516A, there are 256 bytes of internal scratch-pad RAM. Up to 64K bytes of memory space for external data memory. The CPU generates the 16-bit addresses through the DPTR register and read and write strobe signals (/RD and /WR, respectively) as needed during external data memory accesses. For many applications which need a little more internal RAM, the MPC82G516A has incorporated 1024 bytes of external RAM to become on-chip expanded RAM (called XRAM). 5.1 Program Memory Program memory is the memory which stores the program codes for the CPU to execute, as shown in Figure 5-1. After reset, the CPU begins execution from location 0000H, where should be the starting of the user’s application code. To service the interrupts, the interrupt service locations (called interrupt vectors) should be located in the program memory. Each interrupt is assigned a fixed location in the program memory. The interrupt causes the CPU to jump to that location, where it commences execution of the service routine. External Interrupt 0, for example, is assigned to location 0003H. If External Interrupt 0 is going to be used, its service routine must begin at location 0003H. If the interrupt is not going to be used, its service location is available as general purpose program memory. The interrupt service locations are spaced at an interval of 8 bytes: 0003H for External Interrupt 0, 000BH for Timer 0, 0013H for External Interrupt 1, 001BH for Timer 1, etc. If an interrupt service routine is short enough (as is often the case in control applications), it can reside entirely within that 8-byte interval. Longer service routines can use a jump instruction to skip over subsequent interrupt locations, if other interrupts are in use. Note that, for the MPC82G516A, there is no capability of execution of external program. All the user’s program code are programmed in the on-chip Flash memory. So, the /EA and /PSEN signals are no more needed and thus omitted. The user should pay attention to it. Figure 5-1. Program Memory Program Memory FFFFH 001BH Interrupt Locations 0013H 000BH 0003H Reset 0000H 8 Bytes MEGAWIN MPC82G516A Data Sheet 18 5.2 Data Memory Figure 5-2 shows the internal and external data memory spaces available to the MPC82G516A user. Internal data memory can be divided into three blocks, which are generally referred to as the lower 128 bytes of RAM, the upper 128 bytes of RAM, and the 128 bytes of SFR space. Internal data memory addresses are always 8-bit wide, which implies an address space of only 256 bytes. Direct addresses higher than 7FH access the SFR space; and indirect addresses higher than 7FH access the upper 128 bytes of RAM. Thus the SFR space and the upper 128 bytes of RAM occupy the same block of addresses, 80H through FFH, although they are physically separate entities. The lower 128 bytes of RAM are present in all 80C51 devices as mapped in Figure 5-3. The lowest 32 bytes are grouped into 4 banks of 8 registers. Program instructions call out these registers as R0 through R7. Two bits in the Program Status Word (PSW) select which register bank is in use. This allows more efficient use of code space, since register instructions are shorter than instructions that use direct addressing. The next 16 bytes above the register banks form a block of bit-addressable memory space. The 80C51 instruction set includes a wide selection of single-bit instructions, and the 128 bits in this area can be directly addressed by these instructions. The bit addresses in this area are 00H through 7FH. All of the bytes in the Lower 128 can be accessed by either direct or indirect addressing while the Upper 128 can only be accessed by indirect addressing. Figure 5-4 gives a brief look at the Special Function Register (SFR) space. SFRs include the Port latches, timers, peripheral controls, etc. These registers can only be accessed by direct addressing. Sixteen addresses in SFR space are both byte- and bit-addressable. The bit-addressable SFRs are those whose address ends in 0H or 8H. To access the external data memory, the EXTRAM bit should be set to 1. Accesses to external data memory can use either a 16-bit address (using ‘MOVX @DPTR’) or an 8-bit address (using ‘MOVX @Ri’), as described below. Accessing by an 8-bit address 8-bit addresses are often used in conjunction with one or more other I/O lines to page the RAM. If an 8-bit address is being used, the contents of the Port 2 SFR remain at the Port 2 pins throughout the external memory cycle. This will facilitate paging access. Figure 5-5 shows an example of a hardware configuration for accessing up to 2K bytes of external RAM. Port 0 serves as a multiplexed address/data bus to the RAM, and 3 lines of Port 2 are being used to page the RAM. The CPU generates /RD and /WR (alternate functions of P3.7 and P3.6) to strobe the memory. Of course, the user may use any other I/O lines instead of P2 to page the RAM. Accessing by a 16-bit address 16-bit addresses are often used to access up to 64k bytes of external data memory. Figure 5-6 shows the hardware configuration for accessing 64K bytes of external RAM. Whenever a 16-bit address is used, in addition to the functioning of P0, /RD and /WR, the high byte of the address comes out on Port 2 and it is held during the read or write cycle. In any case, the low byte of the address is time-multiplexed with the data byte on Port 0. ALE (Address Latch Enable) should be used to capture the address byte into an external latch. The address byte is valid at the negative transition of ALE. Then, in a write cycle, the data byte to be written appears on Port 0 just before /WR is activated, and remains there until after /WR is deactivated. In a read cycle, the incoming byte is accepted at Port 0 just before the read strobe is deactivated. During any access to external memory, the CPU writes 0FFH to the Port 0 latch (the Special Function Register), thus obliterating whatever information the Port 0 SFR may have been holding. Note that in the MPC82G516A, there is no dedicated pin for ALE signal. The ALE becomes an alternate function of P3.5 or P4.1, which can be selected by control bits P35ALE and P41ALE in the AUXR register. To access the on-chip expanded RAM (XRAM), the EXTRAM bit should be cleared to 0. Refer to Figure 5-2, the 1024 bytes of XRAM (0000H to 03FFH) are indirectly accessed by move external instruction, MOVX. An access to XRAM will have not any outputting of address, address latch enable and read/write strobe. That means P0, P2, P3.5/P4.1(ALE), P3.6 (/WR) and P3.7 (/RD) will keep unchanged during access of XRAM. 19 MPC82G516A Data Sheet MEGAWIN Figure 5-2. Data Memory External Data Memory FFFFH Addressable by Indirect External Addressing Using MOVX with EXTRAM=1 On-Chip eXpanded RAM (XRAM) Internal RAM 256 Bytes FFH Upper 128 Bytes 80H 7FH Lower 128 Bytes 00H 1024 Bytes SFRs Addressable by Direct Addressing (SFRs) FFH 03FFH Addressable by Indirect Addressing Only Addressable by Direct and Indirect Addressing 80H Addressable by Indirect External Addressing Using MOVX with EXTRAM=0 0000H 0000H Figure 5-3. Lower 128 Bytes of Internal RAM 7FH 30H 2FH Bit-addressable Space (Bit Addresses 00H~7FH) Bank 3 Bank 2 Bank 1 Bank 0 Four Banks of 8 Registers R0~R7 (Bank Select Bits in PSW) 20H 1FH 18H 17H 10H 0FH Reset Value of Stack Pointer 08H 07H 00H MEGAWIN MPC82G516A Data Sheet 20 Figure 5-4. SFR Space FFH E8H E0H D0H . . . Port 4 ACC 1. I/O ports are register-mapped 2. Addresses that end in 0H or 8H are also bit-addressable. - Ports - Accumulator - PSW (Etc.) . . . . . . PSW B0H Port 3 . . . A0H Port 2 . . . 90H Port 1 . . . 80H Port 0 21 MPC82G516A Data Sheet MEGAWIN Figure 5-5. External RAM Accessing by an 8-Bit Address (using ‘MOVX @ Ri’ and Page Bits) Note that in this case, the other bits of P2 are available as general I/O pins. Figure 5-6. External RAM Accessing by a 16-Bit Address (using ‘MOVX @ DPTR’) MEGAWIN MPC82G516A Data Sheet 22 5.3 Declaration Identifiers in a C51-Compiler The declaration identifiers in a C51-compiler for the various MPC82G516A memory spaces are as follows: data 128 bytes of internal data memory space (00h~7Fh); accessed via direct or indirect addressing, using instructions other than MOVX and MOVC. All or part of the Stack may be in this area. idata Indirect data; 256 bytes of internal data memory space (00h~FFh) accessed via indirect addressing using instructions other than MOVX and MOVC. All or part of the Stack may be in this area. This area includes the data area and the 128 bytes immediately above it. sfr Special Function Registers; CPU registers and peripheral control/status registers, accessible only via direct addressing. xdata External data or on-chip eXpanded RAM (XRAM); duplicates the classic 80C51 64K bytes memory space addressed via the “MOVX @DPTR” instruction. The MPC82G516A has 1024 bytes of on-chip xdata memory. pdata Paged (256 bytes) external data or on-chip eXpanded RAM; duplicates the classic 80C51 64KB memory space addressed via the “MOVX @Ri” instruction. The MPC82G516A has 1024 bytes of on-chip xdata memory. code 64K bytes of program memory space; accessed as part of program execution and via the “MOVC @A+DTPR” instruction. The MPC82G516A has 64K bytes of on-chip code memory. 23 MPC82G516A Data Sheet MEGAWIN 6 Special Function Registers (SFRs) 6.1 SFR Memory Map A map of the internal memory area for the Special Function Register space is called “SFR Memory Map”, as shown in Table 6-1. In the SFR Memory Map, not all of the addresses are occupied. Unoccupied addresses are not implemented or designed for internal testing purpose; read accesses to these addresses will in general return random data, and write accesses may cause unpredictable hardware action. The user software had better not access the unoccupied addresses. Table 6-1. SFR Memory Map 8 BYTES F8H F0H E8H E0H D8H D0H C8H C0H B8H B0H A8H A0H 98H 90H 88H 80H B P4 ACC CCON PSW T2CON XICON IP P3 IE P2 SCON P1 TCON P0 ↑ CH CL WDTCR CMOD T2MOD SADEN P3M0 SADDR CCAP0H PCAPWM0 CCAP0L IFD CCAPM0 RCAP2L S2BRT P3M1 S2CON AUXR1 CCAP1H PCAPWM1 CCAP1L IFADRH CCAPM1 RCAP2H P4M0 P0M0 TL1 DPH CCAP2H PCAPWM2 CCAP2L IFADRL CCAPM2 TL2 P4M1 P0M1 TH0 SPSTAT CCAP3H PCAPWM3 CCAP3L IFMT CCAPM3 KBPATN TH2 ADCTL - CCAP4H PCAPWM4 CCAP4L SCMD CCAPM4 KBCON ADCH ADCL CCAP5H PCAPWM5 CCAP5L ISPCR CCAPM5 KBMASK PCON2 IPH FFH F7H EFH E7H DFH D7H CFH C7H BFH B7H AFH A7H 9FH 97H 8FH 87H AUXIE P2M0 TH1 SPCTL AUXIP AUXR2 P2M1 AUXR SPDAT AUXIPH EVRCR STRETCH PCON SBUF P1M0 TMOD SP S2BUF P1M1 TL0 DPL Note that new added SFRs are marked by the blue bold. Bit-Addressable SFRs MEGAWIN MPC82G516A Data Sheet 24 6.2 SFR Introduction 6.2.1 The Standard 80C51 SFRs The standard 80C51 SFRs are shown in Table 6-2. Among them, the functions of the C51 core registers are outlined below. More information on the use of the other standard SFRs is included in the description of those peripherals. C51 Core Registers Accumulator: ACC is the Accumulator register. The mnemonics for Accumulator-Specific instructions, however, refer to the Accumulator simply as A. B Register: The B register is used during multiply and divide operations. For other instructions it can be treated as another scratch pad or general purpose register. Stack Pointer: The Stack Pointer register is 8 bits wide. It denotes the top of the Stack, which is the last used value. The user can place the Stack anywhere in the internal scratchpad RAM by setting the Stack Pointer to the desired location, although the lower bytes are normally used for working registers. On reset, the Stack Pointer is initialized to 07H. This causes the stack to begin at location 08H. Data Pointer: The Data Pointer (DPTR) consists of a high byte (DPH) and a low byte (DPL). Its intended function is to hold a 16-bit address to assign a memory address for the MOVX instructions. This address can point to a program/data memory location, either on- or off-chip, or a memory-mapped peripheral. It may be manipulated as a 16-bit register or as two independent 8-bit registers. Program Status Word: The PSW register contains program status information as detailed in the following. PSW (Address=D0H, Program Status Word, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 CY CY: AC F0 RS1 RS2 OV - P Carry flag. This bit is set when the last arithmetic operation resulted in a carry (addition) or a borrow (subtraction). It is cleared to logic 0 by all other arithmetic operations. Auxiliary Carry flag. (For BCD Operations) This bit is set when the last arithmetic operation resulted in a carry into (addition) or a borrow from (subtraction) the high order nibble. It is cleared to logic 0 by all other arithmetic operations. Flag 0. This is a bit-addressable, general purpose flag for use under software control. Register bank select bit 1. Register bank select bit 0. (RS1, RS0) Working Register Bank and Address (0, 0) Bank 0 (00H~07H) (0, 1) Bank 1 (08H~0FH) (1, 0) Bank 2 (10H~17H) (1, 1) Bank 3 (18H~1FH) AC: F0: RS1: RS0: OV: Overflow flag. This bit is set to 1 under the following circumstances: • An ADD, ADDC, or SUBB instruction causes a sign-change overflow. • An MUL instruction results in an overflow (result is greater than 255). • A DIV instruction causes a divide-by-zero condition. The OV bit is cleared to 0 by the ADD, ADDC, SUBB, MUL, and DIV instructions in all other cases. Parity flag. Set/cleared by hardware each instruction cycle to indicate an odd/even number of “one” bits in the Accumulator, i.e., even parity. P: (Note: PSW register is bit-addressable. All the released bits can be set and cleared by software in bit-level.) 25 MPC82G516A Data Sheet MEGAWIN Table 6-2. The Standard 80C51 SFRs SYMBOL DESCRIPTION ADDR E0H F0H D0H 81H 83H 82H 80H 90H A0H B0H B8H A8H 89H 88H C8H 8CH 8AH 8DH 8BH CDH CCH CBH CAH 98H 99H 87H 9FH SM0/FE 9EH SM1 9DH SM2 9CH REN 9BH TB8 9AH RB8 99H TI 98H RI 87H P0.7 97H P1.7 A7H P2.7 B7H P3.7 BFH AFH EA 86H P0.6 96H P1.6 A6H P2.6 B6H P3.6 BEH AEH 85H P0.5 95H P1.5 A5H P2.5 B5H P3.5 BDH PT2 ADH ET2 84H P0.4 94H P1.4 A4H P2.4 B4H P3.4 BCH PS ACH ES 83H P0.3 93H P1.3 A3H P2.3 B3H P3.3 BBH PT1 ABH ET1 82H P0.2 92H P1.2 A2H P2.2 B2H P3.2 BAH PX1 AAH EX1 81H P0.1 91H P1.1 A1H P2.1 B1H P3.1 B9H PT0 A9H ET0 80H P0.0 90H P1.0 A0H P2.0 B0H P3.0 B8H PX0 A8H EX0 BIT ADDRESS & SYMBOL ACC* B* PSW* SP DPH DPL P0* P1* P2* P3* IP* IE* TMOD TCON* Accumulator B Register Program Status Word Stack Pointer Data Pointer High Data Pointer Low Port 0 Port 1 Port 2 Port 3 Interrupt Priority Interrupt Enable Timer Mode Timer Control Bit-7 E7H ACC.7 F7H B.7 D7H CY Bit-6 E6H ACC.6 F6H B.6 D6H AC Bit-5 E5H ACC.5 F5H B.5 D5H F0 Bit-4 E4H ACC.4 F4H B.4 D4H RS1 Bit-3 E3H ACC.3 F3H B.3 D3H RS0 Bit-2 E2H ACC.2 F2H B.2 D2H OV Bit-1 E1H ACC.1 F1H B.1 D1H - Bit-0 E0H ACC.0 F0H B.0 D0H P RESET VALUE 00H 00H 00H 07H 00H 00H FFH FFH FFH FFH 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H xxH GATE 8FH TF1 CFH TF2 C/-T 8EH TR1 CEH EXF2 M1 8DH TF0 CDH RCLK M0 8CH TR0 CCH TCLK GATE 8BH IE1 CBH EXEN2 C/-T 8AH IT1 CAH TR2 M1 89H IE0 C9H C/-T2 M0 88H IT0 C8H CP/-RL2 T2CON* Timer 2 Control TH0 TL0 TH1 TL1 TH2 TL2 Timer 0, High-byte Timer 0, Low-byte Timer 1, High-byte Timer 1, Low-byte Timer 2, High-byte Timer 2, Low-byte RCAP2H Timer 2 Capture, High RCAP2L Timer 2 Capture, Low SCON* SBUF PCON Serial Port Control Serial Data Buffer Power Control SMOD SMOD0 - POF GF1 GF0 PD IDL 10H # Notes: *: Bit addressable -: Reserved bit # : Reset value depends on reset source. MEGAWIN MPC82G516A Data Sheet 26 6.2.2 The New Added SFRs The new added SFRs are shown in Table 6-3. More information on the use of these new SFRs is included in the description of those peripherals. Table 6-3. The New Added SFRs SYMBOL DESCRIPTION ADDR BIT ADDRESS & SYMBOL Bit-7 C7H PX3 Bit-6 C6H EX3 Bit-5 C5H IE3 Bit-4 C4H IT3 Bit-3 C3H PX2 Bit-2 C2H EX2 Bit-1 C1H IE2 Bit-0 C0H IT2 RESET VALUE Interrupt XICON* IPH External Interrupt Control Interrupt Priority High C0H B7H ADH AEH AFH 00H 00H 00H 00H 00H PX3H - PX2H - PT2H EKB PKB PKBH PSH ES2 PS2 PS2H PT1H EBD PBD PBDH PX1H EPCA PPCA PPCAH PT0H EADC PADC PADCH PX0H ESPI PSPI PSPIH Auxiliary AUXIE Interrupt Enable Auxiliary AUXIP Interrupt Priority Auxiliary AUXIPH Interrupt Priority High I/O Port P4* P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 Port 4 Port 0 Mode Register 0 Port 0 Mode Register 1 Port 1 Mode Register 0 Port 1 Mode Register 1 Port 2 Mode Register 0 Port 2 Mode Register 1 Port 3 Mode Register 0 Port 3 Mode Register 1 Port 4 Mode Register 0 Port 4 Mode Register 1 E8H 93H 94H 91H 92H 95H 96H B1H B2H B3H B4H EFH P4.7 EEH P4.6 EDH P4.5 ECH P4.4 EBH P4.3 EAH P4.2 E9H P4.1 E8H P4.0 FFH 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H P0M0.7 P0M1.7 P1M0.7 P1M1.7 P2M0.7 P2M1.7 P3M0.7 P3M1.7 P4M0.7 P4M1.7 P0M0.6 P0M1.6 P1M0.6 P1M1.6 P2M0.6 P2M1.6 P3M0.6 P3M1.6 P4M0.6 P4M1.6 P0M0.5 P0M1.5 P1M0.5 P1M1.5 P2M0.5 P2M1.5 P3M0.5 P3M1.5 P4M0.5 P4M1.5 P0M0.4 P0M1.4 P1M0.4 P1M1.4 P2M0.4 P2M1.4 P3M0.4 P3M1.4 P4M0.4 P4M1.4 P0M0.3 P0M1.3 P1M0.3 P1M1.3 P2M0.3 P2M1.3 P3M0.3 P3M1.3 P4M0.3 P4M1.3 P0M0.2 P0M1.2 P1M0.2 P1M1.2 P2M0.2 P2M1.2 P3M0.2 P3M1.2 P4M0.2 P4M1.2 P0M0.1 P0M1.1 P1M0.1 P1M1.1 P2M0.1 P2M1.1 P3M0.1 P3M1.1 P4M0.1 P4M1.1 P0M0.0 P0M1.0 P1M0.0 P1M1.0 P2M0.0 P2M1.0 P3M0.0 P3M1.0 P4M0.0 P4M1.0 Keypad Interrupt KBCON Keypad Control D6H D5H D7H KBPATN.7 KBMASK.7 KBPATN.6 KBMASK.6 KBPATN.5 KBMASK.5 KBPATN.4 KBMASK.4 KBPATN.3 KBMASK.3 KBPATN.2 KBMASK.2 PATNS KBPATN.1 KBMASK.1 KBIF KBPATN.0 KBMASK.0 00H FFH 00H KBPATN Keypad Pattern KBMASK Keypad Mask Serial Port SADEN SADDR S2CON S2BRT S2BUF Slave Address Mask Slave Address UART2 Control UART2 Baud Rate Timer UART2 Serial Buffer B9H A9H AAH BAH 9AH SADEN.7 SADEN.6 SADEN.5 SADEN.4 SADEN.3 SADEN.2 SADEN.1 SADEN.0 SADDR.0 00H 00H 00H 00H xxH SADDR.7 SADDR.6 SADDR.5 SADDR.4 SADDR.3 SADDR.2 SADDR.1 S2SM0 S2SM1 S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI ADC ADCTL ADCH ADCL ADC Control Register ADC Result , High-byte ADC Result , Low-byte C5H C6H BEH ADCON SPEED1 SPEED0 ADCI ADCS CHS2 CHS1 CHS0 00H xxH xxH SPI SPCTL SPI Control Register 85H 84H 86H SSIG SPIF SPEN WCOL DORD - MSTR - CPOL - CPHA - SPR1 - SPR0 - 04H 00H 00H SPSTAT SPI Status Register SPDAT SPI Data Register 27 MPC82G516A Data Sheet MEGAWIN (Continued) PCA CCON* CMOD CH CL CCAPM0 CCAPM1 CCAPM2 CCAPM3 CCAPM4 CCAPM5 CCAP0H CCAP0L CCAP1H CCAP1L CCAP2H CCAP2L CCAP3H CCAP3L CCAP4H CCAP4L CCAP5H CCAP5L PCAPWM 0 PCAPWM 1 PCAPWM 2 PCAPWM 3 PCAPWM 4 PCAPWM 5 PCA Counter Control PCA Counter Mode PCA Counter, HB PCA Counter, LB PCA Module0 Compare/Capture Reg. PCA Module1 Compare/Capture Reg. PCA Module2 Compare/Capture Reg. PCA Module3 Compare/Capture Reg. PCA Module4 Compare/Capture Reg. PCA Module5 Compare/Capture Reg. PCA Module0 Capture Register, High-Byte PCA Module0 Capture Register, Low-Byte PCA Module1 Capture Register High-Byte PCA Module1 Capture Register, Low-Byte PCA Module2 Capture Register, High-Byte PCA Module2 Capture Register, Low-Byte PCA Module3 Capture Register, High-Byte PCA Module3 Capture Register, Low-Byte PCA Module4 Capture Register, High-Byte PCA Module4 Capture Register, Low-Byte PCA Module5 Capture Register, High-Byte PCA Module5 Capture Register, Low-Byte PCA PWM Mode, Auxiliary Register 0 PCA PWM Mode, Auxiliary Register 1 PCA PWM Mode, Auxiliary Register 2 PCA PWM Mode, Auxiliary Register 3 PCA PWM Mode, Auxiliary Register 4 PCA PWM Mode, Auxiliary Register 5 Auxiliary Register Auxiliary Register 1 Auxiliary Register 2 Timer 2 Mode Control D8H D9H F9H E9H DAH DBH DCH DDH DEH DFH FAH EAH FBH EBH FCH ECH FDH EDH FEH EEH FFH EFH F2H F3H F4H F5H F6H F7H DFH CF DEH CR DDH CCF5 DCH CCF4 DBH CCF3 DAH CCF2 D9H CCF1 D8H CCF0 00H 00H 00H 00H CIDL - - - - CPS2 CPS1 ECF - ECOM0 ECOM1 ECOM2 ECOM3 ECOM4 ECOM5 CAPP0 CAPP1 CAPP2 CAPP3 CAPP4 CAPP5 CAPN0 CAPN1 CAPN2 CAPN3 CAPN4 CAPN5 MAT0 MAT1 MAT2 MAT3 MAT4 MAT5 TOG0 TOG1 TOG2 TOG3 TOG4 TOG5 PWM0 PWM1 PWM2 PWM3 PWM4 PWM5 ECCF0 ECCF1 ECCF2 ECCF3 ECCF4 ECCF5 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H 00H - - - - - - ECAP0H ECAP1H ECAP2H ECAP3H ECAP4H ECAP5H ECAP0L ECAP1L ECAP2L ECAP3L ECAP4L ECAP5L 00H 00H 00H 00H 00H 00H Others AUXR AUXR1 AUXR2 T2MOD 8EH A2H A6H C9H 8FH C7H E1H 97H URTS P4KB T0X12 WRF EOPFI ADRJ P4PCA T1X12 ECPFI P41ALE P35ALE P4SPI URM0X6 ALES1 ENW OPF P4S2 S2TR ALES0 CLRW CPF GF2 - EXTRAM - DPS T0CKOE DCEN RWS0 SCKD0 PS0 - 00H 00H 00H 00H 23H 00H 00H # # S2SMOD S2TX12 S2CKOE WIDL PMUOFF RWS2 SCKD2 PS2 - T2OE RWS1 SCKD1 PS1 - External Access STRETCH Stretch PCON2 Power Control 2 WDTCR Watch-dog Timer EVRCR EVR Control Register 30H MEGAWIN MPC82G516A Data Sheet 28 (Continued) ISP ISPCR IFMT ISP Control Register ISP Mode Select E7H E5H E3H E4H E2H E6H ISPEN - SWBS - SWRST - - - CKS2 - CKS1 MS1 CKS0 MS0 00H 63H 00H 00H FFH xxH ISP Flash Address, IFADRH High-byte ISP Flash Address, IFADRL Low-byte IFD SCMD ISP Flash Data ISP Sequential Command Notes: *: Bit addressable -: Reserved bit # : Reset value depends on reset source. 29 MPC82G516A Data Sheet MEGAWIN 7 On-Chip eXpanded RAM (XRAM) To access the on-chip expanded RAM (XRAM), the EXTRAM bit should be cleared to 0. The 1024 bytes of XRAM (with addresses 0000H to 03FFH) are indirectly accessed by move external instruction, “MOVX @DPTR”. An access to XRAM will have not any outputting of address, address latch enable and read/write strobe. That means P0, P2, ALE (P3.5 or P4.1), /WR (P3.6) and /RD (P3.7) will keep unchanged during access of XRAM. However, if the address is more than 0x03FF, the access will be automatically switched to the external data memory. AUXR (Address=8EH, Auxiliary Register, Reset Value=0000,xx0xB) 7 6 5 4 3 2 1 0 URTS ADRJ P41ALE P35ALE - - EXTRAM - EXTRAM: 0: Disable accessing to external data memory while address less than 0x0400; Accessing of addresses 0x0000~0x03FF are automatically switched to on-chip XRAM. 1: Enable accessing to whole external data memory with addresses 0x0000~0xFFFF; Accessing of on-chip XRAM is disabled. 7.1 Using the XRAM in Software For Keil-C51 compiler, to assign the variables to be located at XRAM, the “xdata” declaration should be used. After being compiled, the variables declared by “xdata” will become the memories accessed by “MOVX @DPTR”. The user can get the following descriptions from the “Keil Software — Cx51 Compiler User’s Guide”. Table 7-1. Declaration of XRAM Memory Type MEGAWIN MPC82G516A Data Sheet 30 8 External Data Memory Accessing As described in Section 5.2, to access the external data memory, the EXTRAM bit should be set to 1. Accesses to external data memory can use either a 16-bit address (using ‘MOVX @DPTR’) or an 8-bit address (using ‘MOVX @Ri’), as described below. Accessing by an 8-bit address 8-bit addresses are often used in conjunction with one or more other I/O lines to page the RAM. If an 8-bit address is being used, the contents of the Port 2 SFR remain at the Port 2 pins throughout the external memory cycle. This will facilitate paging access. Figure 5-5 shows an example of a hardware configuration for accessing up to 2K bytes of external RAM. Port 0 serves as a multiplexed address/data bus to the RAM, and 3 lines of Port 2 are being used to page the RAM. The CPU generates /RD and /WR (alternate functions of P3.7 and P3.6) to strobe the memory. Of course, the user may use any other I/O lines instead of P2 to page the RAM. Accessing by a 16-bit address 16-bit addresses are often used to access up to 64k bytes of external data memory. Figure 5-6 shows the hardware configuration for accessing 64K bytes of external RAM. Whenever a 16-bit address is used, in addition to the functioning of P0, /RD and /WR, the high byte of the address comes out on Port 2 and it is held during the read or write cycle. In any case, the low byte of the address is time-multiplexed with the data byte on Port 0. ALE (Address Latch Enable) should be used to capture the address byte into an external latch. The address byte is valid at the negative transition of ALE. Then, in a write cycle, the data byte to be written appears on Port 0 just before /WR is activated, and remains there until after /WR is deactivated. In a read cycle, the incoming byte is accepted at Port 0 just before the read strobe is deactivated. During any access to external memory, the CPU writes 0FFH to the Port 0 latch (the Special Function Register), thus obliterating whatever information the Port 0 SFR may have been holding. 8.1 ALE-Pin Configuration For the MPC82G516A, there is no dedicated pin for ALE signal. The ALE becomes an alternate function of P3.5 or P4.1, which can be selected by control bits P35ALE and P41ALE in the AUXR register, as shown below. And, although an 80C51 MCU always outputs the ALE signal even there in no external accessing, the device doesn’t output any ALE signal except when accessing the external data memory (EXTRAM=1). AUXR (Address=8EH, Auxiliary Register, Reset Value=0000, xx0xB) 7 6 5 4 3 2 1 0 URTS ADRJ P41ALE P35ALE - - EXTRAM - P41ALE: when set, P4.1 functions as the ALE pin for external MOVX accessing. P35ALE: when set, P3.5 functions as the ALE pin for external MOVX accessing. EXTRAM: 0: Disable accessing to external data memory while address less than 0x0400; Accessing of addresses 0x0000~0x03FF are automatically switched to on-chip XRAM. 1: Enable accessing to whole external data memory with addresses 0x0000~0xFFFF; Accessing of on-chip XRAM is disabled. 31 MPC82G516A Data Sheet MEGAWIN 8.2 Access Timing Stretching for Low-speed Memory To access the low-speed external data memory, the timing-stretch mechanism is designed to control the access timing of the “MOVX” instructions. The bits ALES1 and ALES0, in STRETCH register, control the stretching of the setup time and hold time with respect to ALE negative edge. And, the bits RWS2, RWS1 and RWS0 control the stretching of the read/write pulse width. The user should configure STRETCH register properly to conform to the read/write requirements of the external data memory being used. STRETCH (Address=8FH, Stretch Register, Reset Value=0010,0011B) 7 6 5 4 3 2 1 0 - - ALES1 ALES0 - RWS2 RWS1 RWS0 {ALES1,ALES0} : 00: No stretch, the P0’s address setup/hold time to the following ALE falling edge is 1 clock cycle. 01: 1 clock stretched, the P0’s address setup/hold time to the following ALE falling edge is 2 clock cycles. 10: 2 clocks stretched, the P0’s address setup/hold time to the following ALE falling edge is 3 clock cycles. 11: 3 clocks stretched, the P0’s address setup/hold time to the following ALE falling edge is 4 clock cycles. {RWS2,RWS1,RWS0} : 000: No stretch, the MOVX read/write pulse is 1 clock cycle. 001: 1 clock stretched, the MOVX read/write pulse is 2 clock cycles. 010: 2 clocks stretched, the MOVX read/write pulse is 3 clock cycles. 011: 3 clocks stretched, the MOVX read/write pulse is 4 clock cycles. 100: 4 clocks stretched, the MOVX read/write pulse is 5 clock cycles. 101: 5 clocks stretched, the MOVX read/write pulse is 6 clock cycles. 110: 6 clocks stretched, the MOVX read/write pulse is 7 clock cycles. 111: 7 clocks stretched, the MOVX read/write pulse is 8 clock cycles. See the following timing waveforms for demonstration. MEGAWIN MPC82G516A Data Sheet 32 Figure 8-1. “MOVX @DPTR,A” without Stretch 1 2 3 4 5 6 7 System Clock P2 P0 ALE /WR (P3.6) Weak Pulled Up High-byte Address Weak Pulled Up Low-byte Addr. Data MOVX Write Cycle {ALES1,ALES0}={0,0} & {RWS2,RWS1,RWS0}={0,0,0} Figure 8-2. “MOVX @DPTR,A” with Stretch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 System Clock P2 P0 ALE /WR (P3.6) Weak Pulled Up High-byte Address Weak Pulled Up Low-byte Address Data Stretched Setup-time: 2 Clocks Stretched Hold-time: 2 Clocks Stretched Write-pulse: 3 Clocks MOVX Write Cycle {ALES1,ALES0}={1,0} & {RWS2,RWS1,RWS0}={0,1,1} 33 MPC82G516A Data Sheet MEGAWIN Figure 8-3. “MOVX A,@DPTR” without Stretch 1 2 3 4 5 6 7 System Clock P2 P0 ALE /RD (P3.7) Weak Pulled Up High-byte Address Weak Pulled Up Low-byte Addr. Data MOVX Read Cycle {ALES1,ALES0}={0,0} & {RWS2,RWS1,RWS0}={0,0,0} Figure 8-4. “MOVX A,@DPTR” with Stretch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 System Clock P2 P0 ALE /RD (P3.7) Weak Pulled Up High-byte Address Weak Pulled Up Low-byte Address Data Stretched Setup-time: 2 Clocks Stretched Hold-time: 2 Clocks Stretched Write-pulse: 3 Clocks MOVX Read Cycle {ALES1,ALES0}={1,0} & {RWS2,RWS1,RWS0}={0,1,1} MEGAWIN MPC82G516A Data Sheet 34 9 Dual Data Pointer Register (DPTR) The additional data pointer can be used to speed up code execution and reduce code size. The dual DPTR structure is a way by which the chip will specify the address of an external data memory location. There are two 16-bit DPTR registers that address the external memory, and a single control bit called DPS (AUXR1.0) that allows the program code to switch between the external memory. Figure 9-1. Use of Dual DPTR (83h) DPTR0 DPH (82h) DPL DPS=0 DPTR1 DPH DPL DPS=1 Selected by DPS External Data Memory DPTR Instructions The six instructions that refer to DPTR currently selected using the DPS bit are as follows: INC MOV MOVC MOVX MOVX JMP 7 DPTR DPTR,#data16 A,@A+DPTR A,@DPTR @DPTR,A @A+DPTR 6 5 ;Increments the data pointer by 1 ;Loads the DPTR with a 16-bit constant ;Move code byte relative to DPTR to ACC ;Move external RAM (16-bit address) to ACC ;Move ACC to external RAM (16-bit address) ;Jump indirect relative to DPTR 4 3 2 1 0 AUXR1 (Address=8EH, Auxiliary Register1, Reset Value=0000,0000B) P4KB P4PCA P4SPI P4S2 GF2 DPS DPS: DPTR select bit, used to switch between DPTR0 and DPTR1. The DPS bit status should be saved by software when switching between DPTR0 and DPTR1. DPS 0 1 DPTR selected DPTR0 DPTR1 35 MPC82G516A Data Sheet MEGAWIN 10 I/O Port Structure and Operation The MPC82G516A has five I/O ports: Port 0, Port 1, Port2, Port 3 and Port4. All ports are 8-bit ports. The exact number of I/O pins available depends upon the package types. See Table 10-1. Table 10-1. Number of I/O Pins Available Package Type 40-pin DIP I/O Pins P0, P1, P2, P3 P0.1~P0.4, P0.6, P1.0, P1.2, P1.3, P1.5, P2.0, P2.1, P2.3, P2.4, P2.5 P3.0~P3.3, P3.5 P4.2 P0, P1, P2, P3, P4.0~P4.3 P0, P1, P2, P3, P4.0~P4.3 P0, P1, P2, P3, P4 Number of I/O Pins 32 28-pin SSOP 20 44-pin PLCC 44-pin PQFP 48-pin LQFP 36 36 40 10.1 Port Configurations All I/O port pins on the MPC82G516A may be individually and independently configured by software to one of four types on a bit-by-bit basis, as shown in Table 10-2. These are: quasi-bidirectional (standard 8051 I/O port), push-pull output, open-drain output, and input-only (high-impedance input). Two mode registers for each port select the output type for each port pin. Table 10-2. Port Configuration Settings PxM0.y 0 0 1 1 PxM1.y 0 1 0 1 Port Mode Quasi-bidirectional Push-Pull Output Input-Only (High Impedance Input) Open-Drain Output Where x=0~4 (port number), and y=0~7 (port pin). The registers PxM0 and PxM1 are listed below. P0M0 (Address=93H, Port 0 Mode Register 0, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P0M0.7 P0M0.6 P0M0.5 P0M0.4 P0M0.3 P0M0.2 P0M0.1 P0M0.0 P0M1 (Address=94H, Port 0 Mode Register 1, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P0M1.7 P0M1.6 P0M1.5 P0M1.4 P0M1.3 P0M1.2 P0M1.1 P0M1.0 P1M0 (Address=91H, Port 1 Mode Register 0, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P1M0.7 P1M0.6 P1M0.5 P1M0.4 P1M0.3 P1M0.2 P1M0.1 P1M0.0 P1M1 (Address=92H, Port 1 Mode Register 1, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P1M1.7 P1M1.6 P1M1.5 P1M1.4 P1M1.3 P1M1.2 P1M1.1 P1M1.0 P2M0 (Address=95H, Port 2 Mode Register 0, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P2M0.7 P2M0.6 P2M0.5 P2M0.4 P2M0.3 P2M0.2 P2M0.1 P2M0.0 MEGAWIN MPC82G516A Data Sheet 36 P2M1 (Address=96H, Port 2 Mode Register 1, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P2M1.7 P2M1.6 P2M1.5 P2M1.4 P2M1.3 P2M1.2 P2M1.1 P2M1.0 P3M0 (Address=B1H, Port 3 Mode Register 0, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P3M0.7 P3M0.6 P3M0.5 P3M0.4 P3M0.3 P3M0.2 P3M0.1 P3M0.0 P3M1 (Address=B2H, Port 3 Mode Register 1, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P3M1.7 P3M1.6 P3M1.5 P3M1.4 P3M1.3 P3M1.2 P3M1.1 P3M1.0 P4M0 (Address=B3H, Port 4 Mode Register 0, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P4M0.7 P4M0.6 P4M0.5 P4M0.4 P4M0.3 P4M0.2 P4M0.1 P4M0.0 P4M1 (Address=B4H, Port 4 Mode Register 1, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 P4M1.7 P4M1.6 P4M1.5 P4M1.4 P4M1.3 P4M1.2 P4M1.1 P4M1.0 10.1.1 Quasi-Bidirectional I/O Port pins in quasi-bidirectional mode are similar to the standard 8051 port pins. A quasi-bidirectional port can be used as an input and output without the need to reconfigure the port. This is possible because when the port outputs a logic high, it is weakly driven, allowing an external device to pull the pin low. When the pin outputs low, it is driven strongly and able to sink a large current. There are three pull-up transistors in the quasi-bidirectional output that serve different purposes. One of these pull-ups, called the “very weak” pull-up, is turned on whenever the port register for the pin contains a logic “1”. This very weak pull-up sources a very small current that will pull the pin high if it is left floating. A second pull-up, called the “weak” pull-up, is turned on when the port register for the pin contains a logic “1” and the pin itself is also at a logic “1” level. This pull-up provides the primary source current for a quasi-bidirectional pin that is outputting a 1. If this pin is pulled low by the external device, this weak pull-up turns off, and only the very weak pull-up remains on. In order to pull the pin low under these conditions, the external device has to sink enough current to over-power the weak pull-up and pull the port pin below its input threshold voltage. The third pull-up is referred to as the “strong” pull-up. This pull-up is used to speed up low-to-high transitions on a quasibidirectional port pin when the port register changes from a logic “0” to a logic “1”. When this occurs, the strong pull-up turns on for two CPU clocks, quickly pulling the port pin high. The quasi-bidirectional port configuration is shown in Figure 10-1. A quasi-bidirectional port pin has a Schmitttriggered input for noise suppression. Figure 10-1. Quasi-Bidirectional I/O 37 MPC82G516A Data Sheet MEGAWIN 10.1.2 Open-Drain Output The open-drain output configuration turns off all pull-ups and only drives the pull-down transistor of the port pin when the port register contains a logic “0”. To use this configuration in application, a port pin must have an external pull-up, typically a resistor tied to VDD. The pull-down for this mode is the same as for the quasibidirectional mode. In addition, the input path of the port pin in this configuration is also the same as quasibidirectional mode. The open-drain port configuration is shown in Figure 10-2. An open drain port pin also has a Schmitt-triggered input for noise suppression. Figure 10-2. Open-Drain Output 10.1.3 Input-Only (High Impedance Input) The input-only configuration is a Schmitt-triggered input without any pull-up resistors on the pin, as shown in Figure 10-3. Figure 10-3. Input-Only 10.1.4 Push-Pull Output The push-pull output configuration has the same pull-down structure as both the open-drain and the quasibidirectional output modes, but provides a continuous strong pull-up when the port register contains a logic “1”. The push-pull mode may be used when more source current is needed from a port output. In addition, the input path of the port pin in this configuration is also the same as quasi-bidirectional mode. The push-pull port configuration is shown in Figure 10-4. A push-pull port pin also has a Schmitt-triggered input for noise suppression. Figure 10-4. Push-Pull Output MEGAWIN MPC82G516A Data Sheet 38 10.2 I/O Pins Used with ADC Function The Port 1 serves as the alternate function of the ADC analog input. In order to get the best analog performance, the pins that are being used with the ADC should have their digital outputs disabled. This can be achieved by putting the port pins into the Input-Only mode. 10.3 Additional Note for I/O Port Every output on the MPC82G516A has been designed to sink typical LED drive current. However, there is a maximum total output current for all ports which must not be exceeded. Please refer to Section 29: Absolute Maximum Ratings. 39 MPC82G516A Data Sheet MEGAWIN 11 Timers/Counters The MPC82G516A has three 16-bit Timer/Counters: Timer 0, Timer 1 and Timer 2. Each consists of two 8-bit registers, THx and TLx (where, x= 0, 1, or 2). All of them can be configured to operate either as timers or event counters. In the Timer function, the TLx register is incremented every 12-clock cycle or 1-clock cycle, which is selectable by software. Thus one can think of it as counting clock cycles. When counting every 12 clock cycles, the count rate is 1/12 of the oscillator frequency. In the Counter function, the register is incremented in response to a 1-to-0 transition at its corresponding external input pin- T0, T1, or T2. In this function, the external input is sampled every clock cycle for T0 pin and T1 pin, and 12-clock cycle for T2 pin. When the samples show a high and then a low, the count is incremented. The new count value appears in the register when the transition was detected. For Timer 0 and Timer1, it takes 2 clock cycles to recognize a 1-to-0 transition, the maximum count rate is 1/2 of the oscillator frequency; for Timer 2, it takes 24 clock cycles to recognize a 1-to-0 transition, the maximum count rate is 1/24 of the oscillator frequency. There are no restrictions on the duty cycle of the external input signal, but to ensure that a given level is sampled at least once before it changes, it should be held for at least one clock cycle for Timer 0 and Timer 1, and 12clock cycles for Timer 2. For Timer 0 and Timer 2, in addition to their standard 8051’s timer function, some special new functions are added in. The following sub-sections will describe these timer/counters in detail. 11.1 Timer 0 and Timer 1 The Timer or Counter function is selected by control bits C/-T in the Special Function Register TMOD, as shown below. These two Timer/Counters have four operating modes, which are selected by bit-pairs (M1, M0) in TMOD. Mode 0, 1 and 2 are the same for these two Timer/Counters. Mode 3 is different. In addition to TMOD, another Special Function Registers TCON and AUXR2 contains several control bits and status flags related to these two Timers, as also shown below. TMOD (Address=89H, Timer/Counter Mode Control Register, Reset Value=0000,0000B) Timer 1 7 6 5 4 3 2 Timer 0 1 0 GATE C/-T M1 M0 GATE C/-T M1 M0 GATE: Gating control when set. Timer/Counter 0 or 1 is enabled only while /INT0 or /INT1 pin is high and TR0 or TR1 control pin is set. When cleared, Timer 0 or 1 is enabled whenever TR0 or TR1 control bit is set. C/-T: Timer or Counter Selector. Clear for Timer operation (input from internal system clock). Set for Counter operation (input from T0 or T1 input pin). M1 M0 00 01 10 1 1 1 1 Operating Mode 8-bit Timer/Counter. THx with TLx as 5-bit prescaler. 16-bit Timer/Counter. THx and TLx are cascaded; there is no prescaler. 8-bit auto-reload Timer/Counter. THx holds a value which is to be reloaded into TLx each time it overflows. (Timer 0) TL0 is an 8-bit Timer/Counter controlled by the standard Timer 0 control bits. TH0 is an 8-bit timer only controlled by Timer 1 control bits. (Timer 1) Timer/Counter stopped. MEGAWIN MPC82G516A Data Sheet 40 TCON (Address=88H, Timer/Counter Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1: Timer 1 overflow Flag. Set by hardware on Timer/Counter overflow. Cleared by hardware when processor vectors to interrupt routine. TR1: Timer 1 Run control bit. Set/cleared by software to turn Timer/Counter 1 on/off. TF0: Timer 0 overflow Flag. Set by hardware on Timer/Counter 0 overflow. Cleared by hardware when processor vectors to interrupt routine. TR0: Timer 0 Run control bit. Set/cleared by software to turn Timer/Counter 0 on/off. AUXR2 (Address=A6H, Auxiliary Register2, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 T0X12 T1X12 URM0X6 S2TR S2SMOD S2TX12 S2CKOE T0CKOE T0X12: Timer 0 clock source select while C/-T=0. Set to select Fosc as the clock source, and clear to select Fosc/12 as the clock source. T1X12: Timer 1 clock source select while C/-T=0. Set to select Fosc as the clock source, and clear to select Fosc/12 as the clock source. T0CKOE: Set/clear to enable/disable Timer 0 clock-out function from P3.4. The four operating modes are described in the following text. 11.1.1 Mode 0: 13-Bit Timer/Counter Timer 0 and Timer 1 in Mode 0 look like an 8-bit Counter with a divide-by-32 prescaler. And, Mode 0 operation is the same for these two timers. Figure 11-1 shows the Mode 0 operation. In this mode, the Timer register is configured as a 13-bit register. As the count rolls over from all 1s to all 0s, it sets the Timer interrupt flag TFx. The counted input is enabled to the Timer when TRx=1 and either GATE=0 or /INTx=1. (Setting GATE=1 allows the Timer to be controlled by external input /INTx, to facilitate pulse width measurements). TRx and TFx are control bits in SFR TCON. The GATE bit is in TMOD. There are two different GATE bits, one for Timer 1 (TMOD.7) and one for Timer 0 (TMOD.3). The 13-bit register consists of all 8 bits of THx and the lower 5 bits of TLx. The upper 3 bits of TLx are indeterminate and should be ignored. Setting the run flag (TRx) does not clear these registers. That is to say the user should initialize THx an TLx before start counting. Figure 11-1. Timer 1 in Mode 0: 13-Bit Timer/Counter Fosc 12 "0" "1" "0" "1" TL1 (5 Bits) TH1 (8 Bits) Overflow TF1 T1X12 T1 Pin Timer 1 Interrupt C/-T TR1 GATE /INT1 pin * Fosc is the system clock. 41 MPC82G516A Data Sheet MEGAWIN 11.1.2 Mode 1: 16-Bit Timer/Counter Mode 1 is the same as Mode 0, except that the Timer register uses all 16 bits. Refer to Figure 11-2. In this mode, THx and TLx are cascaded; there is no prescaler. Figure 11-2. Timer 1 in Mode 1: 16-Bit Timer/Counter Fosc 12 "0" "1" "0" "1" TL1 (8 Bits) TH1 (8 Bits) Overflow TF1 T1X12 T1 Pin Timer 1 Interrupt C/-T TR1 GATE /INT1 pin * Fosc is the system clock. 11.1.3 Mode 2: 8-Bit Auto-Reload Mode 2 configures the Timer register as an 8-bit Counter (TLx) with automatic reload, as shown in Figure 11-3. Overflow from TLx not only sets TFx, but also reloads TLx with the contents of THx, which is preset by software. The reload leaves THx unchanged. Figure 11-3. Timer 1 in Mode 2: 8-Bit Auto-Reload Fosc 12 "0" "1" "0" "1" TL1 (8 Bits) Overflow TF1 T1X12 T1 Pin Timer 1 Interrupt Load C/-T TR1 GATE /INT1 pin * Fosc is the system clock. TH1 (8 Bits) MEGAWIN MPC82G516A Data Sheet 42 11.1.4 Mode 3: Two 8-Bit Timer/Counters Timer 1 in Mode 3 simply holds its count. The effect is the same as setting TR1=0. Timer 0 in Mode 3 establishes TL0 and TH0 as two separate counters. The logic for Mode 3 on Timer 0 is shown in Figure 11-4. TL0 uses the Timer 0 control bits: C/-T, GATE, TR0, /INT0, and TF0. TH0 is locked into a timer function (counting machine cycles) and takes over the use of TR1 and TF1 from Timer 1. Thus TH0 now controls the Timer 1 interrupt. Mode 3 is provided for applications requiring an extra 8-bit timer or counter. When Timer 0 is in Mode 3, Timer 1 can be turned on and off by switching it out of and into its own Mode 3, or can still be used by the serial port as a baud rate generator, or in any application not requiring an interrupt. Figure 11-4. Timer 0 in Mode 3: Two 8-Bit Timer/Counters Fosc 12 "0" "1" "0" "1" TL0 (8 Bits) Overflow TF0 T0X12 T0 Pin Timer 0 Interrupt C/-T TR0 GATE /INT0 pin Fosc 12 "0" "1" TH0 (8 Bits) TR1 Overflow TF1 Timer 1 Interrupt T0X12 * Fosc is the system clock. 43 MPC82G516A Data Sheet MEGAWIN 11.1.5 Programmable Clock-Out from Timer 0 Using Timer 0, a 50% duty cycle clock can be programmed to come out from pin T0CKO (P3.4). The clock-out frequency depends on the system clock frequency (Fosc) and the reload value filled in the TH0 register, as shown in the following formula: Clock-Out Frequency = Where, n=24 if T0X12=0, n=2 if T0X12=1. Fosc n x (256-TH0) Timer 0 is programmed for the clock-out mode as follows: • Set T0CKOE bit in AUXR2 register. • Clear C/-T bit of Timer 0 in TMOD register. • Clear GATE bit of Timer 0 in TMOD register. • Determine the 8-bit reload value from the formula and enter it in TH0 register. • Enter an 8-bit initial value in TL0 register. It should be the same as the reload value. • Start the timer by setting the run control bit TR0 in TCON register. Figure 11-5. Programmable Clock-Out from Timer 0 Fosc 12 "0" "1" "0" D TL0 (8 Bits) Overflow Q Clock-Out (P3.4) CK Q T0X12 C/-T=0 Load TR0 GATE=0 TH0 (8 Bits) /INT1 pin * Fosc is the system clock. MEGAWIN MPC82G516A Data Sheet 44 11.2 Timer 2 Timer 2 is a 16-bit Timer/Counter which can operate either as a timer or an event counter, as selected by C/-T2 in the special function register T2CON. Timer 2 has four operating modes: Capture, Auto-Reload (up or down counting), Baud Rate Generator and Programmable Clock-Out, which are selected by bits in the special function registers T2CON and T2MOD, as shown below. T2CON (Address=C8H, Timer/Counter 2 Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/-T2 CP/-RL2 TF2: Timer 2 overflow flag set by a Timer 2 overflow and must be cleared by software. TF2 will not be set when either RCLK=1 or TCLK=1. EXF2: Timer 2 external flag set when either a capture or reload is caused by a negative transition on T2EX and EXEN2=1. When Timer 2 interrupt is enabled, EXF2=1 will cause the CPU to vector to the Timer 2 interrupt routine. EXF2 must be cleared by software. EXF2 does not cause an interrupt in up/down counter mode (DCEN=1). RCLK: Receive clock control bit. When set, causes the serial port to use Timer 2 overflow pulses for its receive clock in serial port Modes 1 and 3. RCLK=0 causes Timer 1 overflow to be used for the receive clock. TCLK: Transmit clock control bit. When set, causes the serial port to use Timer 2 overflow pulses for its transmit clock in serial port Modes 1 and 3. TCLK=0 causes Timer 1 overflows to be used for the transmit clock. EXEN2: Timer 2 external enable bit. When set, allows a capture or reload to occur as a result of a negative transition on T2EX if Timer 2 is not being used to clock the serial port. EXEN2=0 causes Timer 2 to ignore events at T2EX. TR2: Start/stop control for Timer 2. A logic 1 starts the timer. C/-T2: Timer or counter select. When cleared, select internal timer. When set, select external event counter (falling edge triggered). CP/-RL2: Capture/Reload control bit. When set, captures will occur on negative transitions at T2EX if EXEN2=1. When cleared, auto-reloads will occur either with Timer 2 overflows or negative transitions at T2EX when EXEN2=1. When either RCLK=1 or TCLK=1, this bit is ignored and the timer is forced to auto-reload on Timer 2 overflow. T2MOD (Address=C9H, Timer 2 Mode Control Register, Reset Value=xxxx,xx00B) 7 6 5 4 3 2 1 0 - - - - - - T2OE DCEN T2OE: Timer 2 clock-out enable bit, set to enable and clear to disable. DCEN: Timer 2 down-counting enable bit, set to enable and clear to disable. Table 11-1. Timer 2 Operating Modes RCLK + TCLK x 1 0 0 0 0 CP/-RL2 x x 1 0 0 0 TR2 0 1 1 1 1 1 DCEN x 0 0 0 1 0 T2OE 0 0 0 0 0 1 Mode (Timer Off) Baud-rate Generator 16-bit Capture 16-bit Auto-reload (counting-up only) 16-bit Auto-reload (counting-up or counting-down) Programmable clock-out 45 MPC82G516A Data Sheet MEGAWIN 11.2.1 Capture Mode In the capture mode there are two options selected by bit EXEN2 in T2CON. If EXEN2=0, Timer 2 is a 16-bit timer or counter which, upon overflow, sets bit TF2- the Timer 2 overflow flag. This bit can then be used to generate an interrupt (by enabling the Timer 2 interrupt bit in the IE register). If EXEN2=1, Timer 2 still does the above, but with the added feature that a 1-to-0 transition at external input T2EX causes the current value in the Timer 2 registers, TH2 and TL2, to be captured into registers RCAP2H and RCAP2L, respectively. In addition, the transition at T2EX causes bit EXF2 in T2CON to be set, and the EXF2 bit (like TF2) can generate an interrupt (which vectors to the same location as Timer 2 overflow interrupt). The capture mode is illustrated in Figure 11-6. (There is no reload value for TL2 and TH2 in this mode. Even when a capture event occurs from T2EX, the counter keeps on counting T2EX pin transitions or Fosc/12 pulses). Figure 11-6. Timer 2 in Capture Mode Fosc 12 "0" "1" T2 Pin (P1.0) TL2 (8 Bits) TR2 Capture TH2 (8 Bits) Overflow TF2 C/-T2 Transition Detector Timer 2 Interrupt RCAP2L RCAP2H EXF2 T2EX Pin (P1.1) EXEN2 * Fosc is the system clock. 11.2.2 Auto-Reload Mode (Up or Down Counter) In the 16-bit auto-reload mode, Timer 2 can be configured as either a timer or counter (C/-T2 in T2CON), then programmed to count up or down. The counting direction is determined by bit DCEN (Down Counter Enable) which is located in the T2MOD register. After reset, DCEN=0 which means Timer 2 will default to counting up. If DCEN is set, Timer 2 can count up or down depending on the value of the T2EX pin. Figure 11-7 shows DCEN=0, which enables Timer 2 to count up automatically. In this mode there are two options selected by bit EXEN2 in T2CON register. If EXEN2=0, then Timer 2 counts up to 0FFFFH and sets the TF2 (Overflow Flag) bit upon overflow. This causes the Timer 2 registers to be reloaded with the 16-bit value in RCAP2L and RCAP2H. The values in RCAP2L and RCAP2H are preset by software. If EXEN2=1, then a 16-bit reload can be triggered either by an overflow or by a 1-to-0 transition at input T2EX. This transition also sets the EXF2 bit. The Timer 2 interrupt, if enabled, can be generated when either TF2 or EXF2 are 1. Figure 11-8 shows DCEN=1, which enables Timer 2 to count up or down. This mode allows pin T2EX to control the counting direction. When a logic 1 is applied at pin T2EX, Timer 2 will count up. Timer 2 will overflow at 0FFFFH and set the TF2 flag, which can then generate an interrupt if the interrupt is enabled. This overflow also causes the 16-bit value in RCAP2L and RCAP2H to be reloaded into the timer registers TL2 and TH2. A logic 0 applied to pin T2EX causes Timer 2 to count down. The timer will underflow when TL2 and TH2 become equal to the value stored in RCAP2L and RCAP2H. This underflow sets the TF2 flag and causes 0FFFFH to be reloaded into the timer registers TL2 and TH2. The external flag EXF2 toggles when Timer 2 underflows or overflows. This EXF2 bit can be used as a 17th bit of resolution if needed. The EXF2 flag does not generate an interrupt in this mode. MEGAWIN MPC82G516A Data Sheet 46 Figure 11-7. Timer 2 in Auto-Reload Mode (DCEN=0) Fosc 12 "0" "1" T2 Pin (P1.0) TL2 (8 Bits) TR2 Reload TH2 (8 Bits) Overflow TF2 C/-T2 Timer 2 Interrupt RCAP2L RCAP2H Transition Detector T2EX Pin (P1.1) EXEN2 * Fosc is the system clock. EXF2 Figure 11-8. Timer 2 in Auto-Reload Mode (DCEN=1) Down Counting Reload Value Toggle FFH FFH Reload EXF2 Fosc 12 "0" "1" T2 Pin (P1.0) TL2 (8 Bits) TR2 TH2 (8 Bits) Overflow TF2 Timer 2 Interrupt C/-T2 Reload RCAP2L RCAP2H Up Counting Reload Value * Fosc is the system clock. Counting Direction: 1 = Up 0 = Down T2EX Pin (P1.1) 11.2.3 Baud Rate Generator Mode Bits TCLK and/or RCLK in T2CON register allow the serial port transmit and receive baud rates to be derived from either Timer 1 or Timer 2. When TCLK=0, Timer 1 is used as the serial port transmit baud rate generator. When TCLK= 1, Timer 2 is used as the serial port transmit baud rate generator. RCLK has the same effect for the serial port receive baud rate. With these two bits, the serial port can have different receive and transmit baud rates – one generated by Timer 1, the other by Timer 2. Figure 11-9 shows the Timer 2 in baud rate generation mode. The baud rate generation mode is like the autoreload mode, in that a rollover in TH2 causes the Timer 2 registers to be reloaded with the 16-bit value in registers RCAP2H and RCAP2L, which are preset by software. The baud rates in modes 1 and 3 are determined by Timer 2’s overflow rate given below: 16 The timer can be configured for either “Timer” or “Counter” operation. In many applications, it is configured for Mode 1 and 3 Baud Rates = Timer 2 Overflow Rate 47 MPC82G516A Data Sheet MEGAWIN “Timer” operation (C/-T2=0). Timer operation is different for Timer 2 when it is being used as a baud rate generator. Usually, as a timer it would increment at 1/12 the system clock frequency. As a baud rate generator, it increments at 1/2 the system clock. Thus the baud rate formula is as follows: 16 2 x ( 65536 - [RCAP2H,RCAP2L] ) Where: Fosc is the system clock. And (RCAP2H, RCAP2L)= The content of RCAP2H and RCAP2L taken as a 16-bit unsigned integer, which can be derived by: Fosc [RCAP2H,RCAP2L] = 65536 32 x Baud Rate The Timer 2 as a baud rate generator mode shown in Figure 11-9 is valid only if RCLK and/or TCLK=1 in T2CON register. Note that a rollover in TH2 does not set TF2, and will not generate an interrupt. Thus, the Timer 2 interrupt does not have to be disabled when Timer 2 is in the baud rate generator mode. Also if the EXEN2 (T2 external enable bit) is set, a 1-to-0 transition in T2EX (Timer/counter 2 trigger input) will set EXF2 (T2 external flag) but will not cause a reload from (RCAP2H, RCAP2L) to (TH2,TL2). Therefore when Timer 2 is in use as a baud rate generator, T2EX can be used as an additional external interrupt, if needed. When Timer 2 is in the baud rate generator mode, one should not try to read or write TH2 and TL2. As a baud rate generator, Timer 2 is incremented at 1/2 the system clock or asynchronously from pin T2; under these conditions, a read or write of TH2 or TL2 may not be accurate. The RCAP2 registers may be read, but should not be written to, because a write might overlap a reload and cause write and/or reload errors. The timer should be turned off (clear TR2) before accessing the Timer 2 or RCAP2 registers. Figure 11-9. Timer 2 in Baud Rate Generator Mode Timer 1 Overflow Mode 1 and 3 Baud Rates = Fosc x 1 * Fosc is the system clock. 2 * Note: Divided by 2, not by 12. "0" "1" SMOD "0" Fosc 2 "1" T2 Pin (P1.0) TL2 (8 Bits) TR2 TH2 (8 Bits) Overflow "1" "0" RCLK 16 Reload RX Clock C/-T2 "1" "0" TCLK RCAP2L RCAP2H Transition Detector 16 TX Clock T2EX Pin (P1.1) EXEN2 EXF2 Timer 2 Interrupt MEGAWIN MPC82G516A Data Sheet 48 Table 11-2 & Table 11-3 list various commonly used baud rates and how they can be obtained from Timer 2. Table 11-2. Timer 2 Generated Commonly Used Baud Rates @ Fosc=11.0592MHz Baud Rate 300 600 1200 1800 2400 4800 7200 9600 14400 19200 38400 57600 115200 Timer 2 in Baud Rate Generator Mode [RCAP2H, RCAP2L] 64384 64960 65152 65248 65392 65440 65464 65488 65500 65518 65524 65530 65533 RCAP2H FBH FDH FEH FEH FFH FFH FFH FFH FFH FFH FFH FFH FFH RCAP2L 80H C0H 80H E0H 70H A0H B8H D0H DCH EEH F4H FAH FDH Table 11-3. Timer 2 Generated Commonly Used Baud Rates @ Fosc=22.1184MHz Baud Rate 300 600 1200 1800 2400 4800 7200 9600 14400 19200 38400 57600 115200 Timer 2 in Baud Rate Generator Mode [RCAP2H, RCAP2L] 63232 64384 64960 65152 65248 65392 65440 65464 65488 65500 65518 65524 65530 RCAP2H F7H FBH FDH FEH FEH FFH FFH FFH FFH FFH FFH FFH FFH RCAP2L 00H 80H C0H 80H E0H 70H A0H B8H D0H DCH EEH F4H FAH 49 MPC82G516A Data Sheet MEGAWIN 11.2.4 Programmable Clock-Out from Timer 2 Using Timer 2, a 50% duty cycle clock can be programmed to come out from pin T2CKO (P1.0). The clock-out frequency depends on the system clock frequency (Fosc) and the reload value filled in the RCAP2H and RCAP2L registers, as shown in the following formula: Clock-Out Frequency = Fosc 4 x (65536-[RCAP2H,RCAP2L]) Where [RCAP2H,RCAP2L]= the content of RCAP2H and RCAP2L taken as a 16-bit unsigned integer. Timer 2 is programmed for the clock-out mode as follows: • Set T2OE bit in T2MOD register. • Clear C/-T2 bit in T2CON register. • Determine the 16-bit reload value from the formula and enter it in RCAP2H and RCAP2L registers. • Enter a 16-bit initial value in TH2 and TL2 registers. It should be the same as the reload value. • Start the timer by setting the run control bit TR2 in T2CON register. In the clock-out mode, Timer 2 roll-overs will not generate an interrupt. This is similar to when it is used as a baud-rate generator. It is possible to use Timer 2 as a baud-rate generator and a clock generator simultaneously. Note, however, that the baud-rate and the clock-out frequency depend on the same overflow rate of Timer 2. Figure 11-10. Programmable Clock-Out from Timer 2 Note: Divided by 2, not by 12. Fosc 2 TL2 (8 Bits) C/-T2=0 TR2 TH2 (8 Bits) Overflow D Q Clock-Out (P1.0) CK Q Reload RCAP2L RCAP2H Transition Detector T2EX Pin (P1.1) EXEN2 * Fosc is the system clock. EXF2 Timer 2 Interrupt MEGAWIN MPC82G516A Data Sheet 50 12 Serial Port 12.1 Standard UART Operation The serial port is full-duplex, meaning it can transmit and receive simultaneously. It is also receive-buffered, meaning it can commence reception of a second byte before a previously received byte has been read from the register. (However, if the first byte still hasn’t been read by the time reception of the second byte is complete, one of the bytes will be lost.) The serial port receive and transmit registers are both accessed at special function register SBUF. Writing to SBUF loads the transmit register, and reading from SBUF accesses a physically separate receive register. The serial port can operate in 4 modes: Mode 0 provides synchronous communication while Modes 1, 2, and 3 provide asynchronous communication. The asynchronous communication operates as a full-duplex Universal Asynchronous Receiver and Transmitter (UART), which can transmit and receive simultaneously and at different baud rates. Mode 0: 8 data bits (LSB first) are transmitted or received through RXD. TXD always outputs the shift clock. The baud rate is fixed at 1/12 the system clock frequency, i.e., Fosc/12. Mode 1: 10 bits are transmitted through TXD or received through RXD: a start bit (0), 8 data bits (LSB first), and a stop bit (1). On receive, the stop bit goes into RB8 in special function register SCON. The baud rate is variable. Mode 2: 11 bits are transmitted through TXD or received through RXD: start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On Transmit, the 9th data bit (TB8 in SCON register) can be assigned the value of 0 or 1. Or, for example, the parity bit (P, in PSW register) could be moved into TB8. On receive, the 9th data bit goes into RB8 in SCON register, while the stop bit is ignored. The baud rate can be configured to 1/32 or 1/64 the system clock frequency, i.e., Fosc/64 or Fosc/32. Mode 3: 11 bits are transmitted through TXD or received through RXD: a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). In fact, Mode 3 is the same as Mode 2 in all respects except baud rate. The baud rate in Mode 3 is variable. In all four modes, transmission is initiated by any instruction that uses SBUF as a destination register. In Mode 0, reception is initiated by the condition RI=0 and REN=1. In the other modes, reception is initiated by the incoming start bit if REN=1. 12.1.1 Multiprocessor Communications Modes 2 and 3 have a special provision for multiprocessor communications. In these two modes, 9 data bits are received. The 9th bit goes into RB8. Then comes a stop bit. The port can be programmed such that when the stop bit is received, the serial port interrupt will be activated only if RB8=1. This feature is enabled by setting bit SM2 (in SCON register). A way to use this feature in multiprocessor systems is as follows: When the master processor wants to transmit a block of data to one of several slaves, it first sends out an address byte which identifies the target slave. An address byte differs from a data byte in that the 9th bit is 1 in an address byte and 0 in a data byte. With SM2=1, no slave will be interrupted by a data byte. An address byte, however, will interrupt all slaves, so that each slave can examine the received byte and check if it is being addressed. The addressed slave will clear its SM2 bit and prepare to receive the data bytes that will be coming. The slaves that weren’t being addressed leave their SM2 set and go on about their business, ignoring the coming data bytes. SM2 has no effect in Mode 0, and in Mode 1 can be used to check the validity of the stop bit. In a Mode 1 reception, if SM2=1, the receive interrupt will not be activated unless a valid stop bit is received. 12.1.2 Serial Port Related Registers The serial port control and status register is the special function register SCON. This register contains not only the mode selection bits, but also the 9th data bit for transmit and receive (TB8 and RB8), and the serial port interrupt bits (TI and RI). 51 MPC82G516A Data Sheet MEGAWIN SCON (Address=98H, Serial Port Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 SM0/FE SM1 SM2 REN TB8 RB8 TI RI FE: Framing Error bit. This bit is set by the receiver when an invalid stop bit is detected. The FE bit is not cleared by valid frames but should be cleared by software. The SMOD0 bit (in PCON register) must be ‘1’ to enable access to the FE bit. SM0: Serial Port Mode Bit 0 (SMOD0 must be ‘0’ to access bit SM0). SM1: Serial Port Mode Bit 1. SM0 SM1 0 0 0 1 1 0 1 1 Mode 0 1 2 3 Description Shift Register 8-bit UART 9-bit UART 9-bit UART Baud Rate Fosc/12 or Fosc/2 *Note: dependent on bit URM0X6 Variable Fosc/64 or Fosc/32 Variable Where, Fosc is the system clock frequency. SM2: Enables the Automatic Address Recognition feature in Modes 2 or 3. If SM2=1 then Rl will not be set unless the received 9th data bit (RB8) is ‘1’, indicating an address, and the received byte is a Given or Broadcast Address. In Mode 1, if SM2=1 then Rl will not be activated unless a valid stop bit was received, and the received byte is a Given or Broadcast Address. In Mode 0, SM2 should be ‘0’. REN: Enables serial reception. Set by software to enable reception. Cleared by software to disable reception. TB8: The 9th data bit that will be transmitted in Modes 2 and 3. Set or cleared by software as desired. RB8: In modes 2 and 3, the 9th data bit that was received. In Mode 1, if SM2=0, RB8 is the stop bit that was received. In Mode 0, RB8 is not used. Tl: Transmit interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or at the beginning of the stop bit in the other modes, in any serial transmission. Must be cleared by software. Rl: Receive interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or halfway through the stop bit time in the other modes, in any serial reception (except see SM2). Must be cleared by software. PCON (Address=87H, Power Control Register, Reset Value=00xx,0000B (or 00x1,0000B after Power-On Reset)) 7 6 5 4 3 2 1 0 SMOD SMOD0 - POF GF1 GF0 PD IDL SMOD0: Clear to let SCON.7 function as ‘SM0’, and set to let SCON.7 function as ‘FE’. AUXR2 (Address=A6H, Auxiliary Register 2, Reset Value=00x0,0000B) 7 6 5 4 3 2 1 0 T0X12 T1X12 URM0X6 S2TR S2SMOD S2TX12 S2CKOE T0CKOE T1X12: Timer 1 clock source select while C/-T=0. Set to select Fosc as the clock source, and clear to select Fosc/12 as the clock source. URM0X6: Set to select Fosc/2 as the baud rate for UART Mode 0. Clear to select Fosc/12 as the baud rate for UART Mode 0. 12.1.3 Baud Rates The baud rate in Mode 0 can be Fosc/12 or Fosc/2 dependent on the control bit URM0X6 (in AUXR2 register). Where, Fosc is the system clock frequency. The baud rates in Modes 1 and 3 are determined by the Timer 1 or Timer 2 overflow rate. The baud rate in Mode 2 depends on the value of bit SMOD in PCON register. If SMOD=0 (which is the value on reset), the baud rate is Fosc/64; if SMOD=1, the baud rate is Fosc/32, as shown below. Mode 2 Baud Rate = 2 SMOD 64 x Fosc MEGAWIN MPC82G516A Data Sheet 52 12.1.4 Using Timer 1 to Generate Baud Rates When Timer 1 is used as the baud rate generator (T2CON.RCLK=0, T2CON.TCLK=0), the baud rates in Modes 1 and 3 are determined by the Timer 1 overflow rate and the value of SMOD as follows: Mode 1, 3 Baud Rate = 2 SMOD 32 x (Timer 1 Overflow Rate) The Timer 1 interrupt should be disabled in this application. The Timer itself can be configured for either “timer” or “counter” operation, and in any of its 3 running modes. In the most typical applications, it is configured for “timer” operation, in the auto-reload mode (high nibble of TMOD = 0010B). In that case the baud rate is given by the formula: Mode 1, 3 Baud Rate = 2 SMOD 32 x Fosc n x (256-TH1) Where, n=12 if T1X12=0; n=1 if T1X12=1. (Note: T1X12 bit is in AUXR2 register.) One can achieve very low baud rates with Timer 1 by leaving the Timer 1 interrupt enabled, and configuring the Timer to run as a 16-bit timer (high nibble of TMOD=0001B), and using the Timer 1 interrupt to do a 16-bit software reload. Table 12-1 & Table 12-2 list various commonly used baud rates and how they can be obtained from Timer 1 in its 8-Bit Auto-Reload Mode. Table 12-1. Timer 1 Generated Commonly Used Baud Rates @ Fosc=11.0592MHz TH1, the Reload Value Baud Rate 300 600 1200 1800 2400 4800 7200 9600 14400 19200 38400 57600 115200 160 208 232 240 244 250 252 253 254 T1X12=0 SMOD=0 SMOD=1 64 160 208 224 232 244 248 250 252 253 255 64 112 184 208 220 232 238 247 250 253 T1X12=1 SMOD=0 SMOD=1 112 160 184 208 220 238 244 250 53 MPC82G516A Data Sheet MEGAWIN Table 12-2. Timer 1 Generated Commonly Used Baud Rates @ Fosc=22.1184MHz TH1, the Reload Value Baud Rate 300 600 1200 1800 2400 4800 7200 9600 14400 19200 38400 57600 115200 64 160 208 224 232 244 248 250 252 253 255 T1X12=0 SMOD=0 SMOD=1 64 160 192 208 232 240 244 248 250 253 254 255 112 160 184 208 220 238 244 250 T1X12=1 SMOD=0 SMOD=1 64 112 160 184 220 232 244 MEGAWIN MPC82G516A Data Sheet 54 12.1.5 More About Mode 0 Serial data enters and exits through RXD. TXD outputs the shift clock. 8 bits are transmitted/received: 8 data bits (LSB first). The baud rate is fixed at 1/12 the system clock frequency. Figure 12-1 shows a simplified functional diagram of the serial port in Mode 0, and associated timing. Transmission is initiated by any instruction that uses SBUF as a destination register. The “write to SBUF” signal also loads a 1 into the 9th position of the transmit shift register and tells the TX Control block to commence a transmission. The internal timing is such that appropriate time will elapse between “write to SBUF” and activation of Send. Send enables the output of the shift register to the alternate output function line of P3.0 and also enable Shift Clock to the alternate output function line of P3.1. Shift Clock is low for 6 clocks, and high for 6 clocks. At every 12-clock cycle the Send is active, the contents of the transmit shift are shifted to the right one position. As data bits shift out to the right, zeros come in from the left. When the MSB of the data byte is at the output position of the shift register, then the ‘1’ that was initially loaded into the 9th position, is just to the left of the MSB, and all positions to the left of that contain zeros. This condition flags the TX Control block to do one last shift and then deactivate Send and set TI. Both of these actions occur at the 10th bit duration after “write to SBUF.” Reception is initiated by the condition REN=1 and RI=0. At the next instruction cycle, the RX Control unit writes the bits 11111110 to the receive shift register, and in the next clock phase activates Receive. Receive enables Shift Clock to the alternate output function of P3.1 pin. Shift Clock makes transitions every 6 clock cycles. When Receive is active, the contents of the receive shift register are shifted to the left one position. The value that comes in from the right is the value that was sampled at the P3.0 pin. As data bits come in from the right, 1s shift out to the left. When the 0 that was initially loaded into the rightmost position arrives at the leftmost position in the shift register, it flags the RX Control block to do one last shift and load SBUF. At the 10th bit duration after the write to SCON that cleared RI, Receive is cleared as RI is set. 12.1.6 More About Mode 1 10 bits are transmitted through TXD, or received through RXD: a start bit (0), 8 data bits (LSB first), and a stop bit (1). On receive, the stop bit goes into RB8 in SCON. The baud rate is determined by the Timer 1 or Timer 2 overflow rate. Figure 12-2 shows a simplified functional diagram of the serial port in Mode 1, and associated timings for transmit/receive. Transmission is initiated by any instruction that uses SBUF as a destination register. The “write to SBUF” signal also loads a 1 into the 9th bit position of the transmit shift register and flags the TX Control unit that a transmission is requested. Transmission actually commences at the instruction cycle following the next rollover in the divide-by-16 counter. (Thus, the bit times are synchronized to the divide-by-16 counter, not to the “write to SBUF” signal.) The transmission begins with activation of Send which puts the start bit at TXD. One bit time later, data is activated, which enables the output bit of the transmit shift register to TXD. The first shift pulse occurs one bit time after that. As data bits shift out to the right, zeros are clocked in from the left. When the MSB of the data byte is at the output position of the shift register, then the 1 that was initially loaded into the 9th position is just to the left of the MSB, and all positions to the left of that contain zeros. This condition flags the TX Control unit to do one last shift and then deactivate Send and set TI. This occurs at the 10th divide-by-16 rollover after “write to SBUF.” Reception is initiated by a detected 1-to-0 transition at RXD. For this purpose RXD is sampled at a rate of 16 times whatever baud rate has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and 1FFH is written into the input shift register. Resetting the divide-by-16 counter aligns its rollovers with the boundaries of the incoming bit times. The 16 states of the counter divide each bit time into 16ths. At the 7th, 8th, and 9th counter states of each bit time, the bit detector samples the value of RXD. The value accepted is the value that was seen in at least 2 of the 3 samples. This is done for noise rejection. If the value accepted during the first bit time is not 0, the receive circuits are reset and the unit goes back to looking for another 1-to-0 transition. This is to provide rejection of 55 MPC82G516A Data Sheet MEGAWIN false start bits. If the start bit proves valid, it is shifted into the input shift register, and reception of the rest of the frame will proceed. As data bits come in from the right, 1s shift out to the left. When the start bit arrives at the leftmost position in the shift register (which in mode 1 is a 9-bit register), it flags the RX Control block to do one last shift, load SBUF and RB8, and set RI. The signal to load SBUF and RB8, and to set RI, will be generated if, and only if, the following conditions are met at the time the final shift pulse is generated: 1. RI = 0, and 2. Either SM2 = 0, or the received stop bit = 1. If either of these two conditions is not met, the received frame is irretrievably lost. If both conditions are met, the stop bit goes into RB8, the 8 data bits go into SBUF, and RI is activated. At this time, whether the above conditions are met or not, the unit goes back to looking for a 1-to-0 transition at the RXD input. 12.1.7 More About Modes 2 and 3 11 bits are transmitted through TXD, or received through RXD: a start bit (0), 8 data bits (LSB first), a programmable 9th data bit, and a stop bit (1). On transmit, the 9th data bit (TB8) can be assigned the value of 0 or 1. On receive, the 9th data bit goes into RB8 in SCON. The baud rate is programmable to either 1/32 or 1/64 the system clock frequency in Mode 2. Mode 3 may have a variable baud rate generated from Timer 1 or Timer 2. Figure 12-3 and Figure 12-4 show a functional diagram of the serial port in Modes 2 and 3. The receive portion is exactly the same as in Mode 1. The transmit portion differs from Mode 1 only in the 9th bit of the transmit shift register. Transmission is initiated by any instruction that uses SBUF as a destination register. The “write to SBUF” signal also loads TB8 into the 9th bit position of the transmit shift register and flags the TX Control unit that a transmission is requested. Transmission commences at the instruction cycle following the next rollover in the divide-by-16 counter. (Thus, the bit times are synchronized to the divide-by-16 counter, not to the “write to SBUF” signal.) The transmission begins with activation of Send, which puts the start bit at TXD. One bit time later, data is activated, which enables the output bit of the transmit shift register to TXD. The first shift pulse occurs one bit time after that. The first shift clocks a 1 (the stop bit) into the 9th bit position of the shift register. Thereafter, only zeros are clocked in. Thus, as data bits shift out to the right, zeros are clocked in from the left. When TB8 is at the output position of the shift register, then the stop bit is just to the left of TB8, and all positions to the left of that contain zeros. This condition flags the TX Control unit to do one last shift and then deactivate Send and set TI. This occurs at the 11th divide-by-16 rollover after “write to SUBF.” Reception is initiated by a detected 1-to-0 transition at RXD. For this purpose RXD is sampled at a rate of 16 times whatever baud rate has been established. When a transition is detected, the divide-by-16 counter is immediately reset, and 1FFH is written to the input shift register. At the 7th, 8th, and 9th counter states of each bit time, the bit detector samples the value of RXD. The value accepted is the value that was seen in at least 2 of the 3 samples. If the value accepted during the first bit time is not 0, the receive circuits are reset and the unit goes back to looking for another 1-to-0 transition. If the start bit proves valid, it is shifted into the input shift register, and reception of the rest of the frame will proceed. As data bits come in from the right, 1s shift out to the left. When the start bit arrives at the leftmost position in the shift register (which in Modes 2 and 3 is a 9-bit register), it flags the RX Control block to do one last shift, load SBUF and RB8, and set RI. The signal to load SBUF and RB8, and to set RI, will be generated if, and only if, the following conditions are met at the time the final shift pulse is generated. 1. RI = 0, and 2. Either SM2 = 0, or the received 9th data bit = 1. If either of these conditions is not met, the received frame is irretrievably lost, and RI is not set. If both conditions are met, the received 9th data bit goes into RB8, and the first 8 data bits go into SBUF. One bit time later, whether the above conditions were met or not, the unit goes back to looking for a 1-to-0 transition at the RXD input. MEGAWIN MPC82G516A Data Sheet 56 Figure 12-1. Serial Port Mode 0 57 MPC82G516A Data Sheet MEGAWIN Figure 12-2. Serial Port Mode 1 MEGAWIN MPC82G516A Data Sheet 58 Figure 12-3. Serial Port Mode 2 59 MPC82G516A Data Sheet MEGAWIN Figure 12-4. Serial Port Mode 3 MEGAWIN MPC82G516A Data Sheet 60 12.2 Enhanced UART Functions In addition to the standard operation, the UART can perform framing error detection by looking for missing stop bits, and automatic address recognition. 12.2.1 Framing Error Detection When used for framing error detection, the UART looks for missing stop bits in the communication. A missing stop bit will set the FE bit in the SCON register. The FE bit shares the SCON.7 bit with SM0 and the function of SCON.7 is determined by SMOD0 bit (PCON.6). If SMOD0 is set then SCON.7 functions as FE. SCON.7 functions as SM0 when SMOD0 is cleared. When SCON.7 functions as FE, it can only be cleared by software. Refer to Figure 12-5. Figure 12-5. UART Framing Error Detection 12.2.2 Automatic Address Recognition Automatic Address Recognition is a feature which allows the UART to recognize certain addresses in the serial bit stream by using hardware to make the comparisons. This feature saves a great deal of software overhead by eliminating the need for the software to examine every serial address which passes by the serial port. This feature is enabled by setting the SM2 bit in SCON. In the 9 bit UART modes, mode 2 and mode 3, the Receive Interrupt flag (RI) will be automatically set when the received byte contains either the “Given” address or the “Broadcast” address. The 9-bit mode requires that the 9th information bit is a 1 to indicate that the received information is an address and not data. Automatic address recognition is shown in Figure 12-6. The 8 bit mode is called Mode 1. In this mode the RI flag will be set if SM2 is enabled and the information received has a valid stop bit following the 8 address bits and the information is either a Given or Broadcast address. Mode 0 is the Shift Register mode and SM2 is ignored. Using the Automatic Address Recognition feature allows a master to selectively communicate with one or more slaves by invoking the Given slave address or addresses. All of the slaves may be contacted by using the Broadcast address. Two special Function Registers are used to define the slave’s address, SADDR, and the address mask, SADEN. SADEN is used to define which bits in the SADDR are to be used and which bits are “don’t care”. The SADEN mask can be logically ANDed with the SADDR to create the “Given” address which the master will use for addressing each of the slaves. Use of the Given address allows multiple slaves to be recognized while excluding others. The following examples will help to show the versatility of this scheme: 61 MPC82G516A Data Sheet MEGAWIN Slave 0 SADDR = 1100 0000 SADEN = 1111 1101 Given = 1100 00X0 Slave 1 SADDR = 1100 0000 SADEN = 1111 1110 Given = 1100 000X In the above example SADDR is the same and the SADEN data is used to differentiate between the two slaves. Slave 0 requires a 0 in bit 0 and it ignores bit 1. Slave 1 requires a 0 in bit 1 and bit 0 is ignored. A unique address for Slave 0 would be 1100 0010 since slave 1 requires a 0 in bit 1. A unique address for slave 1 would be 1100 0001 since a 1 in bit 0 will exclude slave 0. Both slaves can be selected at the same time by an address which has bit 0 = 0 (for slave 0) and bit 1 = 0 (for slave 1). Thus, both could be addressed with 1100 0000. In a more complex system the following could be used to select slaves 1 and 2 while excluding slave 0: Slave 0 SADDR = 1100 0000 SADEN = 1111 1001 Given = 1100 0XX0 Slave 1 SADDR = 1110 0000 SADEN = 1111 1010 Given = 1110 0X0X Slave 2 SADDR = 1110 0000 SADEN = 1111 1100 Given = 1110 00XX In the above example the differentiation among the 3 slaves is in the lower 3 address bits. Slave 0 requires that bit 0 = 0 and it can be uniquely addressed by 1110 0110. Slave 1 requires that bit 1 = 0 and it can be uniquely addressed by 1110 0101. Slave 2 requires that bit 2 = 0 and its unique address is 1110 0011. To select Slaves 0 and 1 and exclude Slave 2 use address 1110 0100, since it is necessary to make bit 2 = 1 to exclude slave 2. The Broadcast Address for each slave is created by taking the logical OR of SADDR and SADEN. Zeros in this result are treated as don’t-cares. In most cases, interpreting the don’t-cares as ones, the broadcast address will be FF hexadecimal. Upon reset SADDR (SFR address 0A9H) and SADEN (SFR address 0B9H) are loaded with 0s. This produces a given address of all “don’t cares” as well as a Broadcast address of all “don’t cares”. This effectively disables the Automatic Addressing mode and allows the micro-controller to use standard 80C51 type UART drivers which do not make use of this feature. Figure 12-6. UART Multiprocessor Communication, Auto Address Recognition MEGAWIN MPC82G516A Data Sheet 62 13 Secondary UART (UART2) The MPC82G516A is equipped with a secondary UART (hereafter, called UART2), which also has four operation modes the same as the first UART except the following differences: (1) The UART2 has no enhanced functions: Framing Error Detection and Auto Address Recognition. (2) The UART2 use the dedicated Baud Rate Timer as its Baud Rate Generator. (3) The UART2 uses port pin P1.3 (S2TXD) and P1.2 (S2RXD) for transmit and receive, respectively. These two UARTs can be operated simultaneously in identical or different modes and communication speeds. 13.1 UART2 Related Registers The following special function registers are related to the operation of the UART2: S2CON (Address=AAH, UART2 Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 S2SM0 S2SM1 S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI S2SM0: UART2 Mode Select Bit 0. S2SM1: UART2 Mode Select Bit 1. S2SM0 S2SM1 0 0 0 1 1 0 1 1 Mode 0 1 2 3 Description Shift Register 8-bit UART 9-bit UART 9-bit UART Baud Rate Fosc/12 Variable Fosc/64 or Fosc/32 Variable Where, Fosc is the system clock frequency. S2SM2: Enables the multiprocessor communication feature in Modes 2 or 3. If SM2=1 then Rl will not be set unless the received 9th data bit (RB8) is ‘1’, indicating an address, and the received byte is a Given or Broadcast Address. In Mode 1, if SM2=1 then Rl will not be activated unless a valid stop bit was received, and the received byte is a Given or Broadcast Address. In Mode 0, SM2 should be ‘0’. S2REN: Enables serial reception. Set by software to enable reception. Cleared by software to disable reception. S2TB8: The 9th data bit that will be transmitted in Modes 2 and 3. Set or cleared by software as desired. S2RB8: In modes 2 and 3, the 9th data bit that was received. In Mode 1, if SM2=0, RB8 is the stop bit that was received. In Mode 0, RB8 is not used. S2Tl: Transmit interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or at the beginning of the stop bit in the other modes, in any serial transmission. Must be cleared by software. S2Rl: Receive interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or halfway through the stop bit time in the other modes, in any serial reception (except see SM2). Must be cleared by software. S2BUF (Address=9AH, UART2 Serial Data Buffer, Reset Value=xxH) 7 (D7) 6 (D6) 5 (D5) 4 (D4) 3 (D3) 2 (D2) 1 (D1) 0 (D0) S2BRT (Address=BAH, UART2 Baud Rate Timer Reload Register, Reset Value=00H) 7 6 5 4 3 2 (Baud Rate Timer Reload Value) 1 0 AUXR2 (Address=A6H, Auxiliary Register 2, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 T0X12 T1X12 URM0X6 S2TR S2SMOD S2TX12 S2CKOE T0CKOE S2TR: UART2 Baud Rate Timer control bit. Set/clear to turn on/off, respectively. S2SMOD: UART2 double baud rate enable bit. When set, the baud rate is doubled. S2TX12: UART2 Baud Rate Timer clock source select. Set to select Fosc, and clear to select Fosc/12. S2CKOE: Set to enable the clock output of UART2 Baud Rate Timer on P3.5. 63 MPC82G516A Data Sheet MEGAWIN AUXR (Address=8EH, Auxiliary Register, Reset Value=0000, xx0xB) 7 6 5 4 3 2 1 0 URTS ADRJ P41ALE P35ALE - - EXTRAM - URTS: 0: Timer 1 or Timer 2 can be used as the Baud Rate Generator in Mode 1 and Mode 3. 1: Timer 1 overflow signal is replaced by the UART2 Baud Rate Timer overflow signal when Timer 1 is selected as the Baud Rate Generator in Mode1 or Mode 3 of the first UART. (Refer to Section 13-3.) 13.2 UART2 Baud Rates 13.2.1 Mode 0 If URM0X6=0, Mode 0 Baud Rate = Fosc 12 If URM0X6=1, Mode 0 Baud Rate = Fosc 2 13.2.2 Mode 1 and Mode 3 Mode 1, 3 Baud Rate = Where, n=12 if S2X12=0, n=1 if S2X12=1. 2 S2SMOD 32 x Fosc n x (256-S2BRT) 13.2.3 Mode 2 Mode 2 Baud Rate = 2 S2SMOD 64 x Fosc MEGAWIN MPC82G516A Data Sheet 64 13.3 UART2 Baud Rate Timer Used by the First UART In the Mode 1 and Mode 3 operation of the first UART, the user can select Timer 1 as the Baud Rate Generator by clearing bits TCLK and RCLK in T2CON register. At this time, if URTS bit (in AUXR register) is set, then Timer 1 overflow signal will be replaced by the overflow signal of the UART2 Baud Rate Timer. In other words, the user can adopt UART2 Baud Rate Timer as the Baud Rate Generator for Mode 1 or Mode 3 of the first UART as long as RCLK=0, TCLK=0 and URTS=1. In this condition, Timer 1 is free for other application. Of course, if UART2 (Mode 1 or Mode 3) is also operated at this time, these two UARTs will have the same baud rates. Figure 13-1. New Baud Rate Source for the 1st UART 65 MPC82G516A Data Sheet MEGAWIN 13.4 Programmable Clock-Out from UART2 Baud Rate Timer Using the UART2 Baud Rate Timer, a 50% duty cycle clock can be programmed to come out from pin S2CKO (P3.5). The clock-out frequency depends on the system clock frequency (Fosc) and the reload value filled in the S2BRT register, as shown in the following formula: Clock-Out Frequency = Where, n=24 if S2X12=0, n=2 if S2X12=1. Fosc n x (256-S2BRT) The UART2 Baud Rate Timer is programmed for the clock-out mode as follows: • Set S2CKOE bit in AUXR2 register. • Determine the 8-bit reload value from the formula and enter it in S2BRT register. • Start the timer by setting the run control bit S2TR in AUXR2 register. Figure 13-2. Programmable Clock-Out from UART2 Baud Rate Timer Fosc 12 "0" "1" D Counter (8 Bits) S2TR S2BRT (8 Bits) Overflow Q Clock-Out (P3.5) CK Q S2X12 MEGAWIN MPC82G516A Data Sheet 66 14 Programmable Counter Array (PCA) The MPC82G516A is equipped with a Programmable Counter Array (PCA), which provides more timing capabilities with less CPU intervention than the standard timer/counters. Its advantages include reduced software overhead and improved accuracy. 14.1 PCA Overview The PCA consists of a dedicated timer/counter which serves as the time base for an array of six compare/ capture modules. Figure 14-1 shows a block diagram of the PCA. Notice that the PCA timer and modules are all 16-bits. If an external event is associated with a module, that function is shared with the corresponding Port 1 pin. If the module is not using the port pin, the pin can still be used for standard I/O. Each of the six modules can be programmed in any one of the following modes: - Rising and/or Falling Edge Capture - Software Timer - High Speed Output - Pulse Width Modulator (PWM) Output All of these modes will be discussed later in detail. However, let's first look at how to set up the PCA timer and modules. Figure 14-1. PCA Block Diagram 16 Bit P1.2/CEX0 Module 0 Module 1 16 Bit Module 2 PCA Timer/Counter Module 3 P1.3/CEX1 P1.4/CEX2 P1.5/CEX3 Module 4 P1.6/CEX4 Module 5 P1.7/CEX5 14.2 PCA Timer/Counter The timer/counter for the PCA is a free-running 16-bit timer consisting of registers CH and CL (the high and low bytes of the count values), as shown in Figure 14-2. It is the common time base for all modules and its clock input can be selected from the following source: 1/12 the system clock frequency, 1/2 the system clock frequency, the Timer 0 overflow, which allows for a range of slower clock inputs to the timer. external clock input, 1-to-0 transitions, on ECI pin (P1.1). Special Function Register CMOD contains the Count Pulse Select bits (CPS1 and CPS0) to specify the PCA timer input. This register also contains the ECF bit which enables an interrupt when the counter overflows. In addition, the user has the option of turning off the PCA timer during Idle Mode by setting the Counter Idle bit (CIDL). This can further reduce power consumption during Idle mode. 67 MPC82G516A Data Sheet MEGAWIN Figure 14-2. PCA Timer/Counter Fosc/12 To PCA Modules Fosc/2 CH CL PCA Interrupt Timer0 Overflow External Input ECI (P1.1) 16-bit Up Counter IDLE CIDL CPS1 CPS0 ECF CMOD CF CR CCF5 CCF4 CCF3 CCF2 CCF1 CCF0 CCON Where, Fosc is the system clock. CMOD (Address=D9H, PCA Counter Mode Register) 7 6 5 4 3 2 1 0 CIDL CIDL: - - - - CPS1 CPS0 ECF PCA counter Idle control. CIDL=0 lets the PCA counter continue functioning during Idle mode. CIDL=1 lets the PCA counter be gated off during Idle mode. CPS1-CPS0: PCA counter clock source select bits. 0 0 Internal clock, Fosc/12 (Fosc is the system clock.) 0 1 Internal clock, Fosc/2 1 0 Timer 0 overflow 1 1 External clock at the ECI pin. ECF: Enable PCA counter overflow interrupt. ECF=1 enables an interrupt when CF bit (in CCON register) is set. The CCON register shown below contains the run control bit for the PCA and the flags for the PCA timer and each module. To run the PCA the CR bit (CCON.6) must be set by software. The PCA is shut off by clearing this bit. The CF bit (CCON.7) is set when the PCA counter overflows and an interrupt will be generated if the ECF bit in the CMOD register is set. The CF bit can only be cleared by software. CCF0 to CCF5 are the interrupt flags for module 0 to module 5, respectively, and they are set by hardware when either a match or a capture occurs. These flags also can only be cleared by software. The PCA interrupt system is shown Figure 14-3. CCON (Address=D8H, PCA Counter Control Register) 7 6 5 4 3 2 1 0 CF CF: CR CCF5 CCF4 CCF3 CCF2 CCF1 CCF0 PCA Counter Overflow flag. Set by hardware when the counter rolls over. CF flag can generate an interrupt if bit ECF in CMOD is set. CF may be set by either hardware or software but can only be cleared by software. PCA Counter Run control bit. Set by software to turn the PCA counter on. Must be cleared by software to turn the PCA counter off. CR: CCF0~CCF5: PCA Module 0 to Module 5 interrupt flags. Set by hardware when a match or capture occurs. Must be cleared by software. MEGAWIN MPC82G516A Data Sheet 68 Figure 14-3. PCA Interrupt System CMOD.0 ECF CF CR CCF5 CCF4 CCF3 CCF2 CCF1 CCF0 CCON PCA Timer/Counter Module 0 Module 1 AUXIE.2 EPCA Module 2 To Interrupt Priority Processing Module 3 IE.7 EA Module 4 Module 5 CCAPMn.0 (n= 0 to 5) ECCF0~ECCF5 14.3 Compare/Capture Modules Each of the six compare/capture modules has a mode register called CCAPMn (n e 0,1,2,3,or 4) to select which function it will perform. Note the ECCFn bit which enables an interrupt to occur when a module's interrupt flag is set. CCAPMn, n=0~5 (Address=DAH~DFH, PCA Module Compare/Capture Registers) 7 6 5 4 3 2 1 0 ECOMn: CAPPn: CAPNn: MATn: ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn Enable Comparator. ECOMn=1 enables the comparator function. Capture Positive. CAPPn=1 enables positive edge capture. Capture Negative. CAPNn=1 enables negative edge capture. Match control. When MATn=1, a match of the PCA counter with this module’s compare/capture Register causes the CCFn bit in CCON to be set. TOGn: Toggle control. When TOGn=1, a match of the PCA counter with this module’s compare/capture register causes the CEXn pin to toggle. PWMn: PWM control. PWMn=1 enables the CEXn pin to be used as a pulse width modulated output. ECCFn: Enable CCFn interrupt. Enables compare/capture flag CCFn in the CCON register to generate an interrupt. Note: The bits CAPNn (CCAPMn.4) and CAPPn (CCAPMn.5) determine the edge on which a capture input will be active. If both bits are set, both edges will be enabled and a capture will occur for either transition. Each module also has a pair of 8-bit compare/capture registers (CCAPnH, CCAPnL) associated with it. These registers are used to store the time when a capture event occurred or when a compare event should occur. When a module is used in the PWM mode, in addition to the above two registers, an extended register PCAPWMn is used to improve the range of the duty cycle of the output. The improved range of the duty cycle 69 MPC82G516A Data Sheet MEGAWIN starts from 0%, up to 100%, with a step of 1/256. PCAPWMn, n=0~5 (Address=F2H~F7H, PWM Mode Auxiliary Registers) 7 6 5 4 3 2 1 0 - - - - - - ECAPnH ECAPnL ECAPnH: Extended 9th bit (MSB bit), associated with CCAPnH to become a 9-bit register used in PWM mode. ECAPnL: Extended 9th bit (MSB bit), associated with CCAPnL to become a 9-bit register used in PWM mode. 14.4 Operation Modes of the PCA Table 14-1 shows the CCAPMn register settings for the various PCA functions. Table 14-1. PCA Module Modes ECOMn CAPPn CAPNn MATn 0 X X X 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 TOGn PWMn ECCFn 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 X X X X X 0 No operation 16-bit capture by a positive-edge trigger on CEXn 16-bit capture by a negative-edge trigger on CEXn 16-bit capture by a transition on CEXn 16-bit Software Timer 16-bit High Speed Output 8-bit Pulse Width Modulator (PWM) Module Function 14.4.1 Capture Mode To use one of the PCA modules in the capture mode, either one or both of the bits CAPN and CAPP for that module must be set. The external CEX input for the module is sampled for a transition. When a valid transition occurs the PCA hardware loads the value of the PCA counter registers (CH and CL) into the module’s capture registers (CCAPnL and CCAPnH). If the CCFn and the ECCFn bits for the module are both set, an interrupt will be generated. Figure 14-4. PCA Capture Mode MEGAWIN MPC82G516A Data Sheet 70 14.4.2 16-bit Software Timer Mode The PCA modules can be used as software timers by setting both the ECOM and MAT bits in the module’s CCAPMn register. The PCA timer will be compared to the module’s capture registers, and when a match occurs an interrupt will occur if the CCFn and the ECCFn bits for the module are both set. Figure 14-5. PCA Software Timer Mode 14.4.3 High Speed Output Mode In this mode the CEX output associated with the PCA module will toggle each time a match occurs between the PCA counter and the module’s capture registers. To activate this mode, the TOG, MAT and ECOM bits in the module’s CCAPMn register must be set. Figure 14-6. PCA High Speed Output Mode 71 MPC82G516A Data Sheet MEGAWIN 14.4.4 PWM Mode All of the PCA modules can be used as PWM outputs. The frequency of the output depends on the clock source for the PCA timer. All of the modules will have the same frequency of output because they all share the PCA timer. The duty cycle of each module is determined by the module’s capture register CCAPnL and the extended 9th bit, ECAPnL. When the 9-bit value of { 0, [CL] } is less than the 9-bit value of { ECAPnL, [CCAPnL] } the output will be low, and if equal to or greater than the output will be high. When CL overflows from 0xFF to 0x00, { ECAPnL, [CCAPnL] } is reloaded with the value of { ECAPnH, [CCAPnH] }. This allows updating the PWM without glitches. The PWMn and ECOMn bits in the module’s CCAPMn register must be set to enable the PWM mode. Using the 9-bit comparison, the duty cycle of the output can be improved to really start from 0%, and up to 100%. The formula for the duty cycle is: Duty Cycle = 1 – { ECAPnH, [CCAPnH] } / 256. Where, [CCAPnH] is the 8-bit value of the CCAPnH register, and ECAPnH (bit-1 in the PCAPWMn register) is 1bit value. So, { ECAPnH, [CCAPnH] } forms a 9-bit value for the 9-bit comparator. For examples, a. If ECAPnH=0 & CCAPnH=0x00 (i.e., 0x000), the duty cycle is 100%. b. If ECAPnH=0 & CCAPnH=0x40 (i.e., 0x040) the duty cycle is 75%. c. If ECAPnH=0 & CCAPnH=0xC0 (i.e., 0x0C0), the duty cycle is 25%. d. If ECAPnH=1 & CCAPnH=0x00 (i.e., 0x100), the duty cycle is 0%. Figure 14-7. PCA PWM Mode MEGAWIN MPC82G516A Data Sheet 72 15 Serial Peripheral Interface (SPI) The MPC82G516A provides a high-speed serial communication interface, the SPI interface. SPI is a full-duplex, high-speed and synchronous communication bus with two operation modes: Master mode and Slave mode. Up to 3 Mbps can be supported in either Master or Slave mode under a 12MHz system clock. It has a Transfer Completion Flag (SPIF) and Write Collision Flag (WCOL) in the SPI status register (SPSTAT). Figure 15-1. SPI Block Diagram The SPI interface has four pins: MISO (P1.6), MOSI (P1.5), SPICLK (P1.7) and /SS (P1.4): • SPICLK, MOSI and MISO are typically tied together between two or more SPI devices. Data flows from master to slave on the MOSI pin (Master Out / Slave In) and flows from slave to master on the MISO pin (Master In / Slave Out). The SPICLK signal is output in the master mode and is input in the slave mode. If the SPI system is disabled, i.e., SPEN (SPCTL.6) = 0, these pins function as normal I/O pins. • /SS is the optional slave select pin. In a typical configuration, an SPI master asserts one of its port pins to select one SPI device as the current slave. An SPI slave device uses its /SS pin to determine whether it is selected. The /SS is ignored if any of the following conditions are true: - If the SPI system is disabled, i.e. SPEN (SPCTL.6) = 0 (reset value). - If the SPI is configured as a master, i.e., MSTR (SPCTL.4) = 1, and P1.4 (/SS) is configured as an output. - If the /SS pin is ignored, i.e. SSIG (SPCTL.7) bit = 1, this pin is configured for port functions. Note that even if the SPI is configured as a master (MSTR=1), it can still be converted to a slave by driving the /SS pin low (if SSIG=0). Should this happen, the SPIF bit (SPSTAT.7) will be set. (See Section 15.5: Mode change on /SS-pin) The following special function registers are related to the SPI operation: 73 MPC82G516A Data Sheet MEGAWIN SPCTL (Address=85H, SPI Control Register, Reset Value=0000,0100B) 7 6 5 4 3 2 1 0 SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 SSIG: /SS is ignored If SSIG=1, MSTR decides whether the device is a master or slave. If SSIG=0, the /SS pin decides whether the device is a master or slave. SPEN: SPI enable If SPEN=1, the SPI is enabled. If SPEN=0, the SPI interface is disabled and all SPI pins will be general-purpose I/O ports. DORD: SPI data order 1 : The LSB of the data byte is transmitted first. 0 : The MSB of the data byte is transmitted first. MSTR: Master/Slave mode select CPOL: SPI clock polarity select 1: SPICLK is high when Idle. The leading edge of SPICLK is the falling edge and the trailing edge is the rising edge. 0: SPICLK is low when Idle. The leading edge of SPICLK is the rising edge and the trailing edge is the falling edge. CPHA: SPI clock phase select 1: Data is driven on the leading edge of SPICLK, and is sampled on the trailing edge. 0: Data is driven when /SS pin is low (SSIG=0) and changes on the trailing edge of SPICLK. Data is sampled on the leading edge of SPICLK. (Note : If SSIG=1, CPHA must not be 1, otherwise the operation is not defined.) SPR1-SPR0: SPI clock rate select (in master mode) 00 : Fosc/4 01 : Fosc/16 10 : Fosc/64 11 : Fosc/128 (Where, Fosc is the system clock.) SPSTAT (Address=84H, SPI Status Register, Reset Value=00xx,xxxxB) 7 6 5 4 3 2 1 0 SPIF WCOL - - - - - - SPIF: SPI transfer completion flag When a serial transfer finishes, the SPIF bit is set and an interrupt is generated if SPI interrupt is enabled. If /SS pin is driven low when SPI is in master mode with SSIG=0, SPIF will also be set to signal the “mode change”. The SPIF is cleared in software by writing ‘1’ to this bit. WCOL: SPI write collision flag. The WCOL bit is set if the SPI data register, SPDAT, is written during a data transfer (see Section 15.6: Write Collision). The WCOL flag is cleared in software by writing ‘1’ to this bit. SPDAT (Address=86H, SPI Data Register, Reset Value=0000,0000B) 7 (MSB) 6 5 4 3 2 1 0 (LSB) SPDAT has two physical buffers for writing to and reading from during transmit and receive, respectively. MEGAWIN MPC82G516A Data Sheet 74 15.1 Typical SPI Configurations 15.1.1 Single Master & Single Slave For the master: any port pin, including P1.4 (/SS), can be used to drive the /SS pin of the slave. For the slave: SSIG is ‘0’, and /SS pin is used to determine whether it is selected. Figure 15-2. SPI single master single slave configuration 15.1.2 Dual Device, where either can be a Master or a Slave Two devices are connected to each other and either device can be a master or a slave. When no SPI operation is occurring, both can be configured as masters with MSTR=1, SSIG=0 and P1.4 (/SS) configured in quasibidirectional mode. When any device initiates a transfer, it can configure P1.4 as an output and drive it low to force a “mode change to slave” in the other device. (See Section 15.5: Mode change on /SS-pin) Figure 15-3. SPI dual device configuration, where either can be a master or a slave 75 MPC82G516A Data Sheet MEGAWIN 15.1.3 Single Master & Multiple Slaves For the master: any port pin, including P1.4 (/SS), can be used to drive the /SS pins of the slaves. For all the slaves: SSIG is ‘0’, and /SS pin are used to determine whether it is selected. Figure 15-4. SPI single master multiple slaves configuration MEGAWIN MPC82G516A Data Sheet 76 15.2 Configuring the SPI Table 15-1 shows configuration for the master/slave modes as well as usages and directions for the modes. Table 15-1. SPI Master and Slave Selection SPEN 0 1 1 SSIG X 0 0 (SPCTL.6) (SPCTL.7) /SS -pin X 0 1 MSTR (SPCTL.4) Mode MISO -pin MOSI -pin input input input SPICLK -pin input input input Remarks P1.4~P1.7 are used as general port pins. Selected as slave. Not selected. Mode change to slave if /SS pin is driven low, and MSTR will be cleared to ‘0’ by H/W automatically. MOSI and SPICLK are at high impedance to avoid bus contention when the Master is idle. MOSI and SPICLK are push-pull when the Master is active. X 0 0 SPI disabled input Salve (selected) output Hi-Z Slave (not selected) 1 0 0 1 0 Slave (by mode change) output input input Master 1 0 1 1 (idle) Hi-Z input output output input input output Hi-Z Master (active) output input output 1 1 1 1 X X 0 1 Slave Master “X” means “don’t care”. 15.3 Additional Considerations for a Slave When CPHA is 0, SSIG must be 0 and /SS pin must be negated and reasserted between each successive serial byte transfer. Note the SPDAT register cannot be written while /SS pin is active (low), and the operation is undefined if CPHA is 0 and SSIG is 1. When CPHA is 1, SSIG may be 0 or 1. If SSIG=0, the /SS pin may remain active low between successive transfers (can be tied low at all times). This format is sometimes preferred for use in systems having a single fixed master and a single slave configuration. 15.4 Additional Considerations for a Master In SPI, transfers are always initiated by the master. If the SPI is enabled (SPEN=1) and selected as master, writing to the SPI data register (SPDAT) by the master starts the SPI clock generator and data transfer. The data will start to appear on MOSI about one half SPI bit-time to one SPI bit-time after data is written to SPDAT. Before starting the transfer, the master may select a slave by driving the /SS pin of the corresponding device low. Data written to the SPDAT register of the master is shifted out of MOSI pin of the master to the MOSI pin of the slave. And, at the same time the data in SPDAT register of the selected slave is shifted out on MISO pin to the MISO pin of the master. After shifting one byte, the SPI clock generator stops, setting the transfer completion flag (SPIF) and an interrupt will be created if the SPI interrupt is enabled. The two shift registers in the master CPU and slave CPU can be considered as one distributed 16-bit circular shift register. When data is shifted from the master to the slave, data is also shifted in the opposite direction simultaneously. This means that during one shift cycle, data in the master and the slave are interchanged. 77 MPC82G516A Data Sheet MEGAWIN 15.5 Mode Change on /SS-pin If SPEN=1, SSIG=0, MSTR=1 and /SS pin=1, the SPI is enabled in master mode. In this case, another master can drive this pin low to select this device as an SPI slave and start sending data to it. To avoid bus contention, the SPI becomes a slave. As a result of the SPI becoming a slave, the MOSI and SPICLK pins are forced to be an input and MISO becomes an output. The SPIF flag in SPSTAT is set, and if the SPI interrupt is enabled, an SPI interrupt will occur. User software should always check the MSTR bit. If this bit is cleared by a slave select and the user wants to continue to use the SPI as a master, the user must set the MSTR bit again, otherwise it will stay in slave mode. 15.6 Write Collision The SPI is single buffered in the transmit direction and double buffered in the receive direction. New data for transmission can not be written to the shift register until the previous transaction is complete. The WCOL (SPSTAT.6) bit is set to indicate data collision when the data register is written during transmission. In this case, the data currently being transmitted will continue to be transmitted, but the new data, i.e., the one causing the collision, will be lost. While write collision is detected for both a master or a slave, it is uncommon for a master because the master has full control of the transfer in progress. The slave, however, has no control over when the master will initiate a transfer and therefore collision can occur. For receiving data, received data is transferred into a parallel read data buffer so that the shift register is free to accept a second character. However, the received character must be read from the Data Register (SPDAT) before the next character has been completely shifted in. Otherwise. the previous data is lost. WCOL can be cleared in software by writing ‘1’ to the bit. 15.7 SPI Clock Rate Select The SPI clock rate selection (in master mode) uses the SPR1 and SPR0 bits in the SPCTL register, as shown in Table 15-2. Table 15-2. SPI Serial Clock Rates SPR1 SPR0 SPI Clock Rate @ Fosc=12MHz Fosc divided by 4 16 64 128 0 0 3 MHz 0 1 750 KHz 1 0 187.5 KHz 1 1 93.75 KHz Where, Fosc is the system clock. MEGAWIN MPC82G516A Data Sheet 78 15.8 Data Mode Clock Phase Bit (CPHA) allows the user to set the edges for sampling and changing data. The Clock Polarity bit, CPOL, allows the user to set the clock polarity. The following figures show the different settings of Clock Phase Bit, CPHA. Figure 15-5. SPI Slave Transfer Format with CPHA=0 Figure 15-6. Slave Transfer Format with CPHA=1 79 MPC82G516A Data Sheet MEGAWIN Figure 15-7. SPI Master Transfer Format with CPHA=0 Figure 15-8. SPI Master Transfer Format with CPHA=1 MEGAWIN MPC82G516A Data Sheet 80 16 A/D Converter The MPC82G516A has one 10-bit, 8-channel multiplexed inputs analog-to-digital converter, which is implemented with successive approximation register (SAR) approach. Figure 16-1 shows the block diagram of the A/D converter. The eight multiplexed analog inputs share input pins with Port 1. The multiplexed input has a sample and hold circuit to feed the input analog voltage to the comparator input, and the output of the comparator is fed to the SAR for successive approximating operation. Figure 16-1. ADC Block Diagram 16.1 ADC Control Registers ADCTL (Address=C5H, ADC Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 ADCON SPEED1 SPEED0 ADCI ADCS CHS2 CHS1 CHS0 ADCON: Clear to turn off the ADC block. Set to turn on the ADC block. SPEED1 and SPEED0: A-to-D conversion speed selection bits. (0,0): 1080 clock cycles are taken for a conversion. (0,1): 540 clock cycles are taken for a conversion. (1,0): 360 clock cycles are taken for a conversion. (1,1): 270 clock cycles are taken for a conversion. Note 1 clock cycle time is equal to 1/Fosc. ADCS: ADC start bit. Setting this bit by software starts an A/D conversion. On completion of the conversion, the ADC hardware will clear ADCS and set the ADCI. ADCS cannot be cleared by software. A new conversion may not be started while either ADCS or ADCI is high. ADCI: ADC interrupt flag. This flag is set when an A/D conversion is completed. An interrupt is invoked if it is enabled. The flag should be cleared by software. CHS2, CHS1 and CHS0: Multiplexed input channel selection bits. (0,0,0): select AIN0 (P1.0) as the analog input (0,0,1): select AIN1 (P1.1) as the analog input (0,1,0): select AIN2 (P1.2) as the analog input (0,1,1): select AIN3 (P1.3) as the analog input (1,0,0): select AIN4 (P1.4) as the analog input 81 MPC82G516A Data Sheet MEGAWIN (1,0,1): select AIN5 (P1.5) as the analog input (1,1,0): select AIN6 (P1.6) as the analog input (1,1,1): select AIN7 (P1.7) as the analog input AUXR (Address=8EH, Auxiliary Register, Reset Value=0000,xx0xB) 7 6 5 4 3 2 1 0 URTS ADRJ P41ALE P35ALE - - EXTRAM - ADRJ: 0: The most significant 8 bits of conversion result are saved in ADCH[7:0], while the least significant 2 bits in ADCL[1:0]. 1: The most significant 2 bits of conversion result are saved in ADCH[1:0], while the least significant 8 bits in ADCL[7:0]. If ADRJ=0 ADCH (Address=C6H, ADC Result High-byte Register, Reset Value=xxH) 7 (B9) 7 6 (B8) 6 5 (B7) 5 4 (B6) 4 3 (B5) 3 2 (B4) 2 1 (B3) 1 (B1) 0 (B2) 0 (B0) ADCL (Address=BEH, ADC Result Low-byte Register, Reset Value=xxH) If ADRJ=1 ADCH (Address=C6H, ADC Result High-byte Register, Reset Value=xxH) 7 6 5 4 3 2 1 (B9) 1 (B1) 0 (B8) 0 (B0) - - - - - 7 (B7) 6 (B6) 5 (B5) 4 (B4) 3 (B3) 2 (B2) ADCL (Address=BEH, ADC Result Low-byte Register, Reset Value=xxH) 16.2 ADC Operation For consideration of pin-compatible with the standard 8051 MCU, the ADC hardware cannot have separated input pins for internal positive (Vref+) and negative (Vref-) reference voltages. The Vref+ and Vref- inputs have been internally tied to VDD pin and ground, respectively. So, the full-scale voltage Vref+ – Vref- becomes VDD. The A/D conversion result can be calculated from the following formula: ADC Result = 1024 x - VrefVref+ - VrefVin = AINx Analog Input Voltage VDD Voltage Where, Vin is the analog input voltage and x = 0~7 (any pin of AIN0~AIN7). The input analog voltage should be between Vref+ and Vref-, i.e., VDD and ground. For input voltages between Vref- and Vref- + 1/2 LSB, the 10-bit conversion result will be 00,0000,0000B = 000H. For input voltages between Vref+ – 3/2 LSB and Vref+, the conversion result will be 11,1111,1111B = 3FFH. Where: 1 LSB = Vref+ - Vref- 1024 = VDD 1024 MEGAWIN MPC82G516A Data Sheet 82 Prior to using the ADC function, the user should: 1) 2) 3) 4) 5) Turn on the ADC hardware by setting the ADCON bit, Configure the conversion speed by bits SPEED1 and SPEED0, Select the analog input channel by bits CHS1 and CHS0, Configure the selected input (shared with P1) to the Input-Only mode by P1M0 and P1M1 registers, and Configure ADC result arrangement using ADRJ bit. Now, user can set the ADCS bit to start the A-to-D conversion. The conversion time is controlled by bits SPEED1 and SPEED0. Once the conversion is completed, the hardware will automatically clear the ADCS bit, set the interrupt flag ADCI and load the 10 bits of conversion result into ADCH and ADCL (according to ADRJ bit) simultaneously. As described above, the interrupt flag ADCI, when set by hardware, shows a completed conversion. Thus two ways may be used to check if the conversion is completed: (1) Always polling the interrupt flag ADCI by software; (2) Enable the ADC interrupt by setting bits EADC (in AUXIE register) and EA (in IE register), and then the CPU will jump into its Interrupt Service Routine when the conversion is completed. Regardless of (1) or (2), the ADCI flag should be cleared by software before next conversion. 16.3 Sample Code for ADC start: ;... ;... MOV ADCTL,#0E2h ;ADCON=1, turn on ADC hardware ;(SPEED1,SPEED0)=(1,1), Conv. Time= 270 clock cycles ;select AIN0 (P1.2) as analog input ;P1M0,bit2=1 ;configure P1.2 as Input-Only Mode ;P1M1,bit2=0 ; ;ADRJ=0: ADCH contains B9~B2; ADCL contains B1,B0 ORL ANL ANL P1M0,#00000100B P1M1,#11111011B AUXR,#10111111B ;now, suppose the analog input is ready on AIN2 (P1.2) ORL wait_loop: MOV JNB ADCTL,#00001000B ;ADCS=1 ACC,ADCTL ACC.4,wait_loop Start A-to-D conversion ;wait until ADCI=1 conversion completed ;now, the 10-bit ADC result is in the ADCH and ADCL. ;... ;... 83 MPC82G516A Data Sheet MEGAWIN 16.4 Notes on ADC Several notes on ADC are listed below. 16.4.1 A/D Conversion Time The user can select the appropriate conversion speed according to the frequency of the analog input signal. For example, if Fosc=10MHz and a conversion speed of 270 clock cycles is selected, then the frequency of the analog input should be no more than 37KHz to maintain the conversion accuracy. (Conversion time = 1/10MHz x 270 = 27us, so the conversion speed = 1/27us = 37KHz.) 16.4.2 I/O Pin Used with ADC Function The analog input pins used with for the A/D converters also have its I/O port ‘s digital input and output function. In order to give the best analog performance, a pin that is being used with the ADC should has its digital output and input disabled. It is done by putting the port pin into the input-only mode as described in the Port Configurations section. 16.4.3 Idle and Power-Down Mode In Idle mode and Power-Down mode, the ADC does not function. If the A/D is turned on, it will consume a little power. So, power consumption can be reduced by turning off the ADC hardware (ADCON=0) before entering Idle mode and Power-Down mode. 16.4.4 Requirements on VDD Power Supply As previously described, the Vref+ and Vref- are internally tied to VDD pin and ground, respectively, and the operating voltage on VDD pin may be 2.7V~5.5V (in 5V application system) or 2.4V~3.6V (in 3.3V application system), so the full-scale voltage, Vref+ – Vref- = VDD, is not fixed. However, the conversion formula is kept unchanged. That is, the same Vin will get a different conversion result when the VDD voltage is changed, and therefore the VDD must be kept fixed for an absolute conversion. The user should pay attention to it! Since the VDD functions as the positive reference Vref+, the user should keep VDD as pure as possible in order to achieve the best ADC performance. MEGAWIN MPC82G516A Data Sheet 84 17 Keypad Interrupt The Keypad Interrupt function is intended primarily to allow a single interrupt to be generated when Port 2 is equal to or not equal to a certain pattern. This function can be used for bus address recognition or keypad recognition. There are three SFRs used for this function. The Keypad Interrupt Mask Register (KBMASK) is used to define which input pins connected to Port 2 are enabled to trigger the interrupt. The Keypad Pattern Register (KBPATN) is used to define a pattern that is compared to the value of Port 2. The Keypad Interrupt Flag (KBIF) in the Keypad Interrupt Control Register (KBCON) is set by hardware when the condition is matched. An interrupt will be generated if it has been enabled by setting the EKBI bit in AUXIE register and EA=1. The PATN_SEL bit in the Keypad Interrupt Control Register (KBCON) is used to define “equal” or “not-equal” for the comparison. In order to use the Keypad Interrupt as the “Keyboard” Interrupt, the user needs to set KBPATN=0xFF and PATN_SEL=0 (not equal), then any key connected to Port 2 which is enabled by KBMASK register will cause the hardware to set the interrupt flag KBIF and generate an interrupt if it has been enabled. The interrupt may wake up the CPU from Idle mode or Power-Down mode. This feature is particularly useful in handheld, battery powered systems that need to carefully manage power consumption but also need to be convenient to use. The following special function registers are related to the KBI operation: KBPATN (Address=D5H, Keypad Pattern Register, Reset Value=1111,1111B) 7 6 KBPATN.7 KBPATN.6 5 KBPATN.5 4 KBPATN.4 3 KBPATN.3 2 KBPATN.2 1 KBPATN.1 0 KBPATN.0 KBPATN.7~0: The keypad pattern, reset value is 0xFF. KBCON (Address=D6H, Keypad Control Register, Reset Value=xxxx,xx00B) 7 6 5 4 3 2 1 PATN_SEL 0 KBIF - - - - - - PATN_SEL: Pattern Matching Polarity selection. 1: The keypad input has to be equal to the user-defined keypad pattern in KBPATN to generate the interrupt. 0: The keypad input has to be not equal to user-defined keypad pattern in KBPATN to generate the interrupt. KBIF: Keypad Interrupt Flag. Set when Port 2 matches user defined conditions specified in KBPATN, KBMASK, and PATN_SEL. Needs to be cleared by software by writing “0”. KBMASK (Address=D7H, Keypad Interrupt Mask Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 KBMASK.7 KBMASK.6 KBMASK.5 KBMASK.4 KBMASK.3 KBMASK.2 KBMASK.1 KBMASK.0 KBMASK.7: When set, enables P2.7 as a cause of a Keypad Interrupt (KBI7). KBMASK.6: When set, enables P2.6 as a cause of a Keypad Interrupt (KBI6). KBMASK.5: When set, enables P2.5 as a cause of a Keypad Interrupt (KBI5). KBMASK.4: When set, enables P2.4 as a cause of a Keypad Interrupt (KBI4). KBMASK.3: When set, enables P2.3 as a cause of a Keypad Interrupt (KBI3). KBMASK.2: When set, enables P2.2 as a cause of a Keypad Interrupt (KBI2). KBMASK.1: When set, enables P2.1 as a cause of a Keypad Interrupt (KBI1). KBMASK.0: When set, enables P2.0 as a cause of a Keypad Interrupt (KBI0). 85 MPC82G516A Data Sheet MEGAWIN 18 Watchdog Timer Watchdog Timer (WDT) is intended as a recovery method in situations (such as power noise/glitches and electrostatic discharge) where the CPU may be subjected to software upset. When software upset happens, the WDT will protects the system from incorrect code execution by causing a system reset. The WDT consists of a 15-bit free-running counter, an 8-bit prescaler and a control register (WDTCR). Figure 18-1 shows the WDT block diagram. Figure 18-1. WDT Block Diagram 18.1 WDT Control Register WDTCR (Address=E1H, Watch-Dog-Timer Control Register, Power-on Reset Value=0x00,0000B) 7 6 5 4 3 2 1 0 WRF - ENW CLRW WIDL PS2 PS1 PS0 WRF: WDT reset flag. When WDT overflows, this bit is set by H/W. It should be cleared by software. ENW: WDT enable bit. Set to enable WDT. (Note: Once set, this bit can only be cleared by power-on reset.) CLRW: WDT clear bit. Writing “1” to this bit will clear the 15-bit WDT counter to 0000H. Note this bit has no need to be cleared by writing “0”. WIDL: WDT in Idle mode. Set this bit to let WDT keep counting while the MCU is in the Idle mode. PS2~PS0: Prescaler select bits. PS2 PS1 PS0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Prescaler value 2 4 8 16 32 64 128 256 MEGAWIN MPC82G516A Data Sheet 86 18.2 WDT Operation The WDT is by default disabled after power-on reset. To enable the WDT, the user must set the ENW bit. When the WDT is enabled, the user needs to service it by setting the CLW bit to clear the WDT counter and avoid an overflow. The 15-bit WDT counter will overflow when it reaches 32767 (7FFFH) and this will reset the device. And, when the WDT is enabled, it will increment every 12 system clock cycles (12/Fosc) while the oscillator is running. This means the user must clear the WDT counter at least every 32767 x12 system cock cycles. The WDT in this device is one-time enabled. The so-called “one-time enabled” means: Once the WDT is enabled by setting ENW bit, there is no way to disable it except through power-on reset, which will clear the ENW bit. And, the WDTCR register will keep the previous programmed value unchanged after any resets (including hardware reset, software reset and WDT reset) except the power-on reset. For example, if the WDTCR is 0x2D, it still keeps at 0x2D rather than 0x00 after resets. Only power-on reset can initialize it to 0x00. In other words, the WDT can only be disabled by a power-on reset. Thus it is called “one-time enabled” WDT. The WDT overflow period is determined by the formula: 215 x Prescaler x (12 / Fosc) Table 18-1 shows the WDT overflow period for MCU running at 6/12/24MHz. The period is the maximum interval for the user to clear the WDT to prevent from chip reset. Table 18-1. WDT Overflow Period PS2 PS1 PS0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Prescaler value 2 4 8 16 32 64 128 256 Fosc=6MHz 131.072 ms 262.144 ms 524.288 ms 1.048 s 2.097 s 4.194 s 8.389 s 16.778 s Fosc=12MHz 65.536 ms 131.072 ms 262.144 ms 524.288 ms 1.048 s 2.097 s 4.194 s 8.389 s Fosc=24MHz 32.768 ms 65.536 ms 131.072 ms 262.144 ms 524.288 ms 1.048 s 2.097 s 4.194 s 18.3 Sample Code for WDT Condition: WDT Overflow Period = 1.048 seconds @Fosc=12MHz WDTCR_buf DATA start: ;... MOV ORL ANL MOV ORL MOV main_loop: ORL MOV ;... ;... JMP WDTCR_buf,#00h ;initialize the WDTCR buffer 30h ;declare a buffer for WDTCR register ;(because WDTCR is a Write-only register) WDTCR_buf,#04h ;PS2=1 WDTCR_buf,#0FCh ;PS1=0,PS0=0 WDTCR,WDTCR_buf ;write to WDTCR (PS2,PS1,PS0)=(1,0,0), prescaler=32 WDTCR_buf,#20h ;ENW=1 WDTCR,WDTCR_buf ;write to WDTCR register WDTCR_buf,#10h ;CLRW=0 WDTCR,WDTCR_buf ;write to WDTCR register enable WDT clear WDT counter main_loop 87 MPC82G516A Data Sheet MEGAWIN 18.4 WDT during Power-Down and Idle In Power-down mode the oscillator stops, which means the WDT also stops. While in Power-down mode the user does not need to service the WDT. There are 3 methods of exiting Power-down mode: by a hardware reset, via an external interrupt (/INT0~/INT3) or Keypad interrupt which is enabled prior to entering Power-down mode. When Power-down is exited with hardware reset, servicing the WDT should occur as it normally should whenever the device is reset. Exiting Power-down with an external interrupt or Keypad interrupt is significantly different. When the interrupt is serviced just after exiting the power-down, to prevent the WDT from resetting the device, it is suggested that the WDT counter should be cleared during the interrupt service routine. Of course, to ensure that the WDT does not overflow within a little time after exiting of power-down, it is better to clear the WDT counter just before entering power-down. In the Idle mode, the oscillator continues to run. The user may either set the WIDL bit to have WDT keep working or clear the WIDL bit to have WDT stop while the MCU is in the Idle mode. For the former case, to prevent the WDT from overflowing while in Idle mode, the user should always set up a timer that will periodically exit Idle, service the WDT, and re-enter Idle mode. 18.5 WDT Initialized by Hardware Option Besides being initialized by software, the WDTCR register can also be automatically initialized at power-up by the hardware options HWENW, HWWIDL and HWPS[2:0], which should be programmed by a universal Writer or Programmer, as described below. (Refer to Section 25: MCU’s Hardware Option.) If HWENW is programmed to “enabled”, then hardware will automatically do the following initialization for the WDTCR register at power-up: (1) set ENW bit, (2) load HWWIDL into WIDL bit, and (3) load HWPS[2:0] into PS[2:0] bits. MEGAWIN MPC82G516A Data Sheet 88 19 Interrupt System The MPC82G516A has 14 interrupt sources with a four-level interrupt structure. There are several SFRs associated with the four-level interrupt. They are the IE, IP, IPH, AUXIE, AUXIP, AUXIPH, XICON and TCON. The IPH (Interrupt Priority High) and AUXIPH (Auxiliary Interrupt Priority High) registers make the four-level interrupt structure possible. The four priority level interrupt structure allows great flexibility in handling these interrupt sources. 19.1 Interrupt Sources Table 19-1 lists all the interrupt sources. The ‘Request Bits’ are the interrupt flags that will generate an interrupt if it is enabled by setting the ‘Enable Bit’. Of course, the global enable bit EA (in IE register) should have been set previously. The ‘Request Bits’ can be set or cleared by software, with the same result as though it had been set or cleared by hardware. That is, interrupts can be generated or pending interrupts can be cancelled in software. The ‘Priority Bits’ determine the priority level for each interrupt. The ‘Priority within Level’ is the polling sequence used to resolve simultaneous requests of the same priority level. The ‘Vector Address’ is the entry point of an interrupt service routine in the program memory. Figure 19-1 shown the interrupt system. Each of these interrupts will be briefly described in the following sections. Table 19-1. Interrupt Sources No #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 Source Name External Interrupt, INT0 Timer 0 External Interrupt, INT1 Timer 1 Serial Port Timer 2 External Interrupt, INT2 External Interrupt, INT3 SPI ADC PCA Brownout Detection UART2 Keypad Interrupt Enable Bit EX0 ET0 EX1 ET1 ES ET2 EX2 EX3 ESPI EADC EPCA EBD ES2 EKB Request Bits IE0 TF0 IE1 TF1 RI, TI TF2, EXF2 IE2 IE3 SPIF ADCI CF, CCFn (n=0~5) OPF, CPF S2RI, S2TI KBIF Priority Bits PX0H, PX0 PT0H, PT0 PX1H, PX1 PT1H, PT1 PSH, PS PT2H, PT2 PX2H, PX2 PX3H, PX3 PSPIH, PSPI PADCH, PADC PPCAH, PPCA PBDH, PBD PS2H, PS2 PKBH, PKB Priority within Level (Highest) Vector Address 0003H 000BH 0013H 001BH 0023H 002BH 0033H 003BH 0043H 004BH 0053H 005BH 0063H 006BH . . . . . . . . . . . . (Lowest) 89 MPC82G516A Data Sheet MEGAWIN Figure 19-1. Interrupt System Interrupt Enable/Disable /INT0 0 1 IT0 Interrupt Priority Control IE0 EX0 TF0 /INT1 0 1 IT1 ET0 IE1 EX1 TF1 RI TI TF2 EXF2 ET1 ES ET2 /INT2 0 1 IT2 IE2 EX2 /INT3 0 1 IT3 IE3 EX3 Nested Four-Level Priority Precessing SPIF ADCI CF ECF CCF0 ECCF0 CCF1 ECCF1 CCF2 ECCF2 CCF3 ECCF3 CCF4 ECCF4 CCF5 ECCF5 OPF CPF S2RI S2TI KBIF ESPI EADC EPCA EBD ES2 EKB Local Enable/ Disable EA Global Enable/Disable MEGAWIN MPC82G516A Data Sheet 90 19.2 SFRs Associated with Interrupts The Special Function Registers associated with the interrupts are shown below. IE (Address=A8H, Interrupt Enable Register, Reset Value=0x00,0000B) 7 6 5 4 3 2 1 0 EA - ET2 ES ET1 EX1 ET0 EX0 EA: Global disable bit. If EA = 0, all interrupts are disabled. If EA = 1, each interrupt can be individually enabled or disabled by setting or clearing its enable bit. ET2: Timer 2 interrupt enable bit. ES: Serial Port interrupt enable bit. ET1: Timer 1 interrupt enable bit. EX1: External interrupt 1 enable bit. ET0: Timer 0 interrupt enable bit. EX0: External interrupt 0 enable bit. IP (Address=B8H, Interrupt Priority Register, Reset Value=xx00,0000B) 7 6 5 4 3 2 1 0 - - PT2 PS PT1 PX1 PT0 PX0 PT2: Timer 2 interrupt priority bit. PS: Serial Port interrupt priority bit. PT1: Timer 1 interrupt priority bit. PX1: External interrupt 1 priority bit. PT0: Timer 0 interrupt priority bit. PX0: External interrupt 0 priority bit. IPH (Address=B7H, Interrupt Priority High Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 PX3H PX2H PT2H PSH PT1H PX1H PT0H PX0H PX3H: External interrupt 3 priority bit, high. PX2H: External interrupt 2 priority bit, high. PT2H: Timer 2 interrupt priority bit, high. PSH: Serial Port interrupt priority bit, high. PT1H: Timer 1 interrupt priority bit, high. PX1H: External interrupt 1 priority bit, high. PT0H: Timer 0 interrupt priority bit, high. PX0H: External interrupt 0 priority bit, high. AUXIE (Address=ADH, Auxiliary Interrupt Enable Register, Reset Value=xx00,0000B) 7 6 5 4 3 2 1 0 - - EKB ES2 EBD EPCA EADC ESPI EKB: Keypad interrupt enable bit. ES2: UART2 interrupt enable bit. EBD: Brownout Detection interrupt enable bit. EPCA: PCA interrupt enable bit. EADC: ADC interrupt enable bit. ESPI: SPI interrupt enable bit. 91 MPC82G516A Data Sheet MEGAWIN AUXIP (Address=AEH, Auxiliary Interrupt Priority Register, Reset Value=xx00,0000B) 7 6 5 4 3 2 1 0 - - PKB PS2 PBD PPCA PADC PSPI PKB: Keypad interrupt priority bit. PS2: UART2 interrupt priority bit. PBD: Brownout Detection interrupt priority bit. PPCA: PCA interrupt priority bit. PADC: ADC interrupt priority bit. PSPI: SPI interrupt priority bit. AUXIPH (Address=AFH, Auxiliary Interrupt Priority High Register, Reset Value=xx00,0000B) 7 6 5 4 3 2 1 0 - - PKBH PS2H PBDH PPCAH PADCH PSPIH PKBH: Keypad interrupt priority bit, high. PS2H: UART2 interrupt priority bit, high. PBDH: Brownout Detection interrupt priority bit, high. PPCAH: PCA interrupt 1 priority bit, high. PADCH: ADC interrupt priority bit, high. PSPIH: SPI interrupt 0 priority bit, high. XICON (Address=C0H, External Interrupt Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 PX3 EX3 IE3 IT3 PX2 EX2 IE2 IT2 PX3: External interrupt 3 priority bit. EX3: External interrupt 3 enable bit. IE3: External interrupt 3 interrupt flag. IT3: External interrupt 3 type control bit. 1: edge-triggered; 0: level-triggered. PX2: External interrupt 2 priority bit. EX2: External interrupt 2 enable bit. IE2: External interrupt 2 interrupt flag. IT2: External interrupt 2 type control bit. 1: edge-triggered; 0: level-triggered. TCON (Address=88H, Timer/Counter Control Register, Reset Value=0000,0000B) 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IE1: Interrupt 1 flag. Set by hardware when external interrupt 1 edge is detected (transmitted or level-activated). Cleared when interrupt processed only if transition activated. IT1: Interrupt 1 Type control bit. Set/cleared by software to specify falling edge/low level triggered external interrupt 1. IE0: Interrupt 0 flag. Set by hardware when external interrupt 0 edge is detected (transmitted or level-activated). Cleared when interrupt processed only if transition activated. IT0: Interrupt 0 Type control bit. Set/cleared by software to specify falling edge/low level triggered external interrupt 0. MEGAWIN MPC82G516A Data Sheet 92 19.3 Interrupt Enable Each of these interrupt sources can be individually enabled or disabled by setting or clearing an interrupt enable bit in the registers IE, AUXIE and XICON. Note that IE also contains a global disable bit, EA. If EA is set to ‘1’, the interrupts are individually enabled or disabled by their corresponding enable bits. If EA is cleared to ‘0’, all interrupts are disabled. 19.4 Interrupt Priority The priority scheme for servicing the interrupts is the same as that for the 80C51, except there are four interrupt levels rather than two as on the 80C51. The Priority Bits (see Table 19-1) determine the priority level of each interrupt. Table 19-2, as an illustration example using External Interrupt 0, shows the bit values and priority levels associated with each combination. Table 19-2. Four Priority Level of External Interrupt 0 Priority Bits PX0H PX0 0 0 0 1 1 0 1 1 Priority Level Level 0 (Lowest) Level 1 Level 2 Level 3 (Highest) An interrupt will be serviced as long as an interrupt of equal or higher priority is not already being serviced. If an interrupt of equal or higher level priority is being serviced, it won’t be stopped and the new interrupt will wait until it is finished. If a lower priority level interrupt is being serviced, it will be stopped and the new interrupt will be serviced immediately. When the new interrupt is finished, the lower priority level interrupt that was stopped will be completed. In other words, a priority interrupt can itself be interrupted by a higher priority interrupt, but not by another equal or lower priority interrupt. If two requests of different priority levels are received simultaneously, the request of higher priority level is serviced. If requests of the same priority level are received simultaneously, the “Priority within Level” determines which request is serviced. Thus within each priority level there is a second priority structure determined by the polling sequence. Note the ‘Priority within Level’ is only used to resolve simultaneous requests of the same priority level. 19.5 How Interrupts are Handled The interrupt flags are sampled every instruction cycle. The samples are polled during the following instruction cycle. If one of the interrupt flags was in a set condition in the preceding cycle, the polling cycle will find it and the interrupt system will generate an LCALL to the appropriate service routine, provided this hardware-generated LCALL is not blocked by any of the following conditions: 1. An interrupt of equal or higher priority level is already in progress. 2. The current (polling) cycle is not the final cycle in the execution of the instruction in progress. 3. The instruction in progress is RETI or any write to the registers associated the interrupts. Any of these three conditions will block the generation of the LCALL to the interrupt service routine. Condition 2 ensures that the instruction in progress will be completed before vectoring to any service routine. Condition 3 ensures that if the instruction in progress is RETI or any write to the registers associated the interrupts, then at least one more instruction will be executed before any interrupt is vectored to. The polling cycle is repeated with each instruction cycle, and the values polled are the values that were present in the previous instruction cycle. If the interrupt flag for a level-sensitive external interrupt is active but not being responded to for one of the above conditions and is not still active when the blocking condition is removed, the denied interrupt will not be serviced. In other words, the fact that the interrupt flag was once active but not serviced is not remembered. Every polling cycle is new. The processor acknowledges an interrupt request by executing a hardware-generated LCALL to the appropriate servicing routine. In some cases it also clears the flag that generated the interrupt, and in other cases it doesn’t. It 93 MPC82G516A Data Sheet MEGAWIN never clears the interrupt flags of Timer2, Serial Port, PCA, Brownout Detection and UART2. This has to be done in the user’s software. It clears an external interrupt flag (IE0, IE1, IE2 or IE3) only if it was transition-activated. The hardware-generated LCALL pushes the contents of the Program Counter onto the stack (but it does not save the PSW) and reloads the PC with an Vector Address that depends on the source of the interrupt being vectored to, as shown in Table 19-1. Execution proceeds from that location until the RETI instruction is encountered. The RETI instruction informs the processor that this interrupt routine is no longer in progress, then pops the top two bytes from the stack and reloads the Program Counter. Execution of the interrupted program continues from where it left off. Note that a simple RET instruction would also have returned execution to the interrupted program, but it would have left the interrupt control system thinking the interrupt was still in progress. Note that the starting addresses of consecutive interrupt service routines are only 8 bytes apart. That means if consecutive interrupts are being used (IE0 and TF0, for example, or TF0 and IE1), and if the first interrupt routine is more than 7 bytes long, then that routine will have to execute a jump to some other memory location where the service routine can be completed without overlapping the starting address of the next interrupt routine 19.6 External Interrupts The external sources includes /INT0, /INT1, /INT2 and /INT3, which can each be either level-activated (low-level) or transition-activated (falling-edge), depending on bits IT0, IT1, IT2 and IT3 in registers TCON and XICON. If ITx = 0, external interrupt x is triggered by a detected low at the INTx pin. If ITx = 1, external interrupt x is negative edge-triggered. The flags that actually generate these interrupts are bits IE0 and IE1 in TCON and IE2 and IE3 in XICON. These flags are cleared by hardware when the service routine is vectored to only if the interrupt was transition-activated. If the interrupt was level-activated, then the external requesting source is what controls the request flag, rather than the on-chip hardware. Since the external interrupt pins are sampled once each instruction cycle, an input high or low should hold for at least one oscillator period to ensure sampling. If the external interrupt is transition-activated, the external source has to hold the request pin high for at least one cycle, and then hold it low for at least one cycle to ensure that the transition is seen so that interrupt request flag IEx will be set. IEx will be automatically cleared by the CPU when the service routine is called. If external interrupt is level-activated, the external source has to hold the request active until the requested interrupt is actually generated. Then it has to deactivate the request before the interrupt service routine is completed, or else another interrupt will be generated right again. 19.7 Single-Step Operation The 80C51 interrupt structure allows single-step execution with very little software overhead. As previously noted, an interrupt request will not be responded to while an interrupt of equal or higher priority level is still in progress, nor will it be responded to after RETI until at least one other instruction has been executed. Thus, once an interrupt routine has been entered, it cannot be re-entered until at least one instruction of the interrupted program is executed. One way to use this feature for single-step operation is to program one of the external interrupts (e.g., INT0) to be level-activated. The service routine for the interrupt will terminate with the following code: JNB P3.2,$ JB P3.2,$ RETI ;Wait Till INT0 Goes High ;Wait Till INT0 Goes Low ;Go Back and Execute One Instruction Now if the INT0 pin, which is also the P3.2 pin, is held normally low, the CPU will go right into the External Interrupt 0 routine and stay there until INT0 is pulsed (from low to high to low). Then it will execute RETI, go back to the task program, execute one instruction, and immediately re-enter the External Interrupt 0 routine to await the next pulsing of P3.2. One step of the task program is executed each time P3.2 is pulsed. MEGAWIN MPC82G516A Data Sheet 94 20 ISP, IAP and ICP The embedded Flash memory of the MPC82G516A can be programmed using the following methods. (1) The traditional parallel programming method: generally for a Universal Programmer (not described here). (2) In-System Programming method (ISP): under control of the loader program. (3) In-Application Programming method (IAP): under control of the user’s application program. (4) In-Circuit Programming (ICP): under control of the proprietary ICP Programmer (see Section 20.4.1). Refer to Figure 20-1 for the MPC82G516A Flash Configuration. The Flash of MPC82G516A can be partitioned into AP-memory, IAP-memory and ISP-memory. AP-memory is used to store the user’s application program; IAPmemory is used to store the non-volatile application data; and, ISP-memory is used to store the loader program for In-System Programming. The traditional parallel programming and ICP can program anywhere in the MCU, including the whole Flash and MCU’s Hardware Option. The ISP and IAP can only program some specific area of the Flash; the ISP can program both AP-memory and IAP-memory while the IAP can only program the IAP-memory. Table 20-1 shows the comparison between the various programming methods listed above. Table 20-1. Comparison between the Various Programming Methods Items Erase/Program/Verify Programming Area Controlled by Hardware or Software? Programming Interface Preparation for the Programming Programming Tool Parallel Programming Yes Whole Flash & MCU’s Hardware Option HardwareControlled Parallel Interface ISP Yes AP-memory & IAP-memory SoftwareControlled Serial Interface Using DTA (P3.1) Loader Program Pre-programmed & HWBS enabled “Megawin ISP Programmer” IAP Yes IAP-memory SoftwareControlled None ICP Yes Whole Flash & MCU’s Hardware Option HardwareControlled Serial Interface Using Dedicated SDA & SCL None “Megawin ICP Programmer” None Universal Programmer or “Megawin 8051 Writer” None None Why ISP? ISP makes it possible to update the user’s application program (in AP-memory) and non-volatile application data (in IAP-memory) without removing the MCU chip from the actual end product. This useful capability makes a wide range of field-update applications possible. (Note ISP needs the loader program pre-programmed in the ISPmemory.) Why IAP? The IAP-memory provides a non-volatile storage for the applications which need to keep its application data not lost after the system is powered off. So, there is no need of an extra serial EEPROM such as the 93C46 or 24C01 devices. Why ICP? ICP makes it possible to update anywhere in the MCU (including the whole Flash and MCU’s Hardware Option) without removing the MCU chip from the actual end product. Like the ISP, it also makes a wide range of fieldupdate applications possible. 95 MPC82G516A Data Sheet MEGAWIN 20.1 Embedded Flash 20.1.1 Flash Features The Flash can only perform ‘page’ erasing, not byte erasing. And, the erased page data will become all 0xFF. Only the byte with value of 0xFF can programmed into a non-0xFF byte. Any non-0xFF byte can not be reversely programmed into a 0xFF byte unless using the page erasing. Each page has 512 bytes, and the page address is always located at 0x0200*N, where N (=0,1,2,3,..) means the Nth page. Endurance: 20,000 Erase/Write Cycles. 20.1.2 Flash Configuration Figure 20-1 shows the Flash configuration of MPC82G516A. The Flash an be partitioned into AP-memory, IAPmemory and ISP-memory. AP-memory is used to store the user’s application program; IAP-memory is used to store the non-volatile application data; and, ISP-memory is used to store the loader program for In-System Programming. The total Flash size is 64K bytes, where the space of IAP-memory and ISP-memory can be configured by a Universal Programmer, the “Megawin 8051 Writer” or the “Megawin 8051 ICP Programmer” (see Section 20.4.1). Figure 20-1. Flash Configuration 0000h Application code AP-memory IAP_lower_boundary (! Configured by a universal Programmer) Total Flash 64KB Non-volatile data IAP-memory ISP_start_address 0xF000 for ISP=4KB 0xF800 for ISP=2KB 0xFC00 for ISP=1KB (! Configured by a universal Programmer) FFFFh ISP code ISP-memory MEGAWIN MPC82G516A Data Sheet 96 20.2 ISP Operation In general, the user needn’t know how ISP operates because Megawin has provided the standard ISP tool (see Section 20.2.5). For the user who wants to design his own ISP operation, this section includes all the necessary technical information for ISP. 20.2.1 SFRs for ISP The following special function registers are related to the ISP operation. All these registers can be accessed by software in the user’s application program. ISPCR (Address=E7H, ISP Control Register, Reset Value=000x,x000B) Bit-7 Bit-6 Bit-5 Bit-4 Bit-3 Bit-2 Bit-1 Bit-0 ISPEN SWBS SWRST - - CKS2 CKS1 CKS0 ISPEN: Set to enable ISP function. SWBS: Software boot select. Set/clear to select booting from ISP-memory/AP-memory for software reset. SWRST: Write ‘1’ to this bit to trigger a software reset. CKS2~CKS0: Configure ISP timing according to the oscillator frequency, see Table 20-2. Table 20-2. ISP Timing Setting CKS2 CKS1 CKS0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Oscillator Frequency (MHz) > 24 20 ~ 24 12 ~ 20 6~ 12 3~6 2~3 1~2
MPC82G516A 价格&库存

很抱歉,暂时无法提供与“MPC82G516A”相匹配的价格&库存,您可以联系我们找货

免费人工找货