The SX instruction set is PIC 16x54 compatible with a few additions....
Use Al Williams Microchip-style mnemonics (cached 20000731) for PIC coding in the SXKey.
Use sxdefs.inc from Richard Ottosen for Scenix coding in MPLAB then program the Hex file to the SX using just about any SX Programmer
Also:
See also:
There are *12* undocumented instructions! Four new push instructions that push W onto the W, FSR, STATUS, and PC shadow registers, which are actually 2-level stacks; There appears to be a secret FIFO for saving and restoring values and a breakpoint register or two. L A B E L S ------------------------------------------------------------------------------------------------------------------------------- Label Description ------------------------------------------------------------------------------------------------------------------------------- labelname global label :labelname local label O P E R A T O R S ------------------------------------------------------------------------------------------------------------------------------- Expression Operator Description ------------------------------------------------------------------------------------------------------------------------------- || Absolute Unaries + (no effect) - Negate ~ Not & And Binaries | Or ^ Xor + Add - Subtract * Multiply / Divide // Mod << Shift left >> Shift right (arithmetic) >< Reverse bits . Bit Address =< Below or equal Conditionals => Above or equal = Equal <> Not equal < Below > Above ( Begin sub expression ) End sub expression # Literal (default radix is decimal) $ Hexadecimal (#$ prefixes a hexidecimal literal) % Binary (#% prefixes a binary literal) D I R E C T I V E S ------------------------------------------------------------------------------------------------------------------------------- Directive Description ------------------------------------------------------------------------------------------------------------------------------- DEVICE setting,setting... Establish device settings (should precede other directives/instructions) ID wordvalue Establish device ID RESET address Assemble 'jmp address' at last location for reset label EQU value Equate label to value ORG address Set origin to address DS locations Define space: origin=origin+locations DW data,data,... Define word(s) MACRO WATCH Variable{.Bit}, Count, Format allows File Register Variables to be "WATCH"ed when debugging. ------------------------------------------------------------------------------------------------------------------------------- Pre-Defined Symbols ------------------------------------------------------------------------------------------------------------------------------- ******** DEVICE Directive Symbols Set bits in the FUSE register - used to establish device parameters - multiple DEVICE statements allowed to accomodate parameters Example: DEVICE SX28L, OSCIN, BOR42 DEVICE TURBO, STACKX_OPTIONX, CARRYX, PROTECT SX18 SX18 native mode (default: SX18) SX18L Same as SX18 SX28 SX28 native mode SX28L Same as SX28 SX48 SX48 mode SX52 SX52 mode OSCHS3 External crystal/resonator - high-speed level 3 (default: OSCHS3) OSCHS2 External crystal/resonator - high-speed level 2 OSCHS1 External crystal/resonator - high-speed level 1 OSCXT2 External crystal/resonator - standard level 2 OSCXT1 External crystal/resonator - standard level 1 OSCLP2 External crystal/resonator - low-power level 2 OSCLP1 External crystal/resonator - low-power level 1 OSCRC External RC network OSC4MHZ Internal 4MHz oscillator OSC1MHZ Internal 1MHz oscillator OSC128KHZ Internal 128KHz oscillator OSC32KHZ Internal 32KHz oscillator DRIVEOFF (48/52 only) OSC2 output drive off (use for clock/osc packs) (default: on) FEEDBACKOFF OSC feedback resistor off (for clock/osc packs) (default: on) XTLBUFD (48/52 only) Same as DRIVEOFF IFBD Same as FEEDBACKOFF BOR42 Brownout reset at VDD < 4.2V (default: Brownout off) BOR26 Brownout reset at VDD < 2.6V BOR22 Brownout reset at VDD < 2.2V TURBO Turbo mode enabled (1:1 execution) (default: 1:4 execution) STACKX_OPTIONX Stack is 8 levels, OPTION is 8 bits (default: Stack is 2 levels, OPTION is 6 bits) CARRYX ADD/SUB uses carry flag (default: ADD/SUB ignores Carry flag) SYNC Input Syncing enabled - 2-clock delay on inputs (default: Input Syncing disabled) SLEEPCLOCK (48/52 only) Enables clock operation during sleep (fast startup) (default: Clock is disabled during sleep) WATCHDOG Watchdog Timer enabled (default: Watchdog Timer disabled) PROTECT Code Protect enabled (default: Code Protect disabled) DRT18MS (48/52 only) Reset timer (18 ms start-up delay after reset) (default: 18 ms) DRT960MS (48/52 only) Reset timer (960 ms start-up delay after reset) DRT60MS (48/52 only) Reset timer (60 ms start-up delay after reset) DRT60US (48/52 only) Reset timer (60 us start-up delay after reset) ******** Dynamic Equates (always reflect current values) % = Current REPT index (=0 if outside of a REPT block) $ = Current origin ******** Register/Bit Equates IND = 00ドル Indirect addressing register RTCC = 01ドル RTCC register WREG = 01ドル W register PC = 02ドル Program counter low-byte register STATUS = 03ドル Status register C = STATUS.0 Carry bit DC = STATUS.1 Digit carry bit Z = STATUS.2 Zero bit PD = STATUS.3 Power-down bit TO = STATUS.4 Time-out bit PA0 = STATUS.5 Page preselect bit 0 PA1 = STATUS.6 Page preselect bit 1 PA2 = STATUS.7 Page preselect bit 2 FSR = 04ドル File select register RA = 05ドル RA i/o register RB = 06ドル RB i/o register RC = 07ドル RC i/o register RD = 08ドル RD i/o register (48/52 only) RE = 09ドル RE i/o register (48/52 only) ******** The Equates Below Are For Write Access Only ********* ******** On the SX48/52, add 10ドル to the Equate for read access ******* TIMER_CAPTURE_LOW = 00ドル Low Timer Capture register (48/52 only) TIMER_CAPTURE_HIGH = 01ドル High Timer Capture register (48/52 only) TIMER_COMPARE2_LOW = 02ドル Low Timer Compare register 2 (48/52 only) TIMER_COMPARE2_HIGH = 03ドル High Timer Compare register 2 (48/52 only) TIMER_COMPARE1_LOW = 04ドル Low Timer Compare register 1 (48/52 only) TIMER_COMPARE1_HIGH = 05ドル High Timer Compare register 1 (48/52 only) TIMER_CONTROL_B = 06ドル Timer Control register B (48/52 only) TIMER_CONTROL_A = 07ドル Timer Control register A (48/52 only) CMP -or- COMPARATOR = 08ドル Comparator register WKPEN -or- WAKE_PENDING = 09ドル Wake-up Pending register WKED -or- WAKE_EDGE = 0ドルA Wake-up Edge register WKEN -or- WAKE_ENABLE = 0ドルB Wake-up Enable register ST -or- SCHMITT = 0ドルC Schmitt-Trigger register LVL -or- LEVEL = 0ドルD Logic Level register PLP -or- PULL_UP = 0ドルE Pull-up resister register TRIS -or- DIRECTION = 0ドルF Tristate (direction) register ******** Backward-Compatibility Symbols for Parallax PIC16Cxx Assembler (SPASM.EXE) DEVICE Directive Symbols PIC16C54 PIC16C54 emulation using SX18L (default: SX18L) PIC16C55 PIC16C55 emulation using SX28L PIC16C56 PIC16C56 emulation using SX18L PIC16C57 PIC16C57 emulation using SX28L PIC16C58 PIC16C58 emulation using SX18L HS_OSC OSCHS3 (default: HS_OSC) XT_OSC OSCXT2 LP_OSC OSCLP1 RC_OSC OSCRC WDT_OFF (no equivalent) (default: WDT_OFF) WDT_ON WATCHDOG PROTECT_OFF (no equivalent) (default: PROTECT_OFF) PROTECT_ON PROTECT Register Equates INDIRECT = 00ドル Indirect addressing register INDF = 00ドル TMR0 = 01ドル RTCC register PCL = 02ドル Program counter low-byte register PORT_A = 05ドル RA i/o register PORT_B = 06ドル RB i/o register PORT_C = 07ドル RC i/o register ---------------------------------------------------------------------------------- Hex Format: Low-byte/high-byte (8-bit) format used - byte counts and addresses are doubled. 0000ドル-0ドルFFF = CODE words 1000ドル-100ドルF = ID words (nibble-per-word used to make 8 characters) 1010ドル = FUSE word 1011ドル = FUSEX word
Use these macros to program the SX with a '68HC11 like' instruction set
See:
.