PRELIMINARY(ES) August 13, 1999 SX48BD/SX52BD High-Performance 8-Bit Microcontroller with EE/Flash Program Memory and In-System Programming Capability 1.0 1.1 PRODUCT OVERVIEW Introduction On-chip functions include two 16-bit timers with 8-bit prescalers supporting different operating modes (PWM, simultaneous PWM/capture, and external event counter), a general-purpose 8-bit timer with prescaler, an analog comparator, a brown-out detector, a watchdog timer, a power-save mode with multi-source wakeup capability, an internal R/C oscillator, user-selectable clock modes, and high-current outputs. SLEEP Clock The Scenix SX48BD/SX52BD are members of the SX family of high-performance 8-bit microcontrollers fabricated in an advanced CMOS process technology. The advanced process, combined with a RISC-based architecture, allows high-speed computation, flexible I/O control, and efficient data manipulation. Throughput is enhanced by operating the device at frequencies up to 50 MHz and by optimizing the instruction set to include mostly single-cycle instructions. OSC1 OSC2 The SX48BD and SX52BD are functionally the same, except for the package type and pinout. The SX48BD has four fewer pins and has only four rather than eight I/O pins for Port A. RTCC WDT Clock OSC Driver C lock S elect 4MHz Internal RC OSC (divided by 8 steps) 8-bit Watchdog Timer (WDT) 8 8-bit Timer RTCC 3 Port B Interrupt Stack COMPARATOR System Clock Power-On Reset 4/8 MCLR RESET Brown-Out Instruction 8 Pipeline Fetch D ecode Prescaler for RTCC or Postscaler for WDT MIWU MIWU 8 System Clock Internal Data Bus 8 8 PC 8 Level Stack Interrupt 8 W FSR 8 STATU S W rite Back O PTIO N M ODE 8 ALU Address Data PC Execute 8 262 Bytes SR A M Address 8 12 W rite D ata R ead D ata 8 Instruction 12 8 8 8 Port A Port C Port D Port E 8 In-System D ebugging In-System Program m ing 8 8 8 Port B 16-Bit Timer1 Timer 8-Bit Prescaler 8 Port C 16-Bit Timer2 Timer 8-Bit Prescaler 4k x 12 EEPR O M IR EAD Figure 1-1. Block Diagram ScenixTM and the Scenix logo are trademarks of Scenix Semiconductor, Inc. I2CTM is a trademark of Philips Corporation . (c) 1999 Scenix Semiconductor, Inc. All rights reserved. MicrowireTM is a trademark of National Semiconductor Corporation All other trademarks mentioned in this document are property of their respective companies. -1- www.scenix.com SX48BD/SX52BD Table of Contents 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 Product Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Key Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.1 CPU Features . . . . . . . . . . . . . . . . . . . . . 3 1.2.2 I/O Features . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Programming and Debugging Support . . . . . . . . . . 3 1.5 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Connection Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1 Pin Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Pin Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Part Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Port Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1 Reading and Writing the Ports . . . . . . . . . . . . . . . . . 8 3.2 Port Configuration . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.1 MODE Register . . . . . . . . . . . . . . . . . . . 12 3.2.2 Port Configuration Registers . . . . . . . . . 14 3.2.3 Port Configuration Upon Power-Up . . . . 14 Special-Function Registers . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.1 PC Register (02h) . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 STATUS Register (03h) . . . . . . . . . . . . . . . . . . . . . 15 4.3 OPTION Register . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.4 DEVICE CONFIGURATION REGISTERS . . . . . . . 16 4.5 FUSE Word (Read/Program at 1FFFh in main memory map) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.6 FUSEX Word (Read/Program via Programming Command) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.7 DEVICE Word (Hard-Wired Read-Only)- Part ID Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.1 Program Memory . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.1.1 Program Counter . . . . . . . . . . . . . . . . . . 19 5.1.2 Subroutine Stack . . . . . . . . . . . . . . . . . . 19 5.2 Data Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.2.1 Addressing Modes . . . . . . . . . . . . . . . . . 19 5.2.2 Register Access Examples . . . . . . . . . . 21 Power Down Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 6.1 Multi-Input Wakeup . . . . . . . . . . . . . . . . . . . . . . . . 22 6.2 Port B MIWU/Interrupt Configuration . . . . . . . . . . . 23 Interrupt Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Oscillator Circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.1 XT, LP or HS modes . . . . . . . . . . . . . . . . . . . . . . . 26 8.2 External RC Mode . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.3 Internal RC Mode . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Real Time Clock Counter (RTCC)/Watchdog Timer . . . . . . 28 9.1 RTCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 9.2 Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 9.3 The Prescaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 (c) 1999 Scenix Semiconductor, Inc. All rights reserved. 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 -2- Multi-Function Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 10.1 Timer Operating Modes . . . . . . . . . . . . . . . . . . . . .31 10.1.1 PWM Mode . . . . . . . . . . . . . . . . . . . . . .31 10.1.2 Software Timer Mode . . . . . . . . . . . . . . .31 10.1.3 External Event Mode . . . . . . . . . . . . . . .31 10.1.4 Capture/Compare Mode . . . . . . . . . . . . .31 10.2 Timer Pin Assignments . . . . . . . . . . . . . . . . . . . . .31 10.3 Timer Control Registers . . . . . . . . . . . . . . . . . . . . .31 Comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Brown-Out Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Register States Upon Different Reset Conditions . . . . . . .39 Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 15.1 Instruction Set Features . . . . . . . . . . . . . . . . . . . . .40 15.2 Instruction Execution . . . . . . . . . . . . . . . . . . . . . . .40 15.3 Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . .40 15.4 The Bank Instruction . . . . . . . . . . . . . . . . . . . . . . .41 15.5 Bit Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . .41 15.6 Input/Output Operation . . . . . . . . . . . . . . . . . . . . . .41 15.6.1 Read-Modify-Write Considerations . . . .41 15.7 Increment/Decrement . . . . . . . . . . . . . . . . . . . . . . .41 15.8 Loop Counting and Data Pointing Testing . . . . . . .41 15.9 Branch and Loop Call Instructions . . . . . . . . . . . . .41 15.9.1 Jump Operation . . . . . . . . . . . . . . . . . . .41 15.9.2 Page Jump Operation . . . . . . . . . . . . . .41 15.9.3 Call Operation . . . . . . . . . . . . . . . . . . . .42 15.9.4 Page Call Operation . . . . . . . . . . . . . . . .42 15.10 Return Instructions . . . . . . . . . . . . . . . . . . . . . . . . .42 15.11 Subroutine Operation . . . . . . . . . . . . . . . . . . . . . . .42 15.11.1 Push Operation . . . . . . . . . . . . . . . . . . .42 15.11.2 Pop Operation . . . . . . . . . . . . . . . . . . . .42 15.12 Comparison and Conditional Branch Instructions .42 15.13 Logical Instruction . . . . . . . . . . . . . . . . . . . . . . . . .43 15.14 Shift and Rotate Instructions . . . . . . . . . . . . . . . . .43 15.15 Complement and SWAP . . . . . . . . . . . . . . . . . . . .43 15.16 Key to Abbreviations and Symbols . . . . . . . . . . . . .43 Instruction Set Summary Table . . . . . . . . . . . . . . . . . . . . . .44 16.1 Equivalent Assembler Mnemonics . . . . . . . . . . . . .47 Electrical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . .48 17.1 Absolute Maximum Ratings (beyond which permanent damage may occur) . . . . . . . . . . . . . . .48 17.2 DC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . .49 17.3 AC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . .50 17.4 Comparator DC and AC Specifications . . . . . . . . .50 Package Dimensions [Dimensions are in inches/(millimeters)] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 www.scenix.com SX48BD/SX52BD 1.2 Key Features ture is that instruction fetch and memory transfers can be overlapped with a multi-stage pipeline, which means the next instruction can be fetched from program memory while the current instruction is being executed using data from the data memory. * 50 MIPS performance at 50 MHz oscillator frequency * 4096 x 12 bits EE/Flash program memory rated for 10,000 rewrite cycles * 262 x 8 bits SRAM * Two 16-bit timers with 8-bit prescalers supporting: - Software Timer mode - PWM mode - Simultaneous PWM/Capture mode - External Event mode * In-system programming capability through OSC pins * Internal RC oscillator with configurable rate from 31.25 kHz to 4 MHz, +8% accuracy * User selectable clock modes: - Internal RC oscillator - External Clock - Crystal/resonator options - External RC oscillator * Analog comparator * Brown-out detector * Onboard Watchdog Timer * Multi-Input Wakeup (MIWU) on eight pins * Fast lookup capability through run-time readable code * Complete development tool support The SX family implements a four-stage pipeline (fetch, decode, execute, and write back), which results in execution of one instruction per clock cycle. At the maximum operating frequency of 50 MHz, instructions are executed at the rate of one per 20-ns clock cycle. 1.4 The SX devices are currently supported by third party tool vendors. Onboard in-system debug capabilities have been added, allowing tools to provide an integrated development environment including editor, macro assembler, debugger, and programmer. Un-obtrusive in-system programming is provide through the OSC pins. 1.5 The device provides solutions for many familiar applications such as process controllers, electronic appliances/tools, security/monitoring systems, consumer automotive, sound generation, motor control, and personal communication devices. In addition, the device is suitable for applications that require DSP-like capabilities, such as closed-loop servo control (digital filters), digital answering machines, voice notation, interactive toys, and magnetic-stripe readers. * * * * * * Fully static design - DC to 50 MHz operation 20 ns instruction cycle time Compact instruction set Mostly single-cycle instructions 8-level deep hardware subroutine stack Fixed interrupt response time: 60 ns internal, 100 ns external at 50 MHz * Hardware context save/restore for interrupt The enhanced throughput of the device allows efficient development of software modules called Virtual Peripherals to replace on-chip hardware peripherals. The concept of Virtual Peripherals provides benefits such as using a more simple device, reduced component count, fast time to market, increased flexibility in design, and ultimately overall system cost reduction. Some examples of Virtual Peripheral modules are: 1.2.2 I/O Features * Software-selectable I/O configuration - Each pin programmable as an input or output - TTL or CMOS level selection on inputs - Internal weak pull-up selection on inputs (~20 k to Vdd) * Serial, Parallel, I2CTM, MicrowireTM (-Wire), Dallas Wire, SPI, IR transceivers, UART, MODEM * Frequency generation and measurement * Spectrum analysis * Multi-tasking, interrupts, and networking * Resonance loops * DRAM drivers * Music and voice synthesis * PPM/PWM output * Delta/Sigma ADC * DTMF generation/detection * PSK/FSK generation/detection * Quadrature encoder/decoder * Proportional Integral derivative (PID) and servo control * Video controller Schmitt trigger inputs on ports B, C, D, and E All outputs capable of sinking/sourcing 30 mA Symmetrical drive on Port A outputs 48-pin TQFP and 52-pin PQFP packages 1.3 Architecture The SX devices use a modified Harvard architecture. This architecture uses two separate memories with separate address buses, one for the program and one for data, while allowing transfer of data from program memory to SRAM. This ability allows accessing data tables from program memory. The advantage of this architec- (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Applications Emerging applications and advances in existing ones require higher performance while maintaining low cost and fast time-to-market. 1.2.1 CPU Features * * * * Programming and Debugging Support -3- www.scenix.com SX48BD/SX52BD CONNECTION DIAGRAMS 2.1 Pin Assignments _ _ _ _ _ _ _ _ _ _ _ _ _ RA5 RA4 RTCC Vss Vdd RE7 RE6 RE5 RE4 RE3 RE2 RE1 RE0 2.0 _ _ _ _ _ _ _ _ _ _ _ _ _ 52 51 50 49 48 47 46 45 44 43 42 41 40 1 39 2 38 3 37 4 36 5 35 6 34 52 - PIN PQFP 7 33 8 32 9 31 10 30 11 29 12 28 13 27 14 15 16 17 18 19 20 21 22 23 24 25 26 _ _ _ _ _ _ _ _ _ _ _ _ _ RD7 RD6 RD5 RD4 Vss Vdd RD3 RD2 RD1 RD0 RC7 RC6 RC5 RB2 RB3 RB4 RB5 RB6 RB7 Vdd Vss RC0 RC1 RC2 RC3 RC4 _ _ _ _ _ _ _ _ _ _ _ _ _ RA6 RA7 MCLR OSC1 OSC2 Vdd Vss RA0 RA1 RA2 RA3 RB0 RB1 _ _ _ _ _ _ _ _ _ _ _ _ RTCC Vss Vdd RE7 RE6 RE5 RE4 RE3 RE2 RE1 RE0 RD7 Top View 48 47 46 45 44 43 42 41 40 39 38 37 _ MCLR _ OSC1 _ OSC2 _ Vdd _ Vss _ RA0 _ RA1 _ RA2 _ RA3 _ RB0 _ RB1 RB2 _ 1 2 3 4 5 6 7 8 9 10 11 12 48 - PIN TQFP 36 35 34 33 32 31 30 29 28 27 26 25 _ _ _ _ _ _ _ _ _ _ _ _ RD6 RD5 RD4 Vss Vdd RD3 RD2 RD1 RD0 RC7 RC6 RC5 RB3 RB4 RB5 RB6 RB7 Vdd Vss RC0 RC1 RC2 RC3 RC4 _ _ _ _ _ _ _ _ _ _ _ _ 13 14 15 16 17 18 19 20 21 22 23 24 Top View (c) 1999 Scenix Semiconductor, Inc. All rights reserved. -4- www.scenix.com SX48BD/SX52BD 2.2 Pin Descriptions Name Pin Type RA0 I/O RA1 I/O RA2 I/O RA3 I/O RA4 I/O RA5 I/O RA6 I/O RA7 I/O RB0 I/O RB1 I/O RB2 I/O RB3 I/O RB4 I/O RB5 I/O RB6 I/O RB7 I/O RC0 I/O RC1 I/O RC2 I/O RC3 I/O RC4 I/O RC5 I/O RC6 I/O RC7 I/O RD0 I/O RD1 I/O RD2 I/O RD3 I/O RD4 I/O RD5 I/O RD6 I/O RD7 I/O RE0 I/O RE1 I/O RE2 I/O RE3 I/O RE4 I/O RE5 I/O RE6 I/O RE7 I/O RTCC I MCLR I OSC1/In/Vpp I OSC2/Out O Input Levels TTL/CMOS TTL/CMOS TTL/CMOS TTL/CMOS TTL/CMOS TTL/CMOS TTL/CMOS TTL/CMOS TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST TTL/CMOS/ST ST ST ST CMOS Description Bidirectional I/O Pin; symmetrical source / sink capability Bidirectional I/O Pin; symmetrical source / sink capability Bidirectional I/O Pin; symmetrical source / sink capability Bidirectional I/O Pin; symmetrical source / sink capability Bidirectional I/O Pin; symmetrical source / sink capability (52-pin pkg. only) Bidirectional I/O Pin; symmetrical source / sink capability (52-pin pkg. only) Bidirectional I/O Pin; symmetrical source / sink capability (52-pin pkg. only) Bidirectional I/O Pin; symmetrical source / sink capability (52-pin pkg. only) Bidirectional I/O Pin; comparator output; MIWU input Bidirectional I/O Pin; comparator negative input; MIWU input Bidirectional I/O Pin; comparator positive input; MIWU input Bidirectional I/O Pin; MIWU input Bidirectional I/O Pin; MIWU input, Timer T1 Capture Input 1 Bidirectional I/O Pin; MIWU input, Timer T1 Capture Input 2 Bidirectional I/O Pin; MIWU input, Timer T1 PWM/Compare Output Bidirectional I/O Pin; MIWU input, Timer T1 External Event Counter Input Bidirectional I/O pin, Timer T2 Capture Input 1 Bidirectional I/O pin, Timer T2 Capture Input 2 Bidirectional I/O pin, Timer T2 PWM/Compare Output Bidirectional I/O pin, Timer T2 External Event Counter Input Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Bidirectional I/O pin Input to Real-Time Clock/Counter Master Clear reset input - active low Crystal oscillator input - external clock source input Crystal oscillator output - in R/C mode, internally pulled to Vdd through weak pull-up Vdd P - Positive supply pins (a total of four positive supply pins, one on each side of the device) Vss P - Ground pins (a total of four ground pins, one on each side of the device) Note:I = input, O = output, I/O = Input/Output, P = Power, TTL = TTL input, CMOS = CMOS input, ST = Schmitt Trigger input, MIWU = Multi-Input Wakeup input (c) 1999 Scenix Semiconductor, Inc. All rights reserved. -5- www.scenix.com SX48BD/SX52BD 2.3 Part Numbering Table 2-1. Ordering Information Device Pins I/O EE/Flash (Words) RAM (Bytes) SX52BD/PQ 52 40 4K 262 SX48BD/TQ 48 40 4K 262 SX52BDXX-LI/PQ Package Type DP = DIP SO = SOP SS = SSOP TQ = Thin PQFP PQ = PQFP Extended Temperature Blank = 0C to +70C I= -40C to +85C Low Voltage Blank = Speed L= 3.3V to 5.5V Low Voltage (TBD) Memory Size Feature Set Pin Count SceniX Blank = 50 MHz 75 = 75 MHz 100 = 100 MHz A= 512 word B= 1k word C= 2k word D= 4k word Figure 2-1. Part Number Reference Guide (c) 1999 Scenix Semiconductor, Inc. All rights reserved. -6- www.scenix.com SX48BD/SX52BD 3.0 PORT DESCRIPTIONS Port B also supports the on-chip differential comparator. Ports RB1 and RB2 are the comparator negative and positive inputs, respectively, while Port RB0 is the comparator output pin. Port B also supports the Multi-Input Wakeup feature on all eight pins. The device contains five 8-bit I/O ports (Port A through Port E). Port A provides symmetrical drive capability. In the 48-pin version of the device, Port A has only four pins rather than eight. The unavailable pins are pulled high. Each port has four associated 8-bit registers (Direction, Data, TTL/CMOS Select, and Pull-Up Enable) to configure each port pin as Hi-Z input or output, to select TTL or CMOS voltage levels, and to enable/disable the weak pull-up resistor. The least significant bit of the registers corresponds to the least significant port pin. To access these configuration registers, an appropriate value must be written into the MODE register. Port B and Port C also support the multi-function timers T1 and T2. RB4 and RB5 are the T1 capture inputs, RB6 is the T1 PWM output, and RB7 is the T1 external event counter input. Similarly, RC0 and RC1 are the T2 capture inputs, RC2 is the T2 PWM output, and RC3 is the T2 external event counter input. Upon power-up, all bits in these registers are initialized to "1". Figure 3-1 shows the internal hardware structure and configuration registers for each pin of Port A. Figure 3-2 shows the same for each pin of Port B, C, D, or E. The associated registers allow for each port bit to be individually configured under software control as shown below: 3.1 The five ports are memory-mapped into the data memory address space. To the CPU, the five ports are available as the RA, RB, RC, RD, and RE file registers at data memory addresses 05h through 09h, respectively. Writing to a port data register sets the voltage levels of the corresponding port pins that have been configured to operate as outputs. Reading from a data register reads either the voltage levels of the corresponding port pins or the data contained in the port data register depending on the status PORTRD bit contained in the T2CNTB register. Table 3-1. Port Configuration Data Direction Registers: RA, RB, RC, RD, RE TTL/CMOS Select Registers: LVL_A, LVL_B, LVL_C, LVL_D, LVL_E 0 1 0 1 Output Hi-Z Input CMOS TTL Pullup Enable Registers: PLP_A, PLP_B, PLP_C, PLP_D, PLP_E 0 Reading and Writing the Ports 1 Enable Disable Ports B, C, D, and E have additional associated registers (Schmitt-Trigger Enable Registers ST_B and ST_C) to enable or disable the Schmitt Trigger function on each individual port pin as indicated in table below. Table 3-2. Schmitt Trigger Select Schmitt Trigger Enable Registers: ST_B, ST_C, ST_D, ST_E 0 1 Enable Disable (c) 1999 Scenix Semiconductor, Inc. All rights reserved. -7- www.scenix.com SX48BD/SX52BD Mode 0F/1F Mode 0E/1E Mode 0D/1D MODE RD/WR Vdd RA Direction Internal Data Bus 0 = Output 1 = Hi-Z Input RD/WR Pullup (~20k) PLP_A 0 = Pullup Enable 1 = Pullup Disable RD/WR RA Data Port A PIN RD/WR LVL_A 0 = CMOS Levels 1 = TTL Levels TTL Buffer M U CMOS Buffer X RD Port A INPUT Figure 3-1. Port A Configuration (c) 1999 Scenix Semiconductor, Inc. All rights reserved. -8- www.scenix.com SX48BD/SX52BD Mode 0F/1F Mode 0E/1E Mode 0D/1D Mode 0C/1C MODE Vdd RD/WR RB/RC/RD/RE Direction Pullup Resistor (~20k) 0 = Output 1 = Hi-Z Input Internal Data Bus RD/WR PLP_B/C/D/E 0 = Pullup Enable 1 = Pullup Disable RD/WR RD/WR Port Pin RB/RC/RD/RE Data LVL_B/C/D/E 0 = CMOS Levels 1 = TTL Levels RD/WR TTL Buffer M U CMOS Buffer X ST_B/C/D/E 0 = Schmitt Trigger Enable 1 = Schmitt Trigger Disable M U X RD ~ ~ Schmitt Trigger Buffer Port B: Input, MIWU, Comparator, Timer T1 Port C: Input, Timer T2 Port D and E: Input only Figure 3-2. Port B, Port C, Port D, Port E Configuration For example, suppose all four Port A pins are configured as outputs. To make RA0 and RA1 high and the remaining Port A pins low, you could use the following code: mov W,#$03 mov $05,W In the default device configuration, when a read is performed from a port bit position, the operation is actually reading the voltage level on the pin itself, not necessarily the bit value stored in the port data register. This is true whether the pin is configured to operate as an input or an output. Therefore, with the pin configured to operate as an input, the data register contents have no effect on the value that you read. With the pin configured to operate as an output, what is read generally matches what has been written to the register. PORTRD of the T2CNT2 register determines how the device reads data from its I/O ports (Port A through Port E). Set this bit to 1 to have the device read data from the port I/O pins directly. Clear this bit to 0 to have the device read data from the port data registers. Under normal conditions, it should not matter which method you use to read the port data. However, if a port pin is configured as an output and an external circuit forces the pin to the opposite value, the value read from the port will depend on the reading mode used. Note that this control bit is not related to multi-function timers T1 and T2. ;load W with the value 03h ;(bits 0 and 1 high) ;write 03h to Port A data ;register The second "mov" instruction in this example writes the Port A data register (RA), which controls the output levels of the Port A pins, RA0 through RA7. Note that Port A has only four I/O pins in the 48-pin version of the device, in which case only the four least significant bits of this register are used. When a write is performed to a port bit position that has been configured as an input, a write to the port data register is still performed, but it has no immediate effect on the pin. If later that pin is configured to operate as an output, it will reflect the value that has been written to the data register. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. -9- www.scenix.com SX48BD/SX52BD When two successive read-modify-write instructions are used on the same I/O port with a very high clock rate, the "write" part of one instruction might not occur soon enough before the "read" part of the very next instruction, resulting in getting "old" data for the second instruction. To ensure predictable results, avoid using two successive read-modify-write instructions that access the same port data register if the clock rate is high or, insert a single NOP instruction between the successive read-modifywrite instructions(If SYNC is enabled, 2 NOP instructions are required). 3.2 Port Configuration Each port pin offers the following configuration options: * data direction * input voltage levels (TTL or CMOS) * pullup type (enable or disable) * Schmitt trigger input (except for Port A) Port B offers the additional option to use the port pins for the Multi-Input Wakeup/Interrupt function, the analog comparator function, or Timer T1 I/O. Port C offers the additional option to use the port pins for Timer T2 I/O. Port configuration is performed by writing to a set of control registers associated with the port. A special-purpose instruction is used to write these control registers: * mov !RA,W (move W to/from Port A control register) * mov !RB,W (move W to/from Port B control register) * mov !RC,W (move W to/from Port C control register) * mov !RD,W (move W to/from Port D control register) * mov !RE,W (move W to/from Port E control register) Each one of these instructions reads or writes a port control register for Port A, B, C, D, or E. There are multiple control registers for each port. To specify which one you want to access, you use another register called the MODE register. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. 3.2.1 MODE Register The MODE register controls access to the port configuration registers and Timer T1/T2 control registers. Because the MODE register is not memory-mapped, it is accessed by the following special-purpose instructions: * mov M, #lit (move literal to lower 4-bits of MODE register) * mov M,W (move W to lower 5-bits of MODE register) * mov W,M (move MODE register to W) The value contained in the MODE register determines which port control register is accessed by the "mov !rx,W" instruction as indicated in Table 3-3. (The table also shows the timer control registers accessed according to the MODE register setting.) MODE register values not defined in the table are reserved for future expansion and should not be used. Upon power-up, the MODE register is initialized to 1Fh, which enables write access to the port direction control registers. When bit 4 of the MODE register is 0 (the top half of Table 3-3), a "mov !rx,W" instruction moves the contents of the applicable control register into W. When bit 4 of the MODE register is 1 (the bottom half of Table 3-3), a "mov !rx,W" instruction moves the contents of W into the applicable control register. However, there are some exceptions to this. For the CMP_B and WKPND_B registers, the CPU does an exchange of data between W and the control register, regardless of the state of bit 4 in the MODE register. For the WKED_B and WKEN_B registers, the CPU moves the data from W to the control register, regardless of the state of bit 4 in the MODE register. After a value is written to the MODE register, that setting remains in effect until it is changed by writing to the MODE register again. For example, you can write the value 1Eh to the MODE register just once, and then write to each of the five pullup configuration registers using the five "mov !rx,W" instructions. - 10 - www.scenix.com SX48BD/SX52BD Table 3-3. Mode Register Settings MODE Reg. 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh mov !RA,W mov !RB,W Read T1CPL Read T1CPH Read T1R2CML Read T1R2CMH Read T1R1CML Read T1R1CMH Read T1CNTB Read T1CNTA Exchange CMP_B with W Exchange WKPND_B with W Write WKED_B Write WKEN_B Read ST_B Read LVL_A Read LVL_B Read PLP_A Read PLP_B Read RA Direction Read RB Direction Clear Timer T1 Write T1R2CML Write T1R2CMH Write T1R1CML Write T1R1CMH Write T1CNTB Write T1CNTA Exchange CMP_B with W Exchange WKPND_B with W Write WKED_B Write WKEN_B Write ST_B Write LVL_A Write LVL_B Write PLP_A Write PLP_B Write RA Direction Write RB Direction (c) 1999 Scenix Semiconductor, Inc. All rights reserved. mov !RC,W Read T2CPL Read T2CPH Read T2R2CML Read T2R2CMH Read T2R1CML Read T2R1CMH Read T2CNTB Read T2CNTA Read ST_C Read LVL_C Read PLP_C Read RC Direction Clear Timer T2 mov !RD,W mov !RE,W Read ST_D Read LVL_D Read PLP_D Read RD Direction Read ST_E Read LVL_E Read PLP_E Read RE Direction Write ST_D Write LVL_D Write PLP_D Write RD Direction Write ST_E Write LVL_E Write PLP_E Write RE Direction Write T2R2CML Write T2R2CMH Write T2R1CML Write T2R1CMH Write T2CNTB Write T2CNTA Write ST_C Write LVL_C Write PLP_C Write RC Direction - 11 - www.scenix.com SX48BD/SX52BD The following code example shows how to program the pullup control registers. mov mov W,#$1E M, W ;MODE=1Eh to write port pullup ;registers mov mov W,#$03 !RA,W ;W = 0000 0011 ;disable pullups for A0 and A1 mov mov W,#$FF !RB,W ;W = 1111 1111 ;disable all pullups for B0-B7 mov mov W,#$00 !RC,W ;W = 0000 0000 ;enable all pullups for C0-C7 WKEN_B: Wakeup Enable Register (MODE=1Bh) Each register bit enables or disables the Multi-Input Wakeup/Interrupt (MIWU) function for the corresponding Port B input pin. Clear the bit to 0 to enable MIWU operation or set the bit to 1 to disable MIWU operation. For more information on using the Multi-Input Wakeup/Interrupt function, see Section 7.0. WKED_B: Wakeup Edge Register (MODE=1Ah) First the MODE register is loaded with 1Eh to select write access to the pullup control registers (PLP_A, PLP_B, and so on). Then the MOV !rx,W instructions are used to specify which port pins are to be connected to the internal pullup resistors. Setting a bit to 1 disconnects the corresponding pullup resistor, and clearing a bit to 0 connects the corresponding pullup resistor. 3.2.2 Port Configuration Registers The port configuration registers that you control with the MOV !rx,W instruction operate as described below. RA through RE Data Direction Registers (MODE=1Fh) Each register bit sets the data direction for one port pin. Set the bit to 1 to make the pin operate as a high-impedance input. Clear the bit to 0 to make the pin operate as an output. PLP_A through PLP_E: Pullup Enable Registers (MODE=1Eh) Each register bit determines whether an internal pullup resistor is connected to the pin. Set the bit to 1 to disconnect the pullup resistor or clear the bit to 0 to connect the pullup resistor. LVL_A through LVL_E: Input Level Registers (MODE=1Dh) Each register bit determines the voltage levels sensed on the input port, either TTL or CMOS, when the Schmitt trigger option is disabled. Program each bit according to the type of device that is driving the port input pin. Set the bit to 1 for TTL or clear the bit to 0 for CMOS. ST_B through ST_E: Schmitt Trigger Enable Registers (MODE=1Ch) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Each register bit determines whether the port input pin operates with a Schmitt trigger. Set the bit to 1 to disable Schmitt trigger operation and sense either TTL or CMOS voltage levels; or clear the bit to 0 to enable Schmitt trigger operation. Each register bit selects the edge sensitivity of the Port B input pin for MIWU operation. Clear the bit to 0 to sense rising (low-to-high) edges. Set the bit to 1 to sense falling (high-to-low) edges. WKPND_B: Wakeup Pending Flag Register (MODE=19h) When you access the WKPND_B register using MOV !RB,W, the CPU does an exchange between the contents of W and WKPND_B. Each bit read from the WKPND_B register indicates the status of the corresponding MIWU pin. A bit set to 1 indicates that a valid edge has occurred on the corresponding MIWU pin, and has triggered a wakeup or interrupt. A bit set to 0 indicates that no valid edge has occurred on the MIWU pin. CMP_B: Comparator Register (MODE=08h) When you access the CMP_B register using MOV !RB,W, the CPU does an exchange between the contents of W and CMP_B. This feature lets you read the CMP_B register contents while writing a new value to the register. Clear bit 7 to enable operation of the comparator. Clear bit 6 to place the comparator result on the RB0 pin. Bit 0 is a result flag that is set to 1 when the voltage on RB2 (positive input) is greater than RB1 (negative input), or cleared to 0 otherwise. (For more information using the comparator, see Section 11.0.) 3.2.3 Port Configuration Upon Power-Up Upon power-up, all the port control registers are initialized to FFh. Thus, each port pin is configured to operate as a high-impedance input that senses TTL voltage levels, with no internal pullup resistor connected. The MODE register is initialized to 1Fh, which allows immediate write access to the data direction registers using the "MOV !rx,W" instruction. - 12 - www.scenix.com SX48BD/SX52BD 4.0 SPECIAL-FUNCTION REGISTERS The CPU uses a set of special-function registers to control operation of the device. The CPU registers include an 8-bit working register (W), which serves as a pseudo accumulator. It holds the second operand of an instruction, receives the literal in immediate type instructions, and also can be programselected as the destination register. A set of 31 file registers serves as the primary accumulator. One of these registers holds the first operand of an instruction and another can be program-selected as the destination register. The first 10 file registers include the Real-Time Clock/Counter register (RTCC), the lower eight bits of the 12-bit Program Counter (PC), the 8-bit STATUS register, five port control registers for Ports A through E, the 8-bit File Select Register (FSR), and INDF (used for indirect addressing). The five low-order bits of the FSR register select one of the 31 file registers in the indirect addressing mode. Calling for the file register located at address 00h (INDF) in any of the file-oriented instructions selects indirect addressing, which uses the FSR register. It should be noted that the file register at address 00h is not a physically implemented register. The CPU also contains an 8level, 12-bit hardware push/pop stack for subroutine linkage. Table 4-1. Special-Function Registers Addr Name the STATUS register with a result that is different than intended. PA2 Bit 7 PA1 PA0 TO PD Z DC C Bit 0 Bit 7-5: Program memory page select bits PA2:PA0 000 = Page 0 (000h - 1FFh) 001 = Page 1 (200h - 3FFh) ... 111 = Page 7 (E00h - FFFh) Bit 4: Time Out bit, TO 1 = Set to 1 after power up and upon execution of CLRWDT or SLEEP instructions 0 = A watchdog time-out occurred Bit 3: Power Down bit, PD 1= Set to a 1 after power up and upon execution of the CLRWDT instruction 0 = Cleared to a `0' upon execution of SLEEP instruction Bit 2: Zero bit, Z (affected by most logical, arithmetic, and data movement instructions 1 = Result of math operation is zero 0 = Result of math operation is non-zero Bit 1: Function Digit Carry bit, DC After Addition: 00h INDF Used for indirect addressing 1 = A carry from bit 3 occurred 01h RTCC Real Time Clock/Counter 0 = No carry from bit 3 occurred 02h PC Program Counter (low byte) After Subtraction: 03h STATUS Holds Status bits of ALU 1 = No borrow from bit 3 occurred 04h FSR File Select Register 0 = A borrow from bit 3 occurred 05h RA Port RA data register 06h RB Port RB data register 07h RC Port RC data register 08h RD Port RD data register 0 = No carry from bit 7 of the result occured. 09h RE Port RE data register After Subtraction: 4.1 Bit 0: After Addition: 1 = A carry from bit 7 of the result occurred PC Register (02h) The PC register holds the lower eight bits of the program counter. It is accessible at run time to perform branch operations. The other four bits are located in the STATUS register. 4.2 STATUS Register (03h) The STATUS register holds the arithmetic status of the ALU, the page select bits, and the reset state. The STATUS register is accessible during run time, except that bits PD and TO are read-only. It is recommended that only SETB and CLRB instructions be used on this register. Care should be exercised when writing to the STATUS register as the ALU status bits are updated upon completion of the write operation, possibly leaving (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Carry bit, C - 13 - 1 = No borrow from bit 7 of the result occurred 0 = A borrow from bit 7 of the result occurred Rotate (RR or RL) Instructions: The carry bit is loaded with the low or high order bit, respectively When CF bit of the FUSEX register is cleared to 0, Carry bit works as input for ADD and SUB instructions. www.scenix.com SX48BD/SX52BD 4.3 RTW OPTION Register RTE _IE RTS RTE _ES PSA PS2 PS1 PS0 Table 4-2. Prescaler Divider Ratios PS2, PS1, PS0 Bit 7 Bit 0 When the OPTIONX bit in the FUSE word is cleared, bits 6 and 7 of the OPTION register function as described below. RTCC Divide Rate Watchdog Timer Divide Rate 000 1:2 1:1 001 1:4 1:2 When the OPTIONX bit is set, bits 7 and 6 of the OPTION register read as 1s. 010 1:8 1:4 011 1:16 1:8 Bit 7: RTW 100 1:32 1:16 101 1:64 1:32 110 1:128 1:64 111 1:256 1:128 RTCC/W register selection: 0 = Register 01h addresses W 1 = Register 01h addresses RTCC Bit 6: RTE_IE RTCC edge interrupt enable: 0 = RTCC roll-over interrupt is enabled 1 = RTCC roll-over interrupt is disabled Bit 5: RTS RTCC increment select: 0 = RTCC increments on internal instruction cycle 1 = RTCC increments upon transition on RTCC pin Bit 4: RTE_ES RTCC edge select: 0 = RTCC increments on low-to-high transitions 1 = RTCC increments on high-to-low transitions Bit 3: PSA Prescaler Assignment: 0 = Prescaler is assigned to RTCC, with divide rate determined by PS0PS2 bits 1 = Prescaler is assigned to WDT, and divide rate on RTCC is 1:1 Bits 2-0: PS2-PS0 Prescaler divider (see Table 4-2) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Upon reset, all bits in the OPTION register are set to 1. 4.4 DEVICE CONFIGURATION REGISTERS The SX device has three registers (FUSE, FUSEX, DEVICE) that control functions such as speed selection for the internal RC oscillator. These registers are not programmable "on the fly" during normal device operation. Instead, the FUSE and FUSEX registers can only be accessed when the SX device is being programmed. The DEVICE register is a read-only, hard-wired register, defined during the manufacturing process. - 14 - www.scenix.com SX48BD/SX52BD 4.5 FUSE Word (Read/Program at 1FFFh in main memory map) TURBO 11 SYNC 10 OPTIONX 9 STACKX 8 IRC 7 DIV2 6 DIV1 5 DIV0 4 CP 3 WDTE 2 FOSC1 1 FOSC0 0 TURBO SYNC Must be programmed to 0. Synchronous input enable: 0= enabled 1= disabled OPTIONX OPTION register extension enable: 0= OPTION register increased from six to eight bits for RTW and RTW_IE 1= OPTION register is six bits (two most significant bits forced to 1 so that register 01h addresses RTCC and RTCC roll-over interrupt is disabled) STACKX Stack extension enable: Must be initialized to 0 at all times (8 levels) IRC Internal RC oscillator enable: 0= enabled - OSC1 pulled low by a weak pulldown, OSC2 pulled high by a weak pullup 1= disabled - OSC1 and OSC2 behave according to FOSC1: FOSC0 DIV2: DIV0 Internal RC oscillator speed: 000b = 4 MHz 001b = 2 MHz 010b = 1 MHz 011b = 500 KHz 100b = 250 KHz 101b = 125 KHz 110b = 62.5 KHz 111b = 31.25 KHz CP Code protect enable: 0= enabled (FUSE, program memory contents, and Device Word read back as scrambled data) 1= disabled (FUSE, program memory contents, and Device ID can be read as normal data) WDTE Watchdog timer enable: 0= disabled 1= enabled FOSC1: FOSC0 External oscillator configuration (valid when IRC = 1): 00b = LP - low power crystal 10b = HS - high speed crystal 01b = XT - normal crystal 11b = RC network - External RC network connected to OSC1. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 15 - www.scenix.com SX48BD/SX52BD 4.6 FUSEX Word (Read/Program via Programming Command) SLEEPCLK 11 WDRT2: WDRT0 10 9 8 CF 7 IRCTRIM2: IRCTRIM0 6 5 4 Unused 3 2 BOR0:BOR0 1 0 SLEEPCLK 0 = Enable the operation of the clock during power down mode (to allow fast startup) WDRT2: WDRT0 1 = Disable clock operation during power down mode (to reduce power consumption) Delay Reset Timer (DRT) timeout period. This 3-bit field can be used to specify the DRT timeout period after wakeup is enabled until the end of power down mode. 101b = 0.06 msec 110b = 7.68 msec 111b = 18.4 msec (default) 000b = 60 msec 001b = 480 msec 010b= 960 msec 011b = 1920 msec CF IRCTRIM2: IRCTRIM0 For fast start-up from the power down mode, clear the SLEEPCLK bit and set the WDRT2:WDRT0 field to 101. This will keep the clock operating during the power down mode and allow minimum start-up delay. Carry Flag - makes the carry flag an input to ADD and SUB instructions. Internal RC Oscillator Trim. This 3-bit field adjusts the operation of the internal RC oscillator to make it operate within the target frequency range of 4.0 MHz plus or minus 8%. Parts are shipped from the factory untrimmed. The device relies on the programming tool to provide trimming. 000b = minimum frequency 111b = maximum frequency each step approx. 3% BOR1: BOR0 Brown-Out Reset; factory preset values. Bits should not be changed unless brown-out feature is to be disabled. 00b = brown-out enabled (4.2V) 01b = (reserved) 10b = (reserved) 11b = brown-out disabled 4.7 DEVICE Word (Hard-Wired Read-Only)- Part ID Code 0 11 0 10 0 9 0 8 0 7 (c) 1999 Scenix Semiconductor, Inc. All rights reserved. 0 6 0 5 - 16 - 0 4 0 3 0 2 0 1 1 0 www.scenix.com SX48BD/SX52BD 5.0 MEMORY ORGANIZATION 5.1 Program Memory The program memory is organized as 4K, 12-bit wide words. The program memory words are addressed sequentially by a binary program counter. Upon reset, the program counter is initialized with 0FFFh. If there is no branch operation, it will increment to the maximum value possible for the device and roll over and begin again. Internally, the program memory has a semi-transparent page structure. A page is composed of 512 contiguous program memory words. The lower nine bits of the program counter are zeros at the first address of a page and ones at the last address of a page. This page structure has no effect on the program counter. The program counter will freely increment through the page boundaries. 5.1.1 Program Counter The program counter contains the 12-bit address of the instruction to be executed. The lower eight bits of the program counter are contained in the PC register (02h). The three upper bits are specified by the STATUS register (PA0, PA1, PA2). Changing the STATUS bits is necessary to cause jumps and subroutine calls across program memory page boundaries. Prior to the execution of a branch operation, the user program must initialize the upper bits of the STATUS register to cause a branch to the desired page. An alternative method is to use the PAGE instruction, which automatically causes branch to the desired page, based on the value specified in the operand field. 5.1.2 Subroutine Stack The subroutine stack consists of eight 12-bit save registers. A physical transfer of register contents from the program counter to the stack or vice versa, and within the stack, occurs on all operations affecting the stack, primarily calls and returns. The stack is physically and logically separate from data RAM. The program cannot read or write the stack. 5.2 Data Memory The data memory is a RAM-based register set consisting of 262 general-purpose registers and nine special-purpose registers. All of these registers are eight bits wide. The data memory is organized into 16 banks, designated Bank 0 through Bank F, each containing 16 registers, plus an additional bank of 16 "global" registers. Because the registers are organized into banks or "files," these memory-mapped registers are called "file registers." 5.2.1 Addressing Modes Each SX instruction that accesses a data memory register contains a 5-bit field in the instruction opcode that specifies the register to be accessed. The abbreviation "fr" (file register) represents the 5-bit register address designator. For example, the instruction description "mov fr,W" means that a 5-bit value or label must be substituted for "fr" in the instruction, such as "mov $0F,W" (to move the contents of the working register W into file register 0Fh). (c) 1999 Scenix Semiconductor, Inc. All rights reserved. There are three different addressing modes, called the indirect, direct, and semi-direct modes. The addressing mode used for register access depends on the 5-bit "fr" value used in the instruction: * indirect mode: fr = 00h * direct mode (fr bit 4 = 0): fr = 01h through 0Fh * semi-direct mode (fr bit 4 = 1): fr = 10h through 1Fh Figure 5-1 illustrates the data memory addressing scheme. For indirect addressing (fr=00), the File Select Register (FSR) specifies the register to be accessed. FSR is an 8bit, memory-mapped register (at address 04h) which serves as an 8-bit pointer into data memory for indirect addressing. In this mode, the global register bank and Bank 1 through Bank F are accessible. Bank 0 is not accessible. For direct addressing (fr=01-0F), the value of "fr" itself specifies the register to be accessed, and the FSR register is ignored. For this addressing mode, only the global register bank is accessible. To gain access to any other bank, you must use either indirect or semi-direct addressing. For semi-direct addressing (fr=10-1F), the bank number is selected by the four high-order bits of FSR, and the register within that bank is selected by the four low-order bits of "fr." In other words, the register address is obtained by combining the four high-order bits of FSR with the four low-order bits of "fr". In this addressing mode, the low-order bits of FSR are ignored. Bank 0 through Bank F are accessible, but the global register bank is not accessible. Figure 5-1 shows how register addressing works in the indirect, direct, and semi-direct modes. The 16 global registers are always accessible by direct addressing, regardless of what is contained in the FSR register. The global registers are also accessible with indirect addressing, but they are not accessible with semi-direct addressing. Of the 16 global registers, nine are special-purpose registers (RTCC, PC, STATUS, and so on), and six are general-purpose registers. Location 00 is used for indirect addressing (INDF). All of the registers in Bank 0 though Bank F are general-purpose registers. To change the contents of the FSR register, the program can either write an eight-bit value to the FSR register or use the "bank" instruction. The "bank" instruction writes the three high-order bits in the FSR register, and clears bit 4 of the FSR. Thus, to change from one even-numbered bank to another, only a single "bank" instruction is required. To change from one odd-numbered bank to another, the "bank" instruction must be followed by "setb FSR.4". - 17 - www.scenix.com SX48BD/SX52BD 5-Bit "fr" Value of Instruction 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh FSR bits 7:0 select one of the registers in the global register set or a register in Bank 1 through Bank F. Bank 0 is not FSR Indirect Addressing "fr" bits 3:0 select one of 15 registers in the global register set. The FSR register is ignored. Bank 0 through Bank F are not accessible. 0 fr Direct Addressing 00 INDF 01 RTCC 02 PC 03 STATUS 04 FSR 05 RA 06 RB 07 RC 08 RD 09 RE 0A 0B 0C 0D 0E 0F Global Registers 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Bank 0 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F Bank 1 FSR Bank 2 E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF Bank E Bank F FSR bits 7:4 select one of 16 banks, and "fr" bits 3:0 select one of 16 registers in that bank. The four low-order bits of FSR are ignored. All 256 registers in Bank 0 through Bank F are accessible. The global registers are not accessible. X X X X 1 fr Semi-Direct Addressing Figure 5-1. Register Access Modes (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 18 - www.scenix.com SX48BD/SX52BD 5.2.2 Register Access Examples Here is an example of an instruction that uses direct addressing: inc $0F ;increment file register 0Fh Another approach is to set bit 4 of the FSR register individually after the "bank" instruction to address an oddnumbered bank. bank $30 setb FSR.4 ;set upper 3 bits in FSR ;select Bank 3 in FSR This instruction increments the contents of file register 0Fh in the global register bank. It does not matter what is contained in the FSR register. To change from an odd-numbered to even-numbered bank, only a single "bank" instruction would be required (since "bank" also clears FSR.4). To gain access to any register outside of the global register bank, it is necessary to use semi-direct or indirect addressing. In that case, you need to make sure that the FSR register contains the correct value for accessing the desired bank. With indirect addressing, you specify the full 8-bit address of the register using FSR as a pointer. This addressing mode provides the flexibility to access different registers or multiple registers using the same instruction in the program. Here are 2 examples that use semi-direct addressing: You invoke indirect addressing by using fr=00h. For example: mov W,#$F0 mov FSR,W inc $1F ;load W with F0h ;load W into FSR (Bank F) ;increment file register FFh mov mov mov mov Or, to access bank 0, mov W,#$00 mov FSR,W inc $1F ;load W with 00h ;load W into FSR (Bank 0) ;increment file register 0Fh In these examples, "FSR" is a label that represents the value 04h, which is the address of the FSR register in the global register bank. Note that the FSR register is itself a memory-mapped global register, which is always accessible using direct addressing. To use the "bank" instruction, in the syntax of the assembly language, you specify an 8-bit value that corresponds to the desired bank number. The assembler encodes the three high-order bits of the specified value into the instruction opcode and ignores the low-order bits. In addition, the execution of the "bank" instruction forces a zero to bit 4 of the FSR register. For example, to increment file register 2Fh, you could use the following instructions: bank $20 inc $1F ;select Bank 2 in FSR ;increment register 2F Note that the "bank" instruction modifies the upper three bits and clears bit 4 in the FSR register. Therefore, to change from an even-numbered to odd-numbered bank, the "bank" instruction will not work. Instead, you need to write the whole FSR register using code such as the following: mov W,#$30 mov FSR,W ;load W with 30h ;select Bank 3 in FSR (c) 1999 Scenix Semiconductor, Inc. All rights reserved. W,#$F5 $04,W W,#$01 $00,W ;load ;move ;load ;move W with F5h value F5h into FSR W with 01h value 01h into register F5h In the second "mov" instruction, FSR is loaded with the desired 8-bit register address. In the fourth "mov" instruction, fr = 00, so the device looks at FSR and moves the result to the register addressed by FSR, which is the register at F5h (Bank F, register number 5). A practical example that uses indirect addressing is the following program, which clears the upper eight registers in the global register bank and the upper 8 registers in all banks from Bank 1 through Bank F: clr FSR ;clear FSR to 00h (at address 04h) :loop setb FSR.3 ;set FSR bit 3 clr $00 ;clear register pointed to by FSR incsz FSR ;increment FSR and test ;skip jmp if 00h jmp:loop ;jump back and clear next reg. This program initially clears FSR to 00h. At the beginning of the loop, it sets bit 3 of FSR so that it starts at 08h. The "clr $00" instruction clears the register pointed to by FSR (initially, the file register at 08h in the global register bank). Then the program increments FSR and clears consecutive file registers, always in the upper half of each bank: (08h, 09h, 0Ah... 0Fh, 18h, 19h... FFh). The loop ends when FSR wraps back to 00h. For addresses from 01h through 0Fh, the global register bank is accessed. For higher addresses, Bank 1 through Bank F are accessed. This program does not affect Bank 0, which is not accessible in the indirect addressing mode. Bank 0 can be accessed only using the semidirect mode. - 19 - www.scenix.com SX48BD/SX52BD 6.0 POWER DOWN MODE 6.1 The power down mode is entered by executing the SLEEP instruction. In power down mode, only the Watchdog Timer (WDT) is active, if enabled. If the Watchdog Timer is enabled, upon execution of the SLEEP instruction, the Watchdog Timer is cleared, the TO (time out) bit is set in the STATUS register, and the PD (power down) bit is cleared in the STATUS register. There are three different ways to exit from the power down mode: 1. A timer overflow signal from the Watchdog Timer (WDT) 2. A valid transition on any of the Multi-Input Wakeup pins (Port B pins) 3. An external reset input on the MCLR pin. The states of registers (upon wakeup) are described in Section 14.0. Once a valid transition occurs on the selected pin, the WKPND_B register (Wakeup Pending Register) latches the transition in the corresponding bit position. A logic `1' indicates the occurrence of the selected trigger edge on the corresponding Port B pin. The WKPND_B comes up with undefined value upon reset. The user program must clear the WKPND_B register prior to enabling the interrupt. To achieve the lowest possible power consumption, the Watchdog Timer should be disabled (the sleep clock should be disabled) and the device should exit the power down mode through the (Multi-Input Wakeup) MIWU pins or an external reset. In addition, the SLEEPCLOCK should be disabled during the power down mode. Upon exiting the power down mode, the Multi-Input Wakeup logic causes program counter to branch to the maximum program memory address (same as reset). Bit 11 of the FUSEX can be used to enable (clear bit to 0) the clock operation during the power down mode (to allow fast clock start-up upon exiting the power down mode). RB7 Multi-Input Wakeup Multi-Input Wakeup is one way of causing the device to exit the power down mode. Port B is used to support this feature. The WKEN_B register (Wakeup Enable Register) allows any Port B pin or combination of pins to cause the wakeup. Clearing a bit in the WKEN_B register enables the wakeup on the corresponding Port B pin. If multi-input wakeup is selected to cause a wakeup, the trigger condition on the selected pin can be either rising edge (low to high) or falling edge (high to low). The WKED_B register (Wakeup Edge Select) selects the desired transition edge. Setting a bit in the WKED_B register selects the falling edge on the corresponding Port B. Resetting the bit selects the rising edge. The WKEN_B and WKED_B registers are set to FFh upon reset. Figure 6-1 shows the Multi-Input Wakeup block diagram. RB6 RB1 RB0 Port B Configured as Input W MODE=0B/1B Internal Data Bus MODE 8 MODE=0A/1A 8 WKED_B 0 1 WKPND_B MODE=09/19 Wake-up: Exit Power Down WKEN_B 0 = Enable 1 = Disable 8 Figure 6-1. Multi-Input Wakeup Block Diagram (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 20 - www.scenix.com SX48BD/SX52BD 6.2 Port B MIWU/Interrupt Configuration The WKPND_B register comes up with a random value upon reset. The user program must clear the register prior to enabling the wake-up condition or interrupts. The proper initialization sequence is: Here is an example of a program segment that configures the RB0, RB1, and RB2 pins to operate as MultiInput Wakeup/Interrupt pins, sensitive to falling edges: mov mov mov mov 1. Select the desired edge (through WKED_B register) 2. Clear the WKPND_B register 3. Enable the Wakeup condition (through WKEN_B register) Below is an example of how to read the WKPND_B register to determine which Port B pin caused the wakeup or interrupt, and to clear the WKPND_B register: W,#$1F M,W W,#$07 !RB,W ;prepare to write port data ;direction registers mov W,#$1A mov M,W ;prepare to write WKED_B ;(edge) register ;W contains the value 07h ;configure RB0-RB2 to sense ;falling edges mov !RB,W mov mov clr mov W, #$19 ;prepare to exchange WKPND_B with W (can also use $09) M, W W !RB,W ;W contains WKPND_B ;contents of W exchanged ;with contents of WKPND_B The final "mov" instruction in this example performs an exchange of data between the working register (W) and the WKPND_B register. This exchange occurs only with accesses to the WKPND_B and CMP_B registers. Otherwise, the "mov" instruction does not perform an exchange, but only moves data from the source to the destination. ;load W with the value 07h ;configure RB0-RB2 to be inputs mov mov mov mov W,#$19 M,W W,#$00 !RB,W ;prepare to access WKPND_B ;(pending) register ;clear W ;clear all wakeup pending flags mov mov mov mov W,#$1B M,W W,#$F8 !RB,W ;prepare to write WKEN_B (enable) ;register ;load W with the value F8h ;enable RB0-RB2 to operate as ;wakeup inputs To prevent false interrupts, the enabling step (clearing bits in WKEN_B) should be done as the last step in a sequence of Port B configuration steps. After this program segment is executed, the device can receive interrupts on the RB0, RB1, and RB2 pins. If the device is put into the power down mode (by executing a SLEEP instruction), the device can then receive wakeup signals on those same pins. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 21 - www.scenix.com SX48BD/SX52BD 7.0 INTERRUPT SUPPORT The device supports both internal and external maskable interrupts. The internal interrupt is generated as a result of the RTCC rolling over from FFh to 00h. This interrupt source has an associated enable bit located in the OPTION register and pending flag bit in the Timer T1 Control B register. In addition, timers T1 and T2 each has three interrupt sources associated with counter overflow, compare match, and input capture. Port B provides the source for eight external software selectable, edge sensitive interrupts, when the device is not in the power down mode. These interrupt sources share logic with the Multi-Input Wakeup circuitry. The WKEN_B register allows interrupt from Port B to be individually enabled or disabled. Clearing a bit in the WKEN_B register enables the interrupt on the corresponding Port B pin. The WKED_B selects the transition edge to be either positive or negative. The WKEN_B and WKED_B registers are set to FFh upon reset. Setting a bit in the WKED_B register selects the falling edge while clearing the bit selects the rising edge on the corresponding Port B pin. The WKPND_B register serves as the external interrupt pending register. The WKPND_B register comes up with a random value upon reset. The user program must clear the WKPND_B register prior to enabling the interrupt. Port B PIN WKED_B WKED_B RTCC Overflow From MODE (MODE = 0A/1A) In te rn a l D ata B u s WKPND_B WKPND_B STATUS Register PD Flag From MODE (MODE = 09/19) Interrupt 1 = Ext. Interrupt through Port B 0 = Sleep Mode, no Ext. Interrupt PC 000 Interrupt Stack PC RTE_IE OPTION WKEN_B Device-Specific Interrupt Sources (e.g. Timer T1) Figure 7-1. Interrupt Structure (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 22 - www.scenix.com SX48BD/SX52BD All interrupts are global in nature; that is, no interrupt has priority over another. Interrupts are handled sequentially. Figure 7-2 shows the interrupt processing sequence. Once an interrupt is acknowledged, all subsequent global interrupts are disabled until return from servicing the current interrupt. The PC is pushed onto the single level interrupt stack, and the contents of the FSR, STATUS, and W registers are saved in their corresponding shadow registers. The status bits PA2, PA1, and PA0 are cleared after STATUS has been saved in its shadow register. The interrupt logic has its own single-level stack and is not part of the CALL subroutine stack. The vector for the interrupt service routine is address 0. Once in the interrupt service routine, the user program must poll all interrupt pending bits to determine the source of the interrupt. The interrupt service routine should clear the corresponding interrupt pending flag. Normally it is a requirement for the user program to process every interrupt without missing any. To ensure this, the longest path through the interrupt routine must take less time than the shortest possible delay between interrupts. If an external interrupt occurs during the interrupt routine, the pending register will be updated but the trigger will be ignored unless interrupts are disabled at the beginning of the interrupt routine and enabled again at the end. This also requires that the new interrupt does not occur before interrupts are disabled in the interrupt routine. If an additional interrupt occurs before it can be disabled, the device will miss the interrupt. In other words, using more than one interrupt, such as multiple external interrupts or both RTCC and external interrupts, can result in missed or, at best, jittery interrupt handling should one occur during the processing of another. When handling external interrupts, the interrupt routine should clear at least one pending register bit. The bit that is cleared should represent the interrupt being handled in order for the next interrupt to trigger. Upon return from the interrupt service routine, the contents of PC, FSR, STATUS, and W registers are restored from their corresponding shadow registers. The interrupt service routine should end with instructions such as RETI or RETIW. RETI pops the interrupt stack and the special shadow registers used for storing W, STATUS, and FSR (preserved during interrupt handling). RETIW behaves like RETI but also adds W to RTCC. The interrupt return instruction enables the global interrupts. If a MIWU interrupt occurs during a pre-existing interrupt service routine, the MIWU interrupt flag is set immediately, and the MIWU interrupt is serviced upon completion of the pre-existing interrupt service routine. Program Memory Address 000h Interrupt Service Routine PC RETI Interrupt Stack Interrupt Stack 000h PC PC W Register W Shadow Register W Register W Shadow Register STATUS Register STATUS Shadow Register STATUS Register STATUS Shadow Register FSR Register FSR Shadow Register FSR Register FSR Shadow Register Note:The interrupt logic has its own single-level stack and is not part of the CALL subroutine stack. Figure 7-2. Interrupt Processing (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 23 - www.scenix.com SX48BD/SX52BD 8.0 OSCILLATOR CIRCUITS The device supports several user-selectable oscillator modes. The oscillator modes are selected by programming the appropriate values into the FUSE Word register. These are the different oscillator modes offered: LP: XT: HS: RC: 8.1 SX Device Low Power Crystal Crystal/Resonator High Speed Crystal/Resonator External Resistor/Capacitor Internal Resistor/Capacitor OSC2 OSC1 XT, LP or HS modes Open In XT, LP or HS modes, you can use either an external resonator network or an external clock signal as the device clock. To use an external resonator network, you connect a crystal or ceramic resonator to the OSC1/CLKIN and OSC2/CLKOUT pins according to the circuit configuration shown in Figure 8-1. Table 8-1 shows the recommended capacitor values to be used with ceramic resonators. Table 8-1 shows the recommended component values to be used at different crystal frequencies. A parallel resonant crystal type is recommended. Use of a series resonant crystal may result in a frequency that is outside the crystal manufacturer specifications. If the XT, LP, or HS mode is selected, the OSC1/CLKIN pin can be driven by an external clock source rather than a resonator network, as long as the clock signal meets the specified duty cycle, rise and fall times, and input levels (Figure 8-2). In this case, the OSC2/CLKOUT pin should be left open. Externally Generated Clock Figure 8-2. External Clock Input Operation (HS, XT or LP OSC Configuration) Table 8-1. Component Selection for Crystal Oscillator (fundamental mode crystal) Osc Type Crystal Frequency C1 (pF) C2 (pF) RF HS 50 15 15 1 RS = 0 SX Device Internal Circuitry SLEEPCLK OSC1 OSC2 RF RS XTAL C1 C2 Figure 8-1. Crystal Operation (or Ceramic Resonator) (HS, XT or LP OSC Configuration) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 24 - www.scenix.com SX48BD/SX52BD 8.2 External RC Mode The external RC oscillator mode provides a cost-effective approach for applications that do not require a precise operating frequency. In this mode, the RC oscillator frequency is a function of the supply voltage, the resistor (R) and capacitor (C) values, and the operating temperature. In addition, the oscillator frequency will vary from unit to unit due to normal manufacturing process variations. Furthermore, the difference in lead frame capacitance between package types also affects the oscillation frequency, especially for low C values. The external R and C component tolerances contribute to oscillator frequency variation as well. SX Device ~ N /4 Figure 8-3 shows the external RC connection diagram. The recommended R value is from 3k to 100k. For R values below 2.2k, the oscillator may become unstable, or may stop completely. For very high R values (such as 1 M), the oscillator becomes sensitive to noise, humidity, and leakage. Although the oscillator will operate with no external capacitor (C = 0pF), it is recommended that you use values above 20 pF for noise immunity and stability. With no or small external capacitance, the oscillation frequency can vary significantly due to variation in PCB trace or package lead frame capacitances. In the external RC mode, the OSC2/CLKOUT pin provides an output frequency, which is the input frequency divided by four. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Internal Circuitry OSC1 Vdd OSC2 R C Figure 8-3. RC Oscillator Mode 8.3 Internal RC Mode The internal RC mode uses an internal oscillator, so the device does not need any external components. At 4 MHz, the internal oscillator provides +/-8% accuracy over the allowed temperature range. The internal clock frequency can be divided down to provide one of eight lower-frequency choices by selecting the desired value in the FUSE Word register. The frequency range is from 31.25 kHz to 4 MHz.The default operating frequency of the internal RC oscillator may not be 4 MHz. This is due to the fact that the SX device requires trimming to obtain 4 MHz operation. The parts shipped out of the factory are not trimmed. The device relies on the programming tool provided by the third party vendors to support trimming. - 25 - www.scenix.com SX48BD/SX52BD 9.0 REAL TIME CLOCK COUNTER (RTCC)/WATCHDOG TIMER 9.2 The device contains an 8-bit Real Time Clock/Counter (RTCC) and an 8-bit Watchdog Timer (WDT). An 8-bit programmable prescaler extends the RTCC to 16 bits. If the prescaler is not used for the RTCC, it can serve as a postscaler for the Watchdog Timer. Figure 9-1 shows the RTCC and WDT block diagram. 9.1 RTCC RTCC is an 8-bit real-time timer that is incremented once each instruction cycle or from a transition on the RTCC pin. The on-board prescaler can be used to extend the RTCC counter to 16 bits. The RTCC counter can be clocked by the internal instruction cycle clock or by an external clock source presented at the RTCC pin. To select the internal clock source, bit 5 of the OPTION register should be cleared. In this mode, RTCC is incremented at each instruction cycle unless the prescaler is selected to increment the counter. To select the external clock source, bit 5 of the OPTION register must be set. In this mode, the RTCC counter is incremented with each valid signal transition at the RTCC pin. By using bit 4 of the OPTION register, the transition can be programmed to be either a falling edge or rising edge. Setting the control bit selects the falling edge to increment the counter. Clearing the bit selects the rising edge. Watchdog Timer The watchdog logic consists of a Watchdog Timer which shares the same 8-bit programmable prescaler with the RTCC. The prescaler actually serves as a postscaler if used in conjunction with the WDT, in contrast to its use as a prescaler with the RTCC. The WDT is clocked by it's own internal RC oscillator. 9.3 The Prescaler The 8-bit prescaler may be assigned to either the RTCC or the WDT through the PSA bit (bit 3 of the OPTION register). Setting the PSA bit assigns the prescaler to the WDT. If assigned to the WDT, the WDT clocks the prescaler and the prescaler divide rate is selected by the PS0, PS1, and PS2 bits located in the OPTION register. Clearing the PSA bit assigns the prescaler to the RTCC. Once assigned to the RTCC, the prescaler clocks the RTCC and the divide rate is selected by the PS0, PS1, and PS2 bits in the OPTION register. The prescaler is not mapped into the data memory, so run-time access is not possible. The prescaler cannot be assigned to both the RTCC and WDT simultaneously. The RTCC generates an interrupt as a result of an RTCC rollover from FFh to 00h. Bit 7 of the Timer T1 Control B register is an interrupt pending flag (RTCCOV) associated with this event. The program should read this flag to determine any rollover occurrence. Writing to the RTCC also clears the prescaler if it is assigned to the RTCC (bit 3 at OPTION register is cleared).Using the "TEST fr" with RTCC (with fr being the RTCC and RTCC clock internally or externally) will not allow the RTCC to increment. The workaround is to use the "MOV W, RTCC" instruction instead. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 26 - www.scenix.com SX48BD/SX52BD WDTE (from FUSE Word) WDT M U X RTCC Interrupt Enable FOSC RTCC pin MUX 8-Bit Prescaler RTW RTE_IE RST RTE_ES PSA PS2 PS1 PS0 OPTION Register MUX (8 to 1) RTCC Rollover Interrupt M U X RTCC MUX 8-Bits WDT Timeout Interrupt to CPU Data Bus Pending Flag (RTCCOV bit in T1CNTB Register, SX48/52BD only) Figure 9-1. RTCC and WDT Block Diagram (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 27 - www.scenix.com SX48BD/SX52BD 10.0 MULTI-FUNCTION TIMERS The device contains two independent 16-bit multi-function timers, designated T1 and T2. These versatile, programmable timers reduce the software burden on the CPU in real-time control applications such as PWM generation, motor control, triac control, variable-brightness display control, sine wave generation, and data acquisition. Each timer consists of a 16-bit counter register supported by a dedicated 16-bit capture register and two 16-bit comparison register. The second compare register can also serve as capture register. Each timer uses up to four I/O pins: one clocking input, two capture inputs, and one timer output. The timer I/O pins are alternate functions of Port B pins for timer T1 and Port C pins for Timer T2. Figure 10-1 is a block diagram showing the registers and I/O pins of one timer. The 16-bit free-running timer/counter register is initialized to 0000h upon reset and counts upward continuously. It is clocked either by an external signal provided on an I/O pin or by the onchip system clock divided by a programmable 8-bit prescaler register. Compare Interrupt Capture 2 Output match 16-Bit Compare R2/Capture Register2 System Clock 8-Bit Prescaler Timer Operating Modes Each timer can be configured to operate in one of the following modes: * * * * Pulse Width Modulation (PWM) mode Software Timer mode External Event mode Capture/Compare mode 10.1.1 PWM Mode In the Pulse Width Modulation (PWM) mode, the timer generates an output signal having a programmable frequency and duty cycle. To use this mode, you load two 16-bit comparison registers, R1 and R2, with the number of timer clock cycles that you want the output signal to be high and low. The timer starts from zero and counts up until it reaches the value in R1. At that point, it generates an interrupt (if enabled), toggles the output signal, and starts counting from zero again. The second time, it counts up until it reaches the value in R2. At that point, it again generates an interrupt (if enabled), toggles the output signal, and starts counting from zero again. This process is repeated continuously, alternating between R1 and R2 to obtain the value at which to toggle the output signal and return the counter to zero. The values of R1 and R2 establish the duty cycle and frequency of the output signal. If R1 and R2 contain the same value, the resulting output signal is a square wave. In the PWM mode, the timer is clocked by the on-chip system clock divided by an 8-bit prescaler value. The divide-by factor can be set to any power-of-2 from 1 to 256. Thus, the period of the timer clock can be set from 1 to 256 times the system clock period. 16-Bit Compare Register R1 10.1.2 Software Timer Mode 16-Bit Comparator The Software Timer mode is the same as the PWM mode, except that the timer does not toggle the output signal. Instead, the application program takes action in response to the interrupts generated upon each match between the counter and the contents of the active comparison value in either R1 or R2. The software can determine the cause of each interrupt by checking the timer interrupt pending flags. There are different flag bits associated with each type of event (R1 match, R2 match, and overflow). Ext. Clock MUX 10.1 16-Bit Free-Running Timer/Counter Capture Interrupt Capture 1 16-Bit Capture Register 1 Figure 10-1. Multi-Function Timer Block Diagram The CPU can access the Compare and Capture registers by using the "mov !RB,W" instruction for T1 or the "mov !RC,W" instruction for T2. The other timer registers are not directly accessible. You can configure the timer to generate an interrupt upon overflow from FFFFh to 0000h, upon a match between the counter value and a programmed comparison value, or upon the occurrence of a valid capture signal on either of two capture inputs. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. 10.1.3 External Event Mode The External Event mode is the same as the PWM mode, except that the counter register is clocked by an external signal provided on an input pin rather than by the system clock. This mode can be used to count the occurrences of external events. The input pin can be configured to sense either rising or falling edges. - 28 - www.scenix.com SX48BD/SX52BD 10.1.4 Capture/Compare Mode In the Capture/Compare mode, the counter counts upward continuously without interruption. A valid transition received on either of two input pins causes the current value of the counter to be captured in an associated capture register. This capture feature can be used to keep track of the elapsed time between successive external events. In addition, the timer continuously compares the counter value against the value programmed into the R1 register. Each time a match occurs, it toggles the timer output pin, and also generates an interrupt (if enabled). The timer continues to count upward after a match occurs (unlike the PWM mode, which resets the counter to zero when a match occurs). timer output pin. It also generates an interrupt (if enabled) and sets an associated interrupt pending flag. The timer continues to run freely without being reset to zero. Therefore, if you want to have a fixed timeout period for this interrupt, the interrupt service routine must write a new value into R1 each time a match occurs. 10.2 Timer Pin Assignments The following table lists the I/O port pins associated with the Timer T1 and Timer T2 I/O functions. Table 10-1. Timer T1/T2 Pin Assignments I/O Pin Timer T1/T2 Function RB4 Timer T1 Capture Input 1 In the Capture/Compare mode, the timer is clocked by the on-chip system clock divided by an 8-bit prescaler value. The divide-by factor can be set to any power-of-2 from 1 to 256. RB5 Timer T1 Capture Input 2 RB6 Timer T1 PWM/Compare Output RB7 Timer T1 External Event Clock Source The two input capture pins are designated Capture 1 and Capture 2. They can be configured to sense either rising or falling edges. The Capture 1 pin captures the counter value in a dedicated 16-bit capture register, a read-only register. The Capture 2 pin captures the counter value in the R2 register. The occurrence of a capture event also generates an interrupt (if enabled) and sets an associated interrupt pending flag. RC0 Timer T2 Capture Input 1 RC1 Timer T2 Capture Input 2 RC2 Timer T2 PWM/Compare Output RC3 Timer T2 External Event Clock Source 10.3 Timer Control Registers Overflow of the counter from FFFFh to 0000h also generates an interrupt (if enabled) and sets an associated interrupt pending flag. Because the counter is free-running, an overflow can occur at any time. In cases where the time between successive capture events might exceed 65,536 counts of the timer, the software should keep track of the number of overflows between successive events in order to determine the true amount of time between such events. There are two 8-bit control registers associated with each timer, called the Control A and Control B registers. The Control A register contains the interrupt enable bits and interrupt flag bits associated with the timer. (Interrupts are caused by comparison, capture, and overflow events.) The Control B register contains bits for setting the timer operating mode, the clock prescaler divide-by factor, and the input signal edge sensitivity. Each Control B register also contains one device configuration bit not related to operation of the multi-function timers. An occurrence of a match between the counter value and the programmed value in the R1 register toggles the The register formats are shown in the following diagrams. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 29 - www.scenix.com SX48BD/SX52BD Timer T1 Control A Register (T1CNTA) T1CPF2 7 T1CPF2 T1CPF1 T1CPIE T1CMF2 T1CMF1 T1CMIE T1OVF T1OVIE T1CPF1 6 T1CPIE 5 T1CMF2 4 T1CMF1 3 T1CMIE 2 T1OVF 1 T1OVIE 0 Timer T1 Capture Flag 2. In Capture/Compare mode, this flag is automatically set to 1 when a capture event occurs on the Capture 2 pin of Timer T1 (pin RB5). It stays set until cleared by the software. Timer T1 Capture Flag 1. In Capture/Compare mode, this flag is automatically set to 1 when a capture event occurs on the Capture 1 pin of Timer T1 (pin RB4). It stays set until cleared by the software. Timer T1 Capture Interrupt Enable. Set this bit to 1 to enable capture interrupts for Timer T1 in Capture/Compare mode. In that case, an interrupt will occur each time a valid edge is received on the Capture 1 or Capture 2 pin of Timer T1. Clear this bit to 0 to disable capture interrupts. Timer T1 Comparison Flag 2. This flag is automatically set to 1 when the contents of the timer counter match the contents of R2, when R2 is the active comparison register. The flag stays set until it is cleared by the software. Timer T1 Comparison Flag 1. This flag is automatically set to 1 when the contents of the timer counter match the contents of R1, when R1 is the active comparison register. The flag stays set until it is cleared by the software. Timer T1 Comparison Interrupt Enable. Set this bit to 1 to enable comparison interrupts for Timer T1. In that case, an interrupt will occur each time the contents of the timer counter match the contents of the active comparison register (R1 or R2) of Timer T1. Clear this bit to 0 to disable comparison interrupts. Timer T1 Overflow Flag. This flag is automatically set to 1 when the timer counter overflows from FFFFh to 0000h. The flag stays set until it is cleared by the software. Timer T1 Overflow Interrupt Enable. Set this bit to 1 to enable overflow interrupts for Timer T1. In that case, an interrupt will occur each time Timer T1 overflows. Clear this bit to 0 to disable overflow interrupts. Timer T1 Control B Register (T1CNTB) RTCCOV 7 RTCCOV T1CPEDG T1EXEDG T1PS2T1PS0 T1MC1T1MC0 T1CPEDG 6 T1EXEDG 5 4 T1PS2-T1PS0 3 2 T1MC1-T1MC0 1 0 RTCC Overflow Flag. This flag is automatically set to 1 when the Real-Time Clock/Counter (RTCC) overflows from FFh to 00h. This flag stays set until it is cleared by the software. Note that this flag is not related to multi-function timers T1 and T2. Timer T1 Capture Edge. This bit sets the edge sensitivity of the Timer T1 input capture pins, Capture 1 and Capture 2 (RB4 and RB5). Set this bit to 1 to sense positive-going (low-to-high) edges. Clear this bit to 0 to sense negative-going (high-to-low) edges. Timer T1 External Event Clock Edge. This bit sets the edge sensitivity of the Timer T1 input used to count external events (RB7). Set this bit to 1 to sense positive-going (low-to-high) edges. Clear this bit to 0 to sense negative-going (high-to-low) edges. Timer T1 Prescaler Divider field. This 3-bit field specifies the divide-by factor for generating the timer clock from the on-chip system clock: 000 = divide by 1 001 = divide by 2 010 = divide by 4 011 = divide by 8 100 = divide by 16 101= divide by 32 110 = divide by 64 111 = divide by 128 For example, setting this field to 010 sets the divide-by factor to 4, which means that the T1 counter register is incremented once every four system clock cycles. Timer T1 Mode Control field. This 2-bit field specifies the Timer T1 operating mode as follows: 00 = Software Timer mode 01 = PWM mode 10 = Capture/Compare mode 11 = External Event mode (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 30 - www.scenix.com SX48BD/SX52BD Timer T2 Control A Register (T2CNTA) T2CPF2 7 T2CPF2 T2CPF1 T2CPIE T2CMF2 T2CMF1 T2CMIE T2OVF T2OVIE T2CPF1 6 T2CPIE 5 T2CMF2 4 T2CMF1 3 T2CMIE 2 T2OVF 1 T2OVIE 0 Timer T2 Capture Flag 2. In Capture/Compare mode, this flag is automatically set to 1 when a capture event occurs on the Capture 2 pin of Timer T2 (pin RC1). It stays set until cleared by the software. Timer T2 Capture Flag 1. In Capture/Compare mode, this flag is automatically set to 1 when a capture event occurs on the Capture 1 pin of Timer T2 (pin RC1). It stays set until cleared by the software. Timer T2 Capture Interrupt Enable. Set this bit to 1 to enable capture interrupts for Timer T2 in Capture/Compare mode. In that case, an interrupt will occur each time a valid edge is received on the Capture 1 or Capture 2 pin of Timer T2. Clear this bit to 0 to disable capture interrupts. Timer T2 Comparison Flag 2. This flag is automatically set to 1 when the contents of the timer counter match the contents of R2, when R2 is the active comparison register. The flag stays set until it is cleared by the software. Timer T2 Comparison Flag 1. This flag is automatically set to 1 when the contents of the timer counter match the contents of R1, when R1 is the active comparison register. The flag stays set until it is cleared by the software. Timer T2 Comparison Interrupt Enable. Set this bit to 1 to enable comparison interrupts for Timer T2. In that case, an interrupt will occur each time the contents of the timer counter match the contents of the active comparison register (R1 or R2) of Timer T2. Clear this bit to 0 to disable comparison interrupts. Timer T2 Overflow Flag. This flag is automatically set to 1 when the timer counter overflows from FFFFh to 0000h. The flag stays set until it is cleared by the software. Timer T2 Overflow Interrupt Enable. Set this bit to 1 to enable overflow interrupts for Timer T2. In that case, an interrupt will occur each time Timer T2 overflows. Clear this bit to 0 to disable overflow interrupts. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 31 - www.scenix.com SX48BD/SX52BD Timer T2 Control B Register (T2CNTB) PORTRD 7 PORTRD T2CPEDG T2EXEDG T2PS2T2PS0 T2CPEDG 6 T2EXEDG 5 4 T2PS2-T2PS0 3 2 T2MC1-T2MC0 1 0 Port Read mode. This bit determines how the device reads data from its I/O ports (Port A through Port E). Set this bit to 1 to have the device read data from the port I/O pins directly. Clear this bit to 0 to have the device read data from the port data registers. Under normal conditions, it should not matter which method you use to read the port data. However, if a port pin is configured as an output and an external circuit forces the pin to the wrong value, the value read from the port will depend on the reading mode used. Note that this control bit is not related to multi-function timers T1 and T2. Timer T2 Capture Edge. This bit sets the edge sensitivity of the Timer T2 input capture pins, Capture 1 and Capture 2 (RC0 and RC1). Set this bit to 1 to sense positive-going (low-to-high) edges. Clear this bit to 0 to sense negative-going (high-to-low) edges. Timer T2 External Event Clock Edge. This bit sets the edge sensitivity of the Timer T2 input used to count external events (RC3). Set this bit to 1 to sense positive-going (low-to-high) edges. Clear this bit to 0 to sense negative-going (high-to-low) edges. Timer T2 Prescaler Divider field. This 3-bit field specifies the divide-by factor for generating the timer clock from the on-chip system clock: 000 = divide by 1 001 = divide by 2 010 = divide by 4 011 = divide by 8 100 = divide by 16 101 = divide by 32 110 = divide by 64 111 = divide by 128 T2MC1T2MC0 For example, setting this field to 010 sets the divide-by factor to 4, which means that the T2 counter register is incremented once every four system clock cycles. Timer T2 Mode Control field. This 2-bit field specifies the Timer T1 operating mode as follows: 00 = Software Timer mode 01 = PWM mode 10 = Capture/Compare mode 11 = External Event mode (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 32 - www.scenix.com SX48BD/SX52BD 11.0 COMPARATOR The device contains an on-chip differential comparator. Ports RB0-RB2 support the comparator. Pins RB1 and RB2 are the comparator negative and positive inputs, respectively, while RB0 serves as the comparator output pin. To use these pins in conjunction with the comparator, the user program must configure RB1 and RB2 as inputs and RB0 as an output. The CMP_B register is used to enable the comparator, to read the output of the comparator internally, and to enable the output of the comparator to the comparator output pin. The comparator enable bits are set to "1" upon reset, thus disabling the comparator. To avoid drawing additional current during the power down mode, the comparator should be disabled before entering the power down mode. Here is an example of how to set up the comparat The final "mov" instruction in this example performs an exchange of data between the working register (W) and the CMP_B register. This exchange occurs only with accesses to CMP_B and WKPEND_B. Otherwise, the "mov" instruction does not perform an exchange, but only moves data from the source to the destination. The following figure shows the format of the CMP_B register. CMP_B - Comparator Enable/Status Register CMP_EN Bit 7 CMP_RES or and read the CMP_B register. mov W,#$18 mov M,W ;set MODE register to access ;CMP_B mov W,#$00 ;clear W CMP_OE mov !RB,W ;enable comparator and its ;output CMP_EN ... ;delay after enabling ;comparator for response mov W,#$18 mov M,W ;set MODE register to access ;CMP_B mov W,#$00 ;clear W mov !RB,W ;enable comparator and its ;output and also read CMP_B ;(exchange W and CMP_B) and W,#$01 ;set/clear Z flag based on ;comparator result snb $03.2 ;test Z flag in STATUS reg ;(0 => RB2RB1 CMP_OE Bit 6 Reserved Bits 5-1 CMP_RES Bit 0 Comparator result: 1 for RB2>RB1 or 0 for RB2 RB2RB1 ... (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 33 - www.scenix.com SX48BD/SX52BD Internal D ata Bus C M P_B C M P_EN 7 C M P_O E 6 W R B0 R E S E R V E D - R B1 + R B2 C M P_R ES MODE M O D E = 08/18 0 Point to C M P_B Figure 11-1. Comparator Block Diagram (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 34 - www.scenix.com SX48BD/SX52BD 12.0 RESET Power-On-Reset, Brown-Out reset, watchdog reset, wakeup reset, or external reset initializes the device. Each one of these reset conditions causes the program counter to branch to the top of the program memory (FFFh). the time period it takes Vdd to reach a valid operating voltage. The device incorporates an on-chip Power-On Reset (POR) circuit that generates an internal reset as Vdd rises during power-up. Figure 12-1 shows the block diagram of the circuit. The circuit contains a 10-bit Delay Reset Timer (DRT) and a reset latch. The DRT controls the reset timeout delay. The reset latch controls the internal reset signal. Upon power-up, the reset latch is set (device held in reset), and the DRT starts counting once it detects a valid logic high signal at the MCLR pin. Once DRT reaches the end of the timeout period (typically 72 msec), the reset latch is cleared, releasing the device from reset state. Vdd MCLR POR Tdrt drt_time_out RESET Figure 12-2. Time-Out Sequence on Power-Up (MCLR not tied to Vdd) POR POR Vdd V1 Vdd MIWU MCLR BROWN-OUT POR Tdrt drt_time_out MCLR/Vpp pin RESET wdt_time_out enable rc_clk 10-Bit Asynch S Ripple Counter (DRT Start-Up R Timer) drt_time _out Figure 12-3. Time-out Sequence on Power-up (MCLR tied to Vdd): Slow Rise Time Q RESET QN Vdd Note:Ripple counter is 10 bits for Power on Reset (POR) only. D R Figure 12-1. Block Diagram of On-Chip Reset Circuit R1 MCLR C Figure 12-2 shows a power-up sequence where MCLR is not tied to the Vdd pin and Vdd signal is allowed to rise and stabilize before MCLR pin is brought high. The device will actually come out of reset Tdrt msec after MCLR goes high. The brown-out circuitry resets the chip when device power (Vdd) dips below its minimum allowed value, but not to zero, and then recovers to the normal value. Figure 12-3 shows the on-chip Power-On Reset sequence where the MCLR and Vdd pins are tied together. The Vdd signal is stable before the DRT timeout period expires. In this case, the device will receive a proper reset. However, Figure 12-4 depicts a situation where Vdd rises too slowly. In this scenario, the DRT will time-out prior to Vdd reaching a valid operating voltage level (Vdd min). This means the device will come out of reset and start operating with the supply voltage not at a valid level. In this situation, it is recommended that you use the external RC circuit. The RC delay should exceed (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 35 - Figure 12-4. External Power-On Reset Circuit (For Slow Vdd Power-up) Vdd MCLR POR Tdrt drt_time_out RESET Figure 12-5. Time-out Sequence on Power-up (MCLR tied to Vdd): Fast Vdd Rise Time www.scenix.com SX48BD/SX52BD 13.0 A 3-bit field in the FUSEX register can be used to specify the Delay Reset Timer (DRT) timeout period that results in an automatic wake-up from the power down mode: BROWN-OUT DETECTOR The on-chip brown-out detection circuitry resets the device when Vdd dips below the specified brown-out voltage. The device is held in reset as long as Vdd stays below the brown-out voltage. The device will come out of reset when Vdd rises above the brown-out voltage. The brown-out level is preset to approximately 4.2V at the factory. The brown-out circuit can be disabled through BOR0 and BOR1 bits contained in the FUSEX Word register. 101 = 0.06 msec 110 = 7.68 msec 111 = 18.4 msec (default) 000 = 60 msec 001 = 480 msec 010 = 960 msec 011 = 1920 msec For fast start-up from the power down mode, clear the SLEEPCLK bit and set the WDRT2:WDRT0 field to 100. This will keep the clock operating during the power down mode and allow a zero start-up delay. Note 1: The external Power-On Reset circuit is required only if Vdd power-up is too slow. The diode D helps discharge the capacitor quickly when Vdd powers down. Note 2: R < 40 k is recommended to make sure that voltage drop across R does not violate the device electrical specifications. R1 = 100 to 1k will limit any current flowing into MCLR from external capacitor C. This helps prevent MCLR pin breakdown due to Electrostatic Discharge (ESD) or Electrical Overstress (EOS). (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 36 - www.scenix.com SX48BD/SX52BD 14.0 REGISTER STATES UPON DIFFERENT RESET CONDITIONS The effect of different reset operations on a register depends on the register and the type of reset operation. Some registers are initialized to specific values, some are left unchanged (for wakeup and brown-out resets), and some are initialized to an unknown value. A register that starts with an unknown value should be initialized by the software to a known value; you cannot simply test the initial state and rely on it starting in that state consistently. Table 14-1 lists the SX registers and shows the state of each register upon reset, with a different column for each type of reset. Table 14-1. Register States Upon Different Resets Register Power-On Wakeup Brown-out Watchdog Timeout MCLR W Undefined Unchanged Undefined Unchanged Unchanged OPTION FFh FFh FFh FFh FFh MODE 1Fh 1Fh 1Fh 1Fh 1Fh RTCC (01h) Undefined Unchanged Undefined Unchanged Unchanged PC (02h) FFh FFh FFh FFh FFh STATUS (03h) Bits 0-2: Undefined Bits 0-2: Unchanged Bits 0-4: Undefined Bits 0-2: Unchanged Bits 0-2: Unchanged Bits 3-4: 11 Bits 3-4: Unch. Bits 5-7: 000 Bits 3-4: (Note 1) Bits 3-4: (Note 2) Bits 5-7: 000 Bits 5-7: 000 Undefined Bits 0-6: Unchanged Bits 5-7: 000 Bits 5-7:000 Bits 0-6: Undefined Bits 0-6: Unchanged Bits 0-6: Unchanged Bit 7: 1 Bit 7: 1 Bit 7: 1 Bit 7: 1 FFh FFh FFh FFh FFh RA through RE Data Undefined Unchanged Undefined Unchanged Unchanged Other File Registers SRAM Undefined Unchanged Undefined Unchanged Unchanged CMP_B Bits 0, 6-7: 1 Bits 0, 6-7: 1 Bits 0, 6-7: 1 Bits 0, 6-7: 1 Bits 0, 6-7: 1 Bits 1-5: Undefined Bits 1-5: Undefined Bits 1-5: Undefined Bits 1-5: Undefined Bits 1-5: Undefined WKPND_B Undefined Unchanged Undefined Unchanged Unchanged WKED_B FFh FFh FFh FFh FFh WKEN_B FFh FFh FFh FFh FFh ST_B through ST_E FFh FFh FFh FFh FFh LVL_A through LVL_E FFh FFh FFh FFh FFh PLP_A through PLP_E FFh FFh FFh FFh FFh Watchdog Counter Undefined Unchanged Undefined Unchanged Unchanged FSR (04h) RA through RE Direction NOTE: 1. Watchdog reset during power down mode: 00 (bits TO, PD) Watchdog reset during Active mode: 01 (bits TO, PD) NOTE: 2. External reset during power down mode: 10 (bits TO, PD) External reset during Active mode: Unchanged (bits TO, PD) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 37 - www.scenix.com SX48BD/SX52BD 15.0 INSTRUCTION SET As mentioned earlier, the SX family of devices uses a modified Harvard architecture with memory-mapped input/output. The device also has a RISC type architecture in that there are 43 single-word basic instructions. The instruction set contains byte-oriented file register, bitoriented file register, and literal/control instructions. Working register W is one of the CPU registers, which serves as a pseudo accumulator. It is a pseudo accumulator in a sense that it holds the second operand, receives the literal in the immediate type instructions, and also can be program-selected as the destination register. The bank of 31 file registers can also serve as the primary accumulators, but they represent the first operand and may be program-selected as the destination registers. fetched. Once the pipeline is full, instructions are executed at the rate of one per clock cycle. Instructions that directly affect the contents of the program counter (such as jumps and calls) require that the pipeline be cleared and subsequently refilled. Therefore, these instructions take more than one clock cycle. The instruction execution time is derived by dividing the oscillator frequency by one (bit 11 of the FUSE Word register must be initialized to 0).. Fetch Clock Cycle 1 15.1 Instruction Set Features 1. All single-word (12-bit) instructions for compact code efficiency. 2. All instructions are single cycle except the jump type instructions (JMP, CALL) and failed test instructions (DECSZ fr, INCSZ fr, SB bit, SNB bit), which are twocycle. 3. A set of file registers can be addressed directly or indirectly, and serve as accumulators to provide first operand; W register provides the second operand. 4. Many instructions include a destination bit which selects either the register file or the accumulator as the destination for the result. 5. Bit manipulation instructions (Set, Clear, Test and Skip if Set, Test and Skip if Clear). 6. STATUS Word register memory-mapped as a register file, allowing testing of status bits (carry, digit carry, zero, power down, and timeout). 7. Program Counter (PC) memory-mapped as register file allows W to be used as offset register for indirect addressing of program memory. 8. Indirect addressing data pointer FSR (file select register) memory-mapped as a register file. 9. IREAD instruction allows reading the instruction from the program memory addressed by W and upper four bits of MODE register. 10.Eight-level, 12-bit push/pop hardware stack for subroutine linkage using the Call and Return instructions. 11.Seven addressing mode provide great flexibility. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Execute Clock Cycle 2 Write Clock Cycle 3 Clock Cycle 4 Figure 15-1. Pipeline and Clock Scheme 15.3 Addressing Modes The device support the following addressing modes: Data Direct Data Indirect Data Semidirect Immediate Program Direct Program Indirect Relative Both direct and indirect addressing modes are available. The INDF register, though physically not implemented, is used in conjunction with the indirect data pointer (FSR) to perform indirect addressing. An instruction using INDF as its operand field actually performs the operation on the register pointed by the contents of the FSR. Consequently, processing two multiple-byte operands requires alternate loading of the operand addresses into the FSR pointer as the multiple byte data fields are processed. Examples: Direct addressing: 15.2 Instruction Execution An instruction goes through a four-stage pipeline to be executed (Figure 15-1). The first instruction is fetched from the program memory on the first clock cycle. On the second clock cycle, the first instruction is decoded and the second instruction is fetched. On the third clock cycle, the first instruction is executed, the second instruction is decoded, and the third instruction is fetched. On the fourth clock cycle, the first instruction's results are written to its destination, the second instruction is executed, the third instruction is decoded, and the fourth instruction is Decode mov W,#1 mov RA,W ;move "1" to RA Indirect Addressing: mov W,#RA mov FSR,W ;FSR = address of RA mov INDF,#$01 ;move "1" to RA Semidirect Addressing: - 38 - mov W,#$00 mov FSR,W ;FSR = bank 0 address inc $1F ;increment file register 0Fh www.scenix.com SX48BD/SX52BD 15.4 The Bank Instruction Often it is desirable to set the bank select bits of the FSR register in one instruction cycle. The Bank instruction provides this capability. This instruction sets the upper 3 bits of the FSR to point to a specific RAM bank without affecting the lower 4 FSR bits, in preparation for using direct or semidirect addressing. The "bank" instruction also clears bit 4 of the FSR, so this bit should be set to correctly address any odd-numbered bank. Example: bank $E0 ;Select Bank E in FSR inc ;increment file register ;EFh using semidirect addressing $1F a port pin is configured as an output and an external circuit forces the pin to the opposite value, the value read from the port will depend on the reading mode used. Note that this control bit is not related to multi-function timers T1 and T2. 15.7 15.8 15.5 Bit Manipulation The instruction set contains instructions to set, reset, and test individual bits in data memory. The device is capable of bit addressing anywhere in data memory. 15.6 Input/Output Operation The device contains three registers associated with each I/O port. The first register (Data Direction Register), configures each port pin as a Hi-Z input or output. The second register (TTL/CMOS Register), selects the desired input level for the input. The third register (Pull-Up Register), enables a weak pull-up resistor on the pin configured as a input. To read or write these registers, you must first write an appropriate value into the MODE register to select the desired register set, and then use the "mov !rx,W" instruction to read or write the register. 15.6.1 Read-Modify-Write Considerations Caution must be exercised when performing successive SETB or CLRB operations on I/O port pin. Input data used for an instruction must be valid during the time the instruction is executed, and the output result from an instruction is valid only after that instruction completes its operation. Unexpected results from successive readmodify-write operations on I/O pins can occur when the device is running at extremely high speeds. Although the device has an internal write-back section to prevent such conditions, it is still recommended that the user program include a NOP instruction as a buffer between successive read-modify-write instructions performed on I/O pins of the same port. If SYNC is enabled, the user program should include 2 NOP instructions. In the default device configuration, when a read is performed from a port bit position, the operation is actually reading the voltage level on the pin itself, not necessarily the bit value stored in the port data register. This is true whether the pin is configured to operate as an input or an output. Therefore, with the pin configured to operate as an input, the data register contents have no effect on the value that you read. With the pin configured to operate as an output, what is read generally matches what has been written to the register. PORTRD of the T2CNT2 register determines how the device reads data from its I/O ports (Port A through Port E). Set this bit to 1 to have the device read data from the port I/O pins directly. Clear this bit to 0 to have the device read data from the port data registers. Under normal conditions, it should not matter which method you use to read the port data. However, if (c) 1999 Scenix Semiconductor, Inc. All rights reserved. Increment/Decrement The current selected bank of 31 registers serves as a set of accumulators. The instruction set contains instructions to increment and decrement the register file. The device also includes both INCSZ fr (increment file register and skip if zero) and DECSZ fr (decrement file register and skip if zero) instructions. Loop Counting and Data Pointing Testing The device has specific instructions to facilitate loop counting. The DECSZ fr (decrement file register and skip if zero) tests any one of the file registers and skips the next instruction (which can be a branch back to loop) if the result is zero. 15.9 Branch and Loop Call Instructions The device contains an 8-level hardware stack where the return address is stored with a subroutine call. Multiple stack levels allow subroutine nesting. The instruction set supports absolute address branching. 15.9.1 Jump Operation When a JMP instruction is executed, the lower nine bits of the program counter are loaded with the address of the specified label. The upper three bits of the program counter are loaded with the page select bits, PA2:PA0, contained in the STATUS register. Therefore, care must be exercised to ensure the page select bits are pointing to the correct page before the jump occurs. STATUS<7:5> JMP LABEL (9 BITS) PC<11:9> PC<8:0> 15.9.2 Page Jump Operation When a JMP instruction is executed and the intended destination is on a different page, the page select bits must be initialized with appropriate values to point to the desired page before the jump occurs. This can be done easily with SETB and CLRB instructions or by writing a value to the STATUS register. The device also has the PAGE instruction, which automatically selects the page in a single-cycle execution. PAGE N STATUS<7:5> JMP LABEL (9 BITS) PC<11:9> PC<8:0> Note:"N" must be 0, 1, 2, or 3. - 39 - www.scenix.com SX48BD/SX52BD 15.9.3 Call Operation 15.11 Subroutine Operation The following happens when a CALL instruction is executed: 15.11.1 Push Operation * The current value of the program counter is incremented and pushed onto the top of the stack. * The lower eight bits of the label address are copied into the lower eight bits of the program counter. * The ninth bit of the Program Counter is cleared to zero. * The page select bits (in STATUS register) are copied into the upper three bits of the 12-bit program counter. This means that the call destination must start in the lower half of any page. For example, 00h-0FFh, 200h2FFh, 400h-4FFh, etc. When a subroutine is called, the return address is pushed onto the subroutine stack. Specifically, each address in the stack is moved to the next lower level in order to make room for the new address to be stored. Stack 1 receives the contents of the program counter. Stack 8 is overwritten with what was in Stack 7. The contents of stack 8 are lost. PC<11:0> STACK 1 STATUS<7:5> 0 CALL LABEL (8 BITS) STACK 2 STACK 3 PC<11:9> PC<8> STACK 4 PC<7:0> STACK 5 STACK 6 15.9.4 Page Call Operation When a subroutine that resides on a different page is called, the page select bits must contain the proper values to point to the desired page before the call instruction is executed. This can be done easily using SETB and CLRB instructions or writing a value to the STATUS register. The device also has the PAGE instruction, which automatically selects the page in a single-cycle execution. PAGE N STATUS<7:5> 0 CALL LABEL (8 BITS) PC<11:9> PC<8> PC<7:0> STACK 7 STACK 8 15.11.2 Pop Operation When a return instruction is executed the subroutine stack is popped. Specifically, the contents of Stack 1 are copied into the program counter and the contents of each stack level are moved to the next higher level. For example, Stack 1 receives the contents of Stack 2, etc., until Stack 7 is overwritten with the contents of Stack 8. Stack 8 is left unchanged, so the contents of Stack 8 are duplicated in Stack 7. PC<11:0> 15.10 Return Instructions STACK 1 The device has several instructions for returning from subroutines and interrupt service routines. The return from subroutine instructions are RET (return without affecting W), RETP (same as RET but affects PA2:PA0), RETI (return from interrupt), RETIW (return and add W to RTCC), and RETW #literal (return and place literal in W). The literal serves as an immediate data value from memory. This instruction can be used for table lookup operations. To do table lookup, the table must contain a string of RETW #literal instructions. The first instruction just in front of the table calculates the offset into the table. The table can be used as a result of a CALL. STACK 2 (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 40 - STACK 3 STACK 4 STACK 5 STACK 6 STACK 7 STACK 8 www.scenix.com SX48BD/SX52BD 15.12 Comparison and Conditional Branch Instructions 15.16 Key to Abbreviations and Symbols The instruction set includes instructions such as DECSZ fr (decrement file register and skip if zero), INCSZ fr (increment file register and skip if zero), SNB bit (bit test file register and skip if bit clear), and SB bit (bit test file register and skip if bit set). These instructions will cause the next instruction to be skipped if the tested condition is true. If a skip instruction is immediately followed by a PAGE or BANK instruction (and the tested condition is true) then two instructions are skipped and the operation consumes three cycles. This is useful for conditional branching to another page where a PAGE instruction precedes a JMP. If several PAGE and BANK instructions immediately follow a skip instruction then they are all skipped plus the next instruction and a cycle is consumed for each. 15.13 Logical Instruction The instruction set contain a full complement of the logical instructions (AND, OR, Exclusive OR), with the W register and a selected memory location (using either direct or indirect addressing) serving as the two operands. 15.14 Shift and Rotate Instructions The instruction set includes instructions for left or right rotate-through-carry. Symbol Description W Working register fr File register (memory-mapped register in the range of 00h to FFh) PC Lower eight bits of program counter (file register 02h) STATUS STATUS register (file register 03h) FSR C DC Z File Select Register (file register 04h) Carry bit in STATUS register (bit 0) Digit Carry bit in STATUS register (bit 1) Zero bit in STATUS register (bit 2 PD Power Down bit in STATUS register (bit 3) TO Watchdog Timeout bit in STATUS register (bit 4) PA2:PA0 Page select bits in STATUS register (bits 7:5) OPTION OPTION register (not memory-mapped) WDT Watchdog Timer register (not memorymapped) MODE MODE register (not memory-mapped) rx Port control register pointer (RA, RB, RC, RD, RE) 15.15 Complement and SWAP ! Non-memory-mapped register designator The device can perform one's complement operation on the file register (fr) and W register. The MOV W,<>fr instruction performs nibble-swap on the fr and puts the value into the W register. f File register address bit in opcode k Constant value bit in opcode n Numerical value bit in opcode b Bit position selector bit in opcode . File register / bit selector separator in assembly language instruction # Immediate literal designator in assembly language instruction (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 41 - lit Literal value in assembly language instruction addr8 8-bit address in assembly language instruction addr9 9-bit address in assembly language instruction addr12 12-bit address in assembly language instruction / Logical 1's complement | Logical OR ^ Logical exclusive OR & Logical AND <> Swap high and low nibbles (4-bit segments) << Rotate left through carry flag >> Rotate right through carry flag -- Decrement file register ++ Increment file register www.scenix.com SX48BD/SX52BD 16.0 INSTRUCTION SET SUMMARY TABLE Table 16-1 lists all of the instructions, organized by category. For each instruction, the table shows the instruction mnemonic (as written in assembly language), a brief description of what the instruction does, the number of instruction cycles required for execution, the binary opcode, and the status flags affected by the instruction. The "Cycles" column typically shows a value of 1, which means that the overall throughput for the instruction is one per clock cycle. In some cases, the exact number of cycles depends on the outcome of the instruction (such as the test-and-skip instructions). In those cases, all possible numbers of cycles are shown in the table. The instruction execution time is derived by dividing the oscillator frequency by one (bit 11 of the FUSE Word register must be initialized to 0). Table 16-1. The SX Instruction Set Mnemonic, Operands Description Cycles Opcode Flags Affected Logical Operations AND fr, W AND of fr and W into fr (fr = fr & W) 1 0001 011f ffff Z AND W, fr AND of W and fr into W (W = W & fr) 1 0001 010f ffff Z AND W,#lit AND of W and Literal into W (W = W & lit) 1 1110 kkkk kkkk Z NOT fr Complement of fr into fr (fr = fr ^ FFh) 1 0010 011f ffff Z OR fr,W OR of fr and W into fr (fr = fr | W) 1 0001 001f ffff Z OR W,fr OR of W and fr into fr (W = W | fr) 1 0001 000f ffff Z OR W,#lit OR of W and Literal into W (W = W | lit) 1 1101 kkkk kkkk Z XOR fr,W XOR of fr and W into fr (fr = fr ^ W) 1 0001 101f ffff Z XOR W,fr XOR of W and fr into W (W = W ^ fr) 1 0001 100f ffff Z XOR W,#lit XOR of W and Literal into W (W = W ^ lit) 1 1111 kkkk kkkk Z Arithmetic and Shift Operations ADD fr,W Add W to fr (fr = fr + W); carry flag is added if CF bit in FUSEX register is cleared to 0 1 0001 111f ffff C, DC, Z ADD W,fr Add fr to W (W = W + fr); carry flag is added if CF bit in FUSEX register is cleared to 0 1 0001 110f ffff C, DC, Z CLR fr Clear fr (fr = 0) 1 0000 011f ffff Z CLR W Clear W (W = 0) 1 0000 0100 0000 Z CLR !WDT Clear Watchdog Timer (TO = 1, PD = 1, clears prescaler if assigned) 1 0000 0000 0100 TO, PD DEC fr Decrement fr (fr = fr - 1) 1 0000 111f ffff DECSZ fr Decrement fr and Skip if Zero (fr = fr - 1 and skip 1 or 0010 111f ffff next instruction if result is zero) 2 (skip) INC fr Increment fr (fr = fr + 1) INCSZ fr Increment fr and Skip if Zero (fr = fr + 1 and skip 1 or 0011 111f ffff next instruction if result is zero) 2 (skip) RL fr Rotate fr Left through Carry (fr = << fr) 1 0011 011f ffff C RR fr Rotate fr Right through Carry (fr = >> fr) 1 0011 001f ffff C SUB fr,W Subtract W from fr (fr = fr - W); complement of the carry flag is subtracted if CF bit in FUSEX register is cleared to 0 1 0000 101f ffff C, DC, Z SWAP fr Swap High/Low Nibbles of fr (fr = <> fr) 1 0011 101f ffff (c) 1999 Scenix Semiconductor, Inc. All rights reserved. 1 - 42 - 0010 101f ffff Z none Z none none www.scenix.com SX48BD/SX52BD Table 16-1. The SX Instruction Set (Continued) Mnemonic, Operands Description Cycles Opcode Flags Affected 1 Bitwise Operations CLRB fr.bit Clear Bit in fr (fr.bit = 0) 0100 bbbf ffff none SB fr.bit Test Bit in fr and Skip if Set (test fr.bit and skip 1 or 0111 bbbf ffff next instruction if bit is 1) 2 (skip) none SETB fr.bit Set Bit in fr (fr.bit = 1) 0101 bbbf ffff none SNB fr.bit Test Bit in fr and Skip if Clear (test fr.bit and skip 1 or 0110 bbbf ffff next instruction if bit is 0) 2 (skip) none 1 Data Movement Instructions MOV fr,W Move W to fr (fr = W) 1 0000 001f ffff none MOV W,fr Move fr to W (W = fr) 1 0010 000f ffff Z MOV W,fr-W Move (fr-W) to W (W = fr - W); complement of carry flag is subtracted if CF bit in FUSEX register is cleared to 0 1 0000 100f ffff C, DC, Z MOV W,#lit Move Literal to W (W = lit) 1 1100 kkkk kkkk none MOV W,/fr Move Complement of fr to W (W = fr ^ FFh) 1 0010 010f ffff Z MOV W,--fr Move (fr-1) to W (W = fr - 1) 1 0000 110f ffff Z MOV W,++fr Move (fr+1) to W (W = fr + 1) 1 0010 100f ffff Z MOV W,<>fr Rotate fr Right through Carry and Move to W (W = >> fr) 1 0011 000f ffff C MOV W,<>fr Swap High/Low Nibbles of fr and move to W (W = <> fr) 1 0011 100f ffff none MOV W,M Move MODE Register to W (W = MODE), high nibble of W cleared 1 0000 0100 0010 none MOVSZ W,--fr Move (fr-1) to W and Skip if Zero (W = fr -1 and 1 0010 110f ffff skip next instruction if result is zero) 2 (skip) none MOVSZ W,++fr Move (fr+1) to W and Skip if Zero (W = fr + 1 and 1 0011 110f ffff skip next instruction if result is zero) 2 (skip) none MOV M,W Move W to MODE Register (MODE = W) 1 0000 0100 0011 none MOV M,#lit Move Literal to MODE Register (MODE = lit) 1 0000 0101 kkkk none MOV !rx,W Move Data Between W and Control Register: rx = W (move W to rx) or W = rx (move rx to W) or rx <=> W (exchange W and rx) 1 0000 0000 ffff none MOV !OPTION, W Move W to OPTION Register (OPTION = W) 1 0000 0000 0010 none TEST fr 1 0010 001f ffff Z Test fr for Zero (fr = fr to set or clear Z flag) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 43 - www.scenix.com SX48BD/SX52BD Table 16-1. The SX Instruction Set (Continued) Mnemonic, Operands Description Cycles Opcode Flags Affected Program Control instruction CALL addr8 Call Subroutine: top-of-stack = program counter + 1 PC(7:0) = addr8 program counter (8) = 0 program counter (11:9) = PA2:PA0 3 1001 kkkk kkkk none JMP addr9 Jump to Address: PC(7:0) = addr9(7:0) program counter (8) = addr9(8) program counter (11:9) = PA2:PA0 3 101k kkkk kkkk none NOP No Operation 1 0000 0000 0000 none RET Return from Subroutine (program counter = top-of-stack) 3 0000 0000 1100 none RETP Return from Subroutine Across Page Boundary (PA2:PA0 = top-of-stack (11:9) and program counter = top-of-stack) 3 0000 0000 1101 PA1, PA0 RETI Return from Interrupt (restore W, STATUS, FSR, and program counter from shadow registers) 3 0000 0000 1110 all STATUS except TO, PD bits RETIW Return from Interrupt and add W to RTCC (restore W, STATUS, FSR, and program counter from shadow registers; and add W to the RTCC register) 3 0000 0000 1111 all STATUS except TO, PD bits RETW lit Return from Subroutine with Literal in W (W = lit and program counter = top-of-stack) 3 1000 kkkk kkkk none System Control Instructions BANK addr12 Load Bank Number into FSR(7:5) FSR(7:5) = addr12(11:9) 1 0000 0001 1nnn none IREAD Read Word from Instruction Memory MODE:W = data at (MODE:W) 4 0000 0100 0001 none PAGE addr12 Load Page Number into STATUS(7:5) STATUS(7:5) = addr12(11:9) 1 0000 0001 0nnn PA2, PA1, PA0 SLEEP Power Down Mode WDT = 00h, TO = 1, stop oscillator 1 0000 0000 0011 TO, PD (PD = 0, clear prescaler if assigned) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 44 - www.scenix.com SX48BD/SX52BD 16.1 Equivalent Assembler Mnemonics Some assemblers support additional instruction mnemonics that are special cases of existing instructions or alternative mnemonics for standard ones. For example, an assembler might support the mnemonic "CLC" (clear carry), which is interpreted the same as the instruction "clrb $03.0" (clear bit 0 in the STATUS register). Some of the commonly supported equivalent assembler mnemonics are described in Table 16-2. Table 16-2. Equivalent Assembler Mnemonics Syntax Description Equivalent Cycles CLC Clear Carry Flag CLRB $03.0 1 CLZ Clear Zero Flag CLRB $03.2 1 JMP W Jump Indirect W MOV $02,W 3 JMP PC+W Jump Indirect W Relative ADD $02,W 3 MODE imm4 Move Immediate to MODE Register MOV M,#lit 1 NOT W Complement W XOR W,#$FF 1 SC Skip if Carry Flag Set SB $03.0 SKIP Skip Next Instruction SNB $02.0 or SB $02.0 1 or 2 (note 1) 2 (note 2) Note 1: The SC instruction takes 1 cycle if the tested condition is false or 2 cycles if the tested condition is true. Note 2: The assembler converts the SKIP instruction into a SNB or SB instruction that tests the least significant bit of the program counter, choosing SNB or SB so that the tested condition is always true. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 45 - www.scenix.com SX48BD/SX52BD 17.0 ELECTRICAL CHARACTERISTICS 17.1 Absolute Maximum Ratings (beyond which permanent damage may occur) -40C to +85C Ambient temperature under bias -65C to +150C Storage temperature Voltage on Vdd with respect to Vss 0 V to +7.5 V Voltage on OSC1 with respect to Vss 0 V to +12.5 V Voltage on MCLR with respect to Vss 0 V to +12.5 V Voltage on all other pins with respect to V ss 0.6 V to (Vdd + 0.6 V) V 1 W at 70C Total power dissipation 1.5 W at 25C 180 mA at 70C Max. current out of Vss pins 300 mA at 25C 180 mA at 70C Max. current into Vdd pins 300 mA at 25C Max. DC current into an input pin (with internal protection diode forward biased) +500 A Input clamp current, Iik (Vi < 0 or Vi > Vdd) +20 mA Output clamp current, lok (VO < 0 or VO > Vdd) +20 mA Max. allowable sink current per I/O pin 45 mA Max. allowable source current per I/O pin 45 mA Max. allowable sink current per I/O port (PORT A, B, C, D, E) TBD Max. allowable source current per I/O port (PORT A, B, C, D, E) TBD Latchhup 150 mA JA, 48-pin Package 76C/W JA, 52-pin Package 49C/W Number of EEPROM Write Cycles (c) 1999 Scenix Semiconductor, Inc. All rights reserved. 10,000 - 46 - www.scenix.com SX48BD/SX52BD 17.2 DC Characteristics Operating Temperature 0C <= Ta <= +70C (Commercial) Symbol Vdd Parameter Conditions Min Typ Max Units RC 4.5 - 5.5 V XT 4.5 5.5 V HS 4.5 5.5 V LP 4.5 5.5 V Supply Voltage Vpor Vdd start voltage to ensure Power-On Reset - Vss - - V SVdd Vdd rise rate - 0.05 - - V/ms - 80 - mA Idd Supply Current, active Vdd = 5.0V, Fosc = 50 MHz TBD Vdd = 5.0V, Fosc = 4 MHz internal Ipd Supply Current, power down Vdd = 4.5V, WDT enabled - Vdd = 4.5V, WDT disabled, mA TBD - A 1 10 A SLEEPCLK = 1 Vih, Vil Input Levels MCLR, OSC1, RTCC Logic High 0.8Vdd Vdd V Logic Low Vss 0.2Vdd V All Other Inputs CMOS Logic High 0.7Vdd Vdd V Logic Low Vss 0.3Vdd V Logic High 2.0 Vdd V Logic Low Vss 0.8 V -1.0 +1.0 A 400 A TTL Iil Input Leakage Current Vin = Vdd or Vss Ipup Weak Pullup Current Vdd = 5.5V, Vin = 0V Voh Output High Voltage Vol OSC2, Ports B, C, D, E Ioh = 20mA, Vdd 4.5V Vdd-0.7 V Port A Ioh = 30mA, Vdd 4.5V Vdd-0.7 V Output Low Voltage Iol = 30mA, Vdd = 4.5V 0.6 V OSC2, All Ports (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 47 - www.scenix.com SX48BD/SX52BD 17.3 AC Characteristics Operating Temperature 0C <= Ta <= +70C (Commercial) Symbol Fosc Parameter External CLKIN Frequency Oscillator Frequency Tosc Min Typ Max Units Conditions DC - 4.0 MHz RC 4.0 MHz XT 50 MHz HS 200 KHz LP DC External CLKIN Period 4.0 MHz RC 0.1 4.0 MHz XT 4 50 MHz HS 5 200 KHz LP - 250 Oscillator Period ns RC 250 ns XT 20 ns HS 5.0 s LP 250 TosL, TosH Clock in (OSC1) Low or High Time - - - ns RC 250 10,000 ns XT 20 250 ns HS 5.0 200 s LP - 50 - ns XT 8.0 ns HS 2.0 s LP 25 ns XT 25 ns HS 50 s LP TosR, TosF Clock in (OSC1) Rise or Fall Time - - - Note:Data in the Typical ("TYP") column is at 5V, 25 C unless otherwise stated. Internal RC Oscillator AC specs are still being characterized. Specification is 4MHz 8% over commercial temp (0C70C) range. 17.4 Comparator DC and AC Specifications Parameter Input Offset Voltage Conditions 0.4V < Vin < Vdd - 1.5V Input Common Mode Voltage Range Typ Max Units +/- 10 +/- 25 mV Vdd - 1.3 V 0.4 Voltage Gain 300k DC Supply Current (enabled) Response Time Min V/V Vdd = 5.5V 120 A Voverdrive = 25mV 250 ns (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 48 - www.scenix.com SX48BD/SX52BD 18.0 PACKAGE DIMENSIONS [DIMENSIONS ARE IN INCHES/(MILLIMETERS)] 0.354 (9.00) 0.276 (7.00) bottom of body 0.063 max (1.60) 0.053 - 0.057 (1.35 - 1.45) SX48BD/TQ 0.002 - 0.006 (0.05 - 0.15) 0.50 (0.25) 0.354 (9.00) 0.276 (7.00) 0.20 0.03 0 to 7 0.020 - 0.028 (0.50 - 0.70) 0.039 (1.00) 0.786 0.511 - 0.527 (13.0 - 13.4) 0.306 (7.80) 0.391 - 0.395 (9.95 - 10.05) bottom of body 0.012 (0.3) 0.0039-0.008 (0.1 - 0.2) 0.0255 (0.65) (2.0) 0.0365 (0.93) 0.511 - 0.527 (13.0 - 13.4) 0.391 - 0.395 (9.95 - 10.05) 0.306 (7.80) 0.0806 - 0.0889 max (2.05 - 2.25) SX52BD/PQ 7 5 5 0.0275 - 0.0354 (0.7 - 0.9) 0.059 - 0.067 (1.5 - 1.7) (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 49 - www.scenix.com SX48BD/SX52BD Lit #: SXL-DS03-04 Sales and Tech Support Contact Information For the latest contact and support information on SX devices, please visit the Scenix Semiconductor website at www.scenix.com. The site contains technical literature, local sales contacts, tech support and many other features. Scenix Semiconductor, Inc. (c) 1999 Scenix Semiconductor, Inc. All rights reserved. - 50 - 3160 De La Cruz Blvd., Suite #200, Santa Clara, CA 95054 Contact: sales@scenix.com http://www.scenix.com Tel.: (408) 327-8888 Fax: (408) 327-8880 www.scenix.com