* Fixed svn:eol-style and svn:keywords properties
[fw/sdcc] / device / include / mcs51 / cc2430.h
index 76ad537032584492ec347ece5c48e475a90c713e..d4d455c5f059e70cfeff9f8cf449c296b07ebd51 100644 (file)
-/*-------------------------------------------------------------------------\r
-   Register Declarations for Chipcon CC2430\r
-\r
-   Written By -  Jesus Calvino-Fraga / jesusc at ece.ubc.ca (December 2006)\r
-   (Based on CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A)\r
-\r
-   This library is free software; you can redistribute it and/or\r
-   modify it under the terms of the GNU Lesser General Public\r
-   License as published by the Free Software Foundation; either\r
-   version 2.1 of the License, or (at your option) any later version.\r
-\r
-   This library is distributed in the hope that it will be useful,\r
-   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-   Lesser General Public License for more details.\r
-\r
-   You should have received a copy of the GNU Lesser General Public\r
-   License along with this library; if not, write to the Free Software\r
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
-\r
-   In other words, you are welcome to use, share and improve this program.\r
-   You are forbidden to forbid anyone else to use, share and improve\r
-   what you give them.   Help stamp out software-hoarding!\r
--------------------------------------------------------------------------*/\r
-\r
-#ifndef REG_CC2430_H\r
-#define REG_CC2430_H\r
-\r
-#include <compiler.h>\r
-\r
-// Interrupt Vectors\r
-\r
-#define RFERR_VECTOR    0   // RF TX FIFO underflow and RX FIFO overflow.\r
-#define ADC_VECTOR      1   // ADC end of conversion\r
-#define URX0_VECTOR     2   // USART0 RX complete\r
-#define URX1_VECTOR     3   // USART1 RX complete\r
-#define ENC_VECTOR      4   // AES encryption/decryption complete\r
-#define ST_VECTOR       5   // Sleep Timer compare\r
-#define P2INT_VECTOR    6   // Port 2 inputs\r
-#define UTX0_VECTOR     7   // USART0 TX complete\r
-#define DMA_VECTOR      8   // DMA transfer complete\r
-#define T1_VECTOR       9   // Timer 1 (16-bit) capture/compare/overflow\r
-#define T2_VECTOR       10  // Timer 2 (MAC Timer)\r
-#define T3_VECTOR       11  // Timer 3 (8-bit) capture/compare/overflow\r
-#define T4_VECTOR       12  // Timer 4 (8-bit) capture/compare/overflow\r
-#define P0INT_VECTOR    13  // Port 0 inputs\r
-#define UTX1_VECTOR     14  // USART1 TX complete\r
-#define P1INT_VECTOR    15  // Port 1 inputs\r
-#define RF_VECTOR       16  // RF general interrupts\r
-#define WDT_VECTOR      17  // Watchdog overflow in timer mode\r
-\r
-// SFR Registers and BITs\r
-\r
-SFR(P0,       0x80); // Port 0\r
-   SBIT(P0_0,     0x80, 0); // Port 0 bit 0\r
-   SBIT(P0_1,     0x80, 1); // Port 0 bit 1\r
-   SBIT(P0_2,     0x80, 2); // Port 0 bit 2\r
-   SBIT(P0_3,     0x80, 3); // Port 0 bit 3\r
-   SBIT(P0_4,     0x80, 4); // Port 0 bit 4\r
-   SBIT(P0_5,     0x80, 5); // Port 0 bit 5\r
-   SBIT(P0_6,     0x80, 6); // Port 0 bit 6\r
-   SBIT(P0_7,     0x80, 7); // Port 0 bit 7\r
-SFR(SP,       0x81); // Stack Pointer\r
-SFR(DPL0,     0x82); // Data Pointer 0 Low Byte\r
-SFR(DPH0,     0x83); // Data Pointer 0 High Byte\r
-SFR(DPL1,     0x84); // Data Pointer 1 Low Byte\r
-SFR(DPH1,     0x85); // Data Pointer 1 High Byte\r
-SFR(U0CSR,    0x86); // USART 0 Control and Status\r
-SFR(PCON,     0x87); // Power Mode Control\r
-SFR(TCON,     0x88); // Interrupt Flags\r
-   SBIT(IT0,      0x88, 0); // reserved (must always be set to 1)\r
-   SBIT(RFERRIF,  0x88, 1); // RFERR \96 RF TX/RX FIFO interrupt flag\r
-   SBIT(IT1,      0x88, 2); // reserved (must always be set to 1)\r
-   SBIT(URX0IF,   0x88, 3); // USART0 RX Interrupt Flag\r
-   SBIT(ADCIF,    0x88, 5); // ADC Interrupt Flag\r
-   SBIT(URX1IF,   0x88, 7); // USART1 RX Interrupt Flag\r
-SFR(P0IFG,    0x89); // Port 0 Interrupt Status Flag\r
-SFR(P1IFG,    0x8A); // Port 1 Interrupt Status Flag\r
-SFR(P2IFG,    0x8B); // Port 2 Interrupt Status Flag\r
-SFR(PICTL,    0x8C); // Port Interrupt Control\r
-SFR(P1IEN,    0x8D); // Port 1 Interrupt Mask\r
-SFR(P0INP,    0x8F); // Port 0 Input Mode\r
-SFR(P1,       0x90); // Port 1\r
-   SBIT(P1_0,     0x90, 0); // Port 1 bit 0\r
-   SBIT(P1_1,     0x90, 1); // Port 1 bit 1\r
-   SBIT(P1_2,     0x90, 2); // Port 1 bit 2\r
-   SBIT(P1_3,     0x90, 3); // Port 1 bit 3\r
-   SBIT(P1_4,     0x90, 4); // Port 1 bit 4\r
-   SBIT(P1_5,     0x90, 5); // Port 1 bit 5\r
-   SBIT(P1_6,     0x90, 6); // Port 1 bit 6\r
-   SBIT(P1_7,     0x90, 7); // Port 1 bit 7\r
-SFR(RFIM,     0x91); // RF Interrupt Mask\r
-SFR(DPS,      0x92); // Data Pointer Select\r
-SFR(MPAGE,    0x93); // Memory Page Select\r
-SFR(_XPAGE,   0x93); // Memory Page Select under the name SDCC needs it\r
-SFR(T2CMP,    0x94); // Timer 2 Compare Value\r
-SFR(ST0,      0x95); // Sleep Timer 0\r
-SFR(ST1,      0x96); // Sleep Timer 1\r
-SFR(ST2,      0x97); // Sleep Timer 2\r
-SFR(S0CON,    0x98); // Interrupt Flags 2\r
-   SBIT(ENCIF_0,  0x98, 0); // AES Interrupt Flag 0\r
-   SBIT(ENCIF_1,  0x98, 1); // AES Interrupt Flag 1\r
-SFR(IEN2,     0x9A); // Interrupt Enable 2\r
-SFR(S1CON,    0x9B); // Interrupt Flags 3\r
-SFR(T2PEROF0, 0x9C); // Timer 2 Overflow Capture/Compare 0\r
-SFR(T2PEROF1, 0x9D); // Timer 2 Overflow Capture/Compare 1\r
-SFR(T2PEROF2, 0x9E); // Timer 2 Overflow Capture/Compare 2\r
-SFR(P2,       0xA0); // Port 2\r
-   SBIT(P2_0,     0xA0, 0); // Port 2 bit 0\r
-   SBIT(P2_1,     0xA0, 1); // Port 2 bit 1\r
-   SBIT(P2_2,     0xA0, 2); // Port 2 bit 2\r
-   SBIT(P2_3,     0xA0, 3); // Port 2 bit 3\r
-   SBIT(P2_4,     0xA0, 4); // Port 2 bit 4\r
-   SBIT(P2_5,     0xA0, 5); // Port 2 bit 5\r
-   SBIT(P2_6,     0xA0, 6); // Port 2 bit 6\r
-   SBIT(P2_7,     0xA0, 7); // Port 2 bit 7\r
-SFR(T2OF0,    0xA1); // Timer 2 Overflow Count 0\r
-SFR(T2OF1,    0xA2); // Timer 2 Overflow Count 1\r
-SFR(T2OF2,    0xA3); // Timer 2 Overflow Count 2\r
-SFR(T2CAPLPL, 0xA4); // Timer 2 Period Low Byte\r
-SFR(T2CAPHPH, 0xA5); // Timer 2 Period High Byte\r
-SFR(T2TLD,    0xA6); // Timer 2 Timer Value Low Byte\r
-SFR(T2THD,    0xA7); // Timer 2 Timer Value High Byte\r
-SFR(IEN0,     0xA8); // Interrupt Enable 0\r
-   SBIT(RFERRIE,  0xA8, 0); // RF TX/RX FIFO interrupt enable\r
-   SBIT(ADCIE,    0xA8, 1); // ADC Interrupt Enable\r
-   SBIT(URX0IE,   0xA8, 2); // USART0 RX Interrupt Enable\r
-   SBIT(URX1IE,   0xA8, 3); // USART1 RX Interrupt Enable\r
-   SBIT(ENCIE,    0xA8, 4); // AES Encryption/Decryption Interrupt Enable\r
-   SBIT(STIE,     0xA8, 5); // Sleep Timer Interrupt Enable\r
-   SBIT(EA,       0xA8, 7); // Global Interrupt Enable\r
-SFR(IP0,      0xA9); // Interrupt Priority 0\r
-SFR(FWT,      0xAB); // Flash Write Timing\r
-SFR(FADDRL,   0xAC); // Flash Address Low Byte\r
-SFR(FADDRH,   0xAD); // Flash Address High Byte\r
-SFR(FCTL,     0xAE); // Flash Control\r
-SFR(FWDATA,   0xAF); // Flash Write Data\r
-SFR(ENCDI,    0xB1); // Encryption Input Data\r
-SFR(ENCDO,    0xB2); // Encryption Output Data\r
-SFR(ENCCS,    0xB3); // Encryption Control and Status\r
-SFR(ADCCON1,  0xB4); // ADC Control 1\r
-SFR(ADCCON2,  0xB5); // ADC Control 2\r
-SFR(ADCCON3,  0xB6); // ADC Control 3\r
-SFR(IEN1,     0xB8); // Interrupt Enable 1\r
-   SBIT(DMAIE,    0xB8, 0); // DMA Transfer Interrupt Enable\r
-   SBIT(T1IE,     0xB8, 1); // Timer 1 Interrupt Enable\r
-   SBIT(T2IE,     0xB8, 2); // Timer 2 Interrupt Enable\r
-   SBIT(T3IE,     0xB8, 3); // Timer 3 Interrupt Enable\r
-   SBIT(T4IE,     0xB8, 4); // Timer 4 Interrupt Enable\r
-   SBIT(P0IE,     0xB8, 5); // Port 0 Interrupt Enable\r
-SFR(IP1,      0xB9); // Interrupt Priority 1\r
-SFR(ADCL,     0xBA); // ADC Data Low\r
-SFR(ADCH,     0xBB); // ADC Data High\r
-SFR(RNDL,     0xBC); // Random Number Generator Data Low Byte\r
-SFR(RNDH,     0xBD); // Random Number Generator Data High Byte\r
-SFR(SLEEP,    0xBE); // Sleep Mode Control\r
-SFR(IRCON,    0xC0); // Interrupt Flags 4\r
-   SBIT(DMAIF,    0xC0, 0); // DMA Complete Interrupt Flag\r
-   SBIT(T1IF,     0xC0, 1); // Timer 1 Interrupt Flag\r
-   SBIT(T2IF,     0xC0, 2); // Timer 2 Interrupt Flag\r
-   SBIT(T3IF,     0xC0, 3); // Timer 3 Interrupt Flag\r
-   SBIT(T4IF,     0xC0, 4); // Timer 4 Interrupt Flag\r
-   SBIT(P0IF,     0xC0, 5); // Port 0 Interrupt Flag\r
-   SBIT(STIF,     0xC0, 7); // Sleep Timer Interrupt Flag\r
-SFR(U0DBUF,   0xC1); // USART 0 Receive/Transmit Data Buffer\r
-SFR(U0BAUD,   0xC2); // USART 0 Baud Rate Control\r
-SFR(T2CNF,    0xC3); // Timer 2 Configuration\r
-SFR(U0UCR,    0xC4); // USART 0 UART Control\r
-SFR(U0GCR,    0xC5); // USART 0 Generic Control\r
-SFR(CLKCON,   0xC6); // Clock Control\r
-SFR(MEMCTR,   0xC7); // Memory Arbiter Control\r
-SFR(WDCTL,    0xC9); // Watchdog Timer Control\r
-SFR(T3CNT,    0xCA); // Timer 3 Counter\r
-SFR(T3CTL,    0xCB); // Timer 3 Control\r
-SFR(T3CCTL0,  0xCC); // Timer 3 Channel 0 Capture/Compare Control\r
-SFR(T3CC0,    0xCD); // Timer 3 Channel 0 Capture/Compare Value\r
-SFR(T3CCTL1,  0xCE); // Timer 3 Channel 1 Capture/Compare Control\r
-SFR(T3CC1,    0xCF); // Timer 3 Channel 1 Capture/Compare Value\r
-SFR(PSW,      0xD0); // Program Status Word\r
-   SBIT(P,        0xD0, 0); // Parity Flag\r
-   SBIT(F1,       0xD0, 1); // User-Defined Flag\r
-   SBIT(OV,       0xD0, 2); // Overflow Flag\r
-   SBIT(RS0,      0xD0, 3); // Register Bank Select 0\r
-   SBIT(RS1,      0xD0, 4); // Register Bank Select 1\r
-   SBIT(F0,       0xD0, 5); // User-Defined Flag\r
-   SBIT(AC,       0xD0, 6); // Auxiliary Carry Flag\r
-   SBIT(CY,       0xD0, 7); // Carry Flag\r
-SFR(DMAIRQ,   0xD1); // DMA Interrupt Flag\r
-SFR(DMA1CFGL, 0xD2); // DMA Channel 1-4 Configuration Address Low Byte\r
-SFR(DMA1CFGH, 0xD3); // DMA Channel 1-4 Configuration Address High Byte\r
-SFR(DMA0CFGL, 0xD4); // DMA Channel 0 Configuration Address Low Byte\r
-SFR(DMA0CFGH, 0xD5); // DMA Channel 0 Configuration Address High Byte\r
-SFR(DMAARM,   0xD6); // DMA Channel Arm\r
-SFR(DMAREQ,   0xD7); // DMA Channel Start Request and Status\r
-SFR(TIMIF,    0xD8); // Timers 1/3/4 Interrupt Mask/Flag\r
-   SBIT(T3OVFIF,  0xD8, 0); // Timer 3 overflow interrupt flag 0:no pending 1:pending\r
-   SBIT(T3CH0IF,  0xD8, 1); // Timer 3 channel 0 interrupt flag 0:no pending 1:pending\r
-   SBIT(T3CH1IF,  0xD8, 2); // Timer 3 channel 1 interrupt flag 0:no pending 1:pending\r
-   SBIT(T4OVFIF,  0xD8, 3); // Timer 4 overflow interrupt flag 0:no pending 1:pending\r
-   SBIT(T4CH0IF,  0xD8, 4); // Timer 4 channel 0 interrupt flag 0:no pending 1:pending\r
-   SBIT(T4CH1IF,  0xD8, 5); // Timer 4 channel 1 interrupt flag 0:no pending 1:pending\r
-   SBIT(OVFIM,    0xD8, 6); // Timer 1 overflow interrupt mask\r
-SFR(RFD,      0xD9); // RF Data\r
-SFR(T1CC0L,   0xDA); // Timer 1 Channel 0 Capture/Compare Value Low\r
-SFR(T1CC0H,   0xDB); // Timer 1 Channel 0 Capture/Compare Value High\r
-SFR(T1CC1L,   0xDC); // Timer 1 Channel 1 Capture/Compare Value Low\r
-SFR(T1CC1H,   0xDD); // Timer 1 Channel 1 Capture/Compare Value High\r
-SFR(T1CC2L,   0xDE); // Timer 1 Channel 2 Capture/Compare Value Low\r
-SFR(T1CC2H,   0xDF); // Timer 1 Channel 2 Capture/Compare Value High\r
-SFR(ACC,      0xE0); // Accumulator\r
-   SBIT(ACC_0,    0xE0, 0); // Accumulator bit 0\r
-   SBIT(ACC_1,    0xE0, 1); // Accumulator bit 1\r
-   SBIT(ACC_2,    0xE0, 2); // Accumulator bit 2\r
-   SBIT(ACC_3,    0xE0, 3); // Accumulator bit 3\r
-   SBIT(ACC_4,    0xE0, 4); // Accumulator bit 4\r
-   SBIT(ACC_5,    0xE0, 5); // Accumulator bit 5\r
-   SBIT(ACC_6,    0xE0, 6); // Accumulator bit 6\r
-   SBIT(ACC_7,    0xE0, 7); // Accumulator bit 7\r
-SFR(RFST,     0xE1); // RF CSMA-CA / Strobe Processor\r
-SFR(T1CNTL,   0xE2); // Timer 1 Counter Low\r
-SFR(T1CNTH,   0xE3); // Timer 1 Counter High\r
-SFR(T1CTL,    0xE4); // Timer 1 Control and Status\r
-SFR(T1CCTL0,  0xE5); // Timer 1 Channel 0 Capture/Compare Control\r
-SFR(T1CCTL1,  0xE6); // Timer 1 Channel 1 Capture/Compare Control\r
-SFR(T1CCTL2,  0xE7); // Timer 1 Channel 2 Capture/Compare Control\r
-SFR(IRCON2,   0xE8); // Interrupt Flags 5\r
-   SBIT(P2IF,     0xE8, 0); // Port 2 Interrupt Flag\r
-   SBIT(UTX0IF,   0xE8, 1); // USART0 TX Interrupt Flag\r
-   SBIT(UTX1IF,   0xE8, 2); // USART1 TX Interrupt Flag\r
-   SBIT(P1IF,     0xE8, 3); // Port 1 Interrupt Flag\r
-   SBIT(WDTIF,    0xE8, 4); // Watchdog Timer Interrupt Flag\r
-SFR(RFIF,     0xE9); // RF Interrupt Flags\r
-SFR(T4CNT,    0xEA); // Timer 4 Counter\r
-SFR(T4CTL,    0xEB); // Timer 4 Control\r
-SFR(T4CCTL0,  0xEC); // Timer 4 Channel 0 Capture/Compare Control\r
-SFR(T4CC0,    0xED); // Timer 4 Channel 0 Capture/Compare Value\r
-SFR(T4CCTL1,  0xEE); // Timer 4 Channel 1 Capture/Compare Control\r
-SFR(T4CC1,    0xEF); // Timer 4 Channel 1 Capture/Compare Value\r
-SFR(B,        0xF0); // B Register\r
-   SBIT(B_0,      0xF0, 0); // Register B bit 0\r
-   SBIT(B_1,      0xF0, 1); // Register B bit 1\r
-   SBIT(B_2,      0xF0, 2); // Register B bit 2\r
-   SBIT(B_3,      0xF0, 3); // Register B bit 3\r
-   SBIT(B_4,      0xF0, 4); // Register B bit 4\r
-   SBIT(B_5,      0xF0, 5); // Register B bit 5\r
-   SBIT(B_6,      0xF0, 6); // Register B bit 6\r
-   SBIT(B_7,      0xF0, 7); // Register B bit 7\r
-SFR(PERCFG,   0xF1); // Peripheral Control\r
-SFR(ADCCFG,   0xF2); // ADC Input Configuration\r
-SFR(P0SEL,    0xF3); // Port 0 Function Select\r
-SFR(P1SEL,    0xF4); // Port 1 Function Select\r
-SFR(P2SEL,    0xF5); // Port 2 Function Select\r
-SFR(P1INP,    0xF6); // Port 1 Input Mode\r
-SFR(P2INP,    0xF7); // Port 2 Input Mode\r
-SFR(U1CSR,    0xF8); // USART 1 Control and Status\r
-   SBIT(ACTIVE,   0xF8, 0); // USART transmit/receive active status 0:idle 1:busy\r
-   SBIT(TX_BYTE,  0xF8, 1); // Transmit byte status 0:Byte not transmitted 1:Last byte transmitted\r
-   SBIT(RX_BYTE,  0xF8, 2); // Receive byte status 0:No byte received 1:Received byte ready\r
-   SBIT(ERR,      0xF8, 3); // UART parity error status 0:No error 1:parity error\r
-   SBIT(FE,       0xF8, 4); // UART framing error status 0:No error 1:incorrect stop bit level\r
-   SBIT(SLAVE,    0xF8, 5); // SPI master or slave mode select 0:master 1:slave\r
-   SBIT(RE,       0xF8, 6); // UART receiver enable 0:disabled 1:enabled\r
-   SBIT(MODE,     0xF8, 7); // USART mode select 0:SPI 1:UART\r
-SFR(U1DBUF,   0xF9); // USART 1 Receive/Transmit Data Buffer\r
-SFR(U1BAUD,   0xFA); // USART 1 Baud Rate Control\r
-SFR(U1UCR,    0xFB); // USART 1 UART Control\r
-SFR(U1GCR,    0xFC); // USART 1 Generic Control\r
-SFR(P0DIR,    0xFD); // Port 0 Direction\r
-SFR(P1DIR,    0xFE); // Port 1 Direction\r
-SFR(P2DIR,    0xFF); // Port 2 Direction\r
-\r
-// From Table 45 : Overview of RF registers\r
-\r
-SFRX(MDMCTRL0H,  0xDF02); // Modem Control 0,  high\r
-SFRX(MDMCTRL0L,  0xDF03); // Modem Control 0,  low\r
-SFRX(MDMCTRL1H,  0xDF04); // Modem Control 1,  high\r
-SFRX(MDMCTRL1L,  0xDF05); // Modem Control 1,  low\r
-SFRX(RSSIH,      0xDF06); // RSSI and CCA Status and Control,  high\r
-SFRX(RSSIL,      0xDF07); // RSSI and CCA Status and Control,  low\r
-SFRX(SYNCWORDH,  0xDF08); // Synchronisation Word Control,  high\r
-SFRX(SYNCWORDL,  0xDF09); // Synchronisation Word Control,  low\r
-SFRX(TXCTRLH,    0xDF0A); // Transmit Control,  high\r
-SFRX(TXCTRLL,    0xDF0B); // Transmit Control,  low\r
-SFRX(RXCTRL0H,   0xDF0C); // Receive Control 0,  high\r
-SFRX(RXCTRL0L,   0xDF0D); // Receive Control 0,  low\r
-SFRX(RXCTRL1H,   0xDF0E); // Receive Control 1,  high\r
-SFRX(RXCTRL1L,   0xDF0F); // Receive Control 1,  low\r
-SFRX(FSCTRLH,    0xDF10); // Frequency Synthesizer Control and Status,  high\r
-SFRX(FSCTRLL,    0xDF11); // Frequency Synthesizer Control and Status,  low\r
-SFRX(CSPX,       0xDF12); // CSP X Data\r
-SFRX(CSPY,       0xDF13); // CSP Y Data\r
-SFRX(CSPZ,       0xDF14); // CSP Z Data\r
-SFRX(CSPCTRL,    0xDF15); // CSP Control\r
-SFRX(CSPT,       0xDF16); // CSP T Data\r
-SFRX(RFPWR,      0xDF17); // RF Power Control\r
-SFRX(FSMTCH,     0xDF20); // Finite State Machine Time Constants,  high\r
-SFRX(FSMTCL,     0xDF21); // Finite State Machine Time Constants,  low\r
-SFRX(MANANDH,    0xDF22); // Manual AND Override,  high\r
-SFRX(MANANDL,    0xDF23); // Manual AND Override,  low\r
-SFRX(MANORH,     0xDF24); // Manual OR Override,  high\r
-SFRX(MANORL,     0xDF25); // Manual OR Override,  low\r
-SFRX(AGCCTRLH,   0xDF26); // AGC Control,  high\r
-SFRX(AGCCTRLL,   0xDF27); // AGC Control,  low\r
-SFRX(FSMSTATE,   0xDF39); // Finite State Machine State Status\r
-SFRX(ADCTSTH,    0xDF3A); // ADC Test,  high\r
-SFRX(ADCTSTL,    0xDF3B); // ADC Test,  low\r
-SFRX(DACTSTH,    0xDF3C); // DAC Test,  high\r
-SFRX(DACTSTL,    0xDF3D); // DAC Test,  low\r
-SFRX(IEEE_ADDR0, 0xDF43); // IEEE Address 0\r
-SFRX(IEEE_ADDR1, 0xDF44); // IEEE Address 1\r
-SFRX(IEEE_ADDR2, 0xDF45); // IEEE Address 2\r
-SFRX(IEEE_ADDR3, 0xDF46); // IEEE Address 3\r
-SFRX(IEEE_ADDR4, 0xDF47); // IEEE Address 4\r
-SFRX(IEEE_ADDR5, 0xDF48); // IEEE Address 5\r
-SFRX(IEEE_ADDR6, 0xDF49); // IEEE Address 6\r
-SFRX(IEEE_ADDR7, 0xDF4A); // IEEE Address 7\r
-SFRX(PANIDH,     0xDF4B); // PAN Identifier,  high\r
-SFRX(PANIDL,     0xDF4C); // PAN Identifier,  low\r
-SFRX(SHORTADDRH, 0xDF4D); // Short Address,  high\r
-SFRX(SHORTADDRL, 0xDF4E); // Short Address,  low\r
-SFRX(IOCFG0,     0xDF4F); // I/O Configuration 0\r
-SFRX(IOCFG1,     0xDF50); // I/O Configuration 1\r
-SFRX(IOCFG2,     0xDF51); // I/O Configuration 2\r
-SFRX(IOCFG3,     0xDF52); // I/O Configuration 3\r
-SFRX(RXFIFOCNT,  0xDF53); // RX FIFO Count\r
-SFRX(FSMTC1,     0xDF54); // Finite State Machine Control\r
-SFRX(CHVER,      0xDF60); // Chip Version\r
-SFRX(CHIPID,     0xDF61); // Chip Identification\r
-SFRX(RFSTATUS,   0xDF62); // RF Status\r
-\r
-// SFRs also accesible through XDATA space\r
-\r
-SFRX(X_U0CSR,    0xDF86); // USART 0 Control and Status\r
-SFRX(X_P0IFG,    0xDF89); // Port 0 Interrupt Status Flag\r
-SFRX(X_P1IFG,    0xDF8A); // Port 1 Interrupt Status Flag\r
-SFRX(X_P2IFG,    0xDF8B); // Port 2 Interrupt Status Flag\r
-SFRX(X_PICTL,    0xDF8C); // Port Interrupt Control\r
-SFRX(X_P1IEN,    0xDF8D); // Port 1 Interrupt Mask\r
-SFRX(X_P0INP,    0xDF8F); // Port 0 Input Mode\r
-SFRX(X_RFIM,     0xDF91); // RF Interrupt Mask\r
-SFRX(X_MPAGE,    0xDF93); // Memory Page Select\r
-SFRX(X_T2CMP,    0xDF94); // Timer 2 Compare Value\r
-SFRX(X_ST0,      0xDF95); // Sleep Timer 0\r
-SFRX(X_ST1,      0xDF96); // Sleep Timer 1\r
-SFRX(X_ST2,      0xDF97); // Sleep Timer 2\r
-SFRX(X_T2PEROF0, 0xDF9C); // Timer 2 Overflow Capture/Compare 0\r
-SFRX(X_T2PEROF1, 0xDF9D); // Timer 2 Overflow Capture/Compare 1\r
-SFRX(X_T2PEROF2, 0xDF9E); // Timer 2 Overflow Capture/Compare 2\r
-SFRX(X_T2OF0,    0xDFA1); // Timer 2 Overflow Count 0\r
-SFRX(X_T2OF1,    0xDFA2); // Timer 2 Overflow Count 1\r
-SFRX(X_T2OF2,    0xDFA3); // Timer 2 Overflow Count 2\r
-SFRX(X_T2CAPLPL, 0xDFA4); // Timer 2 Period Low Byte\r
-SFRX(X_T2CAPHPH, 0xDFA5); // Timer 2 Period High Byte\r
-SFRX(X_T2TLD,    0xDFA6); // Timer 2 Timer Value Low Byte\r
-SFRX(X_T2THD,    0xDFA7); // Timer 2 Timer Value High Byte\r
-SFRX(X_FWT,      0xDFAB); // Flash Write Timing\r
-SFRX(X_FADDRL,   0xDFAC); // Flash Address Low Byte\r
-SFRX(X_FADDRH,   0xDFAD); // Flash Address High Byte\r
-SFRX(X_FCTL,     0xDFAE); // Flash Control\r
-SFRX(X_FWDATA,   0xDFAF); // Flash Write Data\r
-SFRX(X_ENCDI,    0xDFB1); // Encryption Input Data\r
-SFRX(X_ENCDO,    0xDFB2); // Encryption Output Data\r
-SFRX(X_ENCCS,    0xDFB3); // Encryption Control and Status\r
-SFRX(X_ADCCON1,  0xDFB4); // ADC Control 1\r
-SFRX(X_ADCCON2,  0xDFB5); // ADC Control 2\r
-SFRX(X_ADCCON3,  0xDFB6); // ADC Control 3\r
-SFRX(X_ADCL,     0xDFBA); // ADC Data Low\r
-SFRX(X_ADCH,     0xDFBB); // ADC Data High\r
-SFRX(X_RNDL,     0xDFBC); // Random Number Generator Data Low Byte\r
-SFRX(X_RNDH,     0xDFBD); // Random Number Generator Data High Byte\r
-SFRX(X_SLEEP,    0xDFBE); // Sleep Mode Control\r
-SFRX(X_U0DBUF,   0xDFC1); // USART 0 Receive/Transmit Data Buffer\r
-SFRX(X_U0BAUD,   0xDFC2); // USART 0 Baud Rate Control\r
-SFRX(X_T2CNF,    0xDFC3); // Timer 2 Configuration\r
-SFRX(X_U0UCR,    0xDFC4); // USART 0 UART Control\r
-SFRX(X_U0GCR,    0xDFC5); // USART 0 Generic Control\r
-SFRX(X_CLKCON,   0xDFC6); // Clock Control\r
-SFRX(X_MEMCTR,   0xDFC7); // Memory Arbiter Control\r
-SFRX(X_WDCTL,    0xDFC9); // Watchdog Timer Control\r
-SFRX(X_T3CNT,    0xDFCA); // Timer 3 Counter\r
-SFRX(X_T3CTL,    0xDFCB); // Timer 3 Control\r
-SFRX(X_T3CCTL0,  0xDFCC); // Timer 3 Channel 0 Capture/Compare Control\r
-SFRX(X_T3CC0,    0xDFCD); // Timer 3 Channel 0 Capture/Compare Value\r
-SFRX(X_T3CCTL1,  0xDFCE); // Timer 3 Channel 1 Capture/Compare Control\r
-SFRX(X_T3CC1,    0xDFCF); // Timer 3 Channel 1 Capture/Compare Value\r
-SFRX(X_DMAIRQ,   0xDFD1); // DMA Interrupt Flag\r
-SFRX(X_DMA1CFGL, 0xDFD2); // DMA Channel 1-4 Configuration Address Low Byte\r
-SFRX(X_DMA1CFGH, 0xDFD3); // DMA Channel 1-4 Configuration Address High Byte\r
-SFRX(X_DMA0CFGL, 0xDFD4); // DMA Channel 0 Configuration Address Low Byte\r
-SFRX(X_DMA0CFGH, 0xDFD5); // DMA Channel 0 Configuration Address High Byte\r
-SFRX(X_DMAARM,   0xDFD6); // DMA Channel Arm\r
-SFRX(X_DMAREQ,   0xDFD7); // DMA Channel Start Request and Status\r
-SFRX(X_TIMIF,    0xDFD8); // Timers 1/3/4 Interrupt Mask/Flag\r
-SFRX(X_RFD,      0xDFD9); // RF Data\r
-SFRX(X_T1CC0L,   0xDFDA); // Timer 1 Channel 0 Capture/Compare Value Low\r
-SFRX(X_T1CC0H,   0xDFDB); // Timer 1 Channel 0 Capture/Compare Value High\r
-SFRX(X_T1CC1L,   0xDFDC); // Timer 1 Channel 1 Capture/Compare Value Low\r
-SFRX(X_T1CC1H,   0xDFDD); // Timer 1 Channel 1 Capture/Compare Value High\r
-SFRX(X_T1CC2L,   0xDFDE); // Timer 1 Channel 2 Capture/Compare Value Low\r
-SFRX(X_T1CC2H,   0xDFDF); // Timer 1 Channel 2 Capture/Compare Value High\r
-SFRX(X_RFST,     0xDFE1); // RF CSMA-CA / Strobe Processor\r
-SFRX(X_T1CNTL,   0xDFE2); // Timer 1 Counter Low\r
-SFRX(X_T1CNTH,   0xDFE3); // Timer 1 Counter High\r
-SFRX(X_T1CTL,    0xDFE4); // Timer 1 Control and Status\r
-SFRX(X_T1CCTL0,  0xDFE5); // Timer 1 Channel 0 Capture/Compare Control\r
-SFRX(X_T1CCTL1,  0xDFE6); // Timer 1 Channel 1 Capture/Compare Control\r
-SFRX(X_T1CCTL2,  0xDFE7); // Timer 1 Channel 2 Capture/Compare Control\r
-SFRX(X_RFIF,     0xDFE9); // RF Interrupt Flags\r
-SFRX(X_T4CNT,    0xDFEA); // Timer 4 Counter\r
-SFRX(X_T4CTL,    0xDFEB); // Timer 4 Control\r
-SFRX(X_T4CCTL0,  0xDFEC); // Timer 4 Channel 0 Capture/Compare Control\r
-SFRX(X_T4CC0,    0xDFED); // Timer 4 Channel 0 Capture/Compare Value\r
-SFRX(X_T4CCTL1,  0xDFEE); // Timer 4 Channel 1 Capture/Compare Control\r
-SFRX(X_T4CC1,    0xDFEF); // Timer 4 Channel 1 Capture/Compare Value\r
-SFRX(X_PERCFG,   0xDFF1); // Peripheral Control\r
-SFRX(X_ADCCFG,   0xDFF2); // ADC Input Configuration\r
-SFRX(X_P0SEL,    0xDFF3); // Port 0 Function Select\r
-SFRX(X_P1SEL,    0xDFF4); // Port 1 Function Select\r
-SFRX(X_P2SEL,    0xDFF5); // Port 2 Function Select\r
-SFRX(X_P1INP,    0xDFF6); // Port 1 Input Mode\r
-SFRX(X_P2INP,    0xDFF7); // Port 2 Input Mode\r
-SFRX(X_U1CSR,    0xDFF8); // USART 1 Control and Status\r
-SFRX(X_U1DBUF,   0xDFF9); // USART 1 Receive/Transmit Data Buffer\r
-SFRX(X_U1BAUD,   0xDFFA); // USART 1 Baud Rate Control\r
-SFRX(X_U1UCR,    0xDFFB); // USART 1 UART Control\r
-SFRX(X_U1GCR,    0xDFFC); // USART 1 Generic Control\r
-SFRX(X_P0DIR,    0xDFFD); // Port 0 Direction\r
-SFRX(X_P1DIR,    0xDFFE); // Port 1 Direction\r
-SFRX(X_P2DIR,    0xDFFF); // Port 2 Direction\r
-\r
-#endif //REG_CC2430_H\r
+/*-------------------------------------------------------------------------
+   Register Declarations for Chipcon CC2430
+
+   Written By -  Jesus Calvino-Fraga / jesusc at ece.ubc.ca (December 2006)
+   (Based on CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A)
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+   In other words, you are welcome to use, share and improve this program.
+   You are forbidden to forbid anyone else to use, share and improve
+   what you give them.   Help stamp out software-hoarding!
+-------------------------------------------------------------------------*/
+
+#ifndef REG_CC2430_H
+#define REG_CC2430_H
+
+#include <compiler.h>
+
+// Interrupt Vectors
+
+#define RFERR_VECTOR    0   // RF TX FIFO underflow and RX FIFO overflow.
+#define ADC_VECTOR      1   // ADC end of conversion
+#define URX0_VECTOR     2   // USART0 RX complete
+#define URX1_VECTOR     3   // USART1 RX complete
+#define ENC_VECTOR      4   // AES encryption/decryption complete
+#define ST_VECTOR       5   // Sleep Timer compare
+#define P2INT_VECTOR    6   // Port 2 inputs
+#define UTX0_VECTOR     7   // USART0 TX complete
+#define DMA_VECTOR      8   // DMA transfer complete
+#define T1_VECTOR       9   // Timer 1 (16-bit) capture/compare/overflow
+#define T2_VECTOR       10  // Timer 2 (MAC Timer)
+#define T3_VECTOR       11  // Timer 3 (8-bit) capture/compare/overflow
+#define T4_VECTOR       12  // Timer 4 (8-bit) capture/compare/overflow
+#define P0INT_VECTOR    13  // Port 0 inputs
+#define UTX1_VECTOR     14  // USART1 TX complete
+#define P1INT_VECTOR    15  // Port 1 inputs
+#define RF_VECTOR       16  // RF general interrupts
+#define WDT_VECTOR      17  // Watchdog overflow in timer mode
+
+// SFR Registers and BITs
+
+SFR(P0,       0x80); // Port 0
+   SBIT(P0_0,     0x80, 0); // Port 0 bit 0
+   SBIT(P0_1,     0x80, 1); // Port 0 bit 1
+   SBIT(P0_2,     0x80, 2); // Port 0 bit 2
+   SBIT(P0_3,     0x80, 3); // Port 0 bit 3
+   SBIT(P0_4,     0x80, 4); // Port 0 bit 4
+   SBIT(P0_5,     0x80, 5); // Port 0 bit 5
+   SBIT(P0_6,     0x80, 6); // Port 0 bit 6
+   SBIT(P0_7,     0x80, 7); // Port 0 bit 7
+SFR(SP,       0x81); // Stack Pointer
+SFR(DPL0,     0x82); // Data Pointer 0 Low Byte
+SFR(DPH0,     0x83); // Data Pointer 0 High Byte
+SFR(DPL1,     0x84); // Data Pointer 1 Low Byte
+SFR(DPH1,     0x85); // Data Pointer 1 High Byte
+SFR(U0CSR,    0x86); // USART 0 Control and Status
+SFR(PCON,     0x87); // Power Mode Control
+SFR(TCON,     0x88); // Interrupt Flags
+   SBIT(IT0,      0x88, 0); // reserved (must always be set to 1)
+   SBIT(RFERRIF,  0x88, 1); // RFERR \96 RF TX/RX FIFO interrupt flag
+   SBIT(IT1,      0x88, 2); // reserved (must always be set to 1)
+   SBIT(URX0IF,   0x88, 3); // USART0 RX Interrupt Flag
+   SBIT(ADCIF,    0x88, 5); // ADC Interrupt Flag
+   SBIT(URX1IF,   0x88, 7); // USART1 RX Interrupt Flag
+SFR(P0IFG,    0x89); // Port 0 Interrupt Status Flag
+SFR(P1IFG,    0x8A); // Port 1 Interrupt Status Flag
+SFR(P2IFG,    0x8B); // Port 2 Interrupt Status Flag
+SFR(PICTL,    0x8C); // Port Interrupt Control
+SFR(P1IEN,    0x8D); // Port 1 Interrupt Mask
+SFR(P0INP,    0x8F); // Port 0 Input Mode
+SFR(P1,       0x90); // Port 1
+   SBIT(P1_0,     0x90, 0); // Port 1 bit 0
+   SBIT(P1_1,     0x90, 1); // Port 1 bit 1
+   SBIT(P1_2,     0x90, 2); // Port 1 bit 2
+   SBIT(P1_3,     0x90, 3); // Port 1 bit 3
+   SBIT(P1_4,     0x90, 4); // Port 1 bit 4
+   SBIT(P1_5,     0x90, 5); // Port 1 bit 5
+   SBIT(P1_6,     0x90, 6); // Port 1 bit 6
+   SBIT(P1_7,     0x90, 7); // Port 1 bit 7
+SFR(RFIM,     0x91); // RF Interrupt Mask
+SFR(DPS,      0x92); // Data Pointer Select
+SFR(MPAGE,    0x93); // Memory Page Select
+SFR(_XPAGE,   0x93); // Memory Page Select under the name SDCC needs it
+SFR(T2CMP,    0x94); // Timer 2 Compare Value
+SFR(ST0,      0x95); // Sleep Timer 0
+SFR(ST1,      0x96); // Sleep Timer 1
+SFR(ST2,      0x97); // Sleep Timer 2
+SFR(S0CON,    0x98); // Interrupt Flags 2
+   SBIT(ENCIF_0,  0x98, 0); // AES Interrupt Flag 0
+   SBIT(ENCIF_1,  0x98, 1); // AES Interrupt Flag 1
+SFR(IEN2,     0x9A); // Interrupt Enable 2
+SFR(S1CON,    0x9B); // Interrupt Flags 3
+SFR(T2PEROF0, 0x9C); // Timer 2 Overflow Capture/Compare 0
+SFR(T2PEROF1, 0x9D); // Timer 2 Overflow Capture/Compare 1
+SFR(T2PEROF2, 0x9E); // Timer 2 Overflow Capture/Compare 2
+SFR(P2,       0xA0); // Port 2
+   SBIT(P2_0,     0xA0, 0); // Port 2 bit 0
+   SBIT(P2_1,     0xA0, 1); // Port 2 bit 1
+   SBIT(P2_2,     0xA0, 2); // Port 2 bit 2
+   SBIT(P2_3,     0xA0, 3); // Port 2 bit 3
+   SBIT(P2_4,     0xA0, 4); // Port 2 bit 4
+   SBIT(P2_5,     0xA0, 5); // Port 2 bit 5
+   SBIT(P2_6,     0xA0, 6); // Port 2 bit 6
+   SBIT(P2_7,     0xA0, 7); // Port 2 bit 7
+SFR(T2OF0,    0xA1); // Timer 2 Overflow Count 0
+SFR(T2OF1,    0xA2); // Timer 2 Overflow Count 1
+SFR(T2OF2,    0xA3); // Timer 2 Overflow Count 2
+SFR(T2CAPLPL, 0xA4); // Timer 2 Period Low Byte
+SFR(T2CAPHPH, 0xA5); // Timer 2 Period High Byte
+SFR(T2TLD,    0xA6); // Timer 2 Timer Value Low Byte
+SFR(T2THD,    0xA7); // Timer 2 Timer Value High Byte
+SFR(IEN0,     0xA8); // Interrupt Enable 0
+   SBIT(RFERRIE,  0xA8, 0); // RF TX/RX FIFO interrupt enable
+   SBIT(ADCIE,    0xA8, 1); // ADC Interrupt Enable
+   SBIT(URX0IE,   0xA8, 2); // USART0 RX Interrupt Enable
+   SBIT(URX1IE,   0xA8, 3); // USART1 RX Interrupt Enable
+   SBIT(ENCIE,    0xA8, 4); // AES Encryption/Decryption Interrupt Enable
+   SBIT(STIE,     0xA8, 5); // Sleep Timer Interrupt Enable
+   SBIT(EA,       0xA8, 7); // Global Interrupt Enable
+SFR(IP0,      0xA9); // Interrupt Priority 0
+SFR(FWT,      0xAB); // Flash Write Timing
+SFR(FADDRL,   0xAC); // Flash Address Low Byte
+SFR(FADDRH,   0xAD); // Flash Address High Byte
+SFR(FCTL,     0xAE); // Flash Control
+SFR(FWDATA,   0xAF); // Flash Write Data
+SFR(ENCDI,    0xB1); // Encryption Input Data
+SFR(ENCDO,    0xB2); // Encryption Output Data
+SFR(ENCCS,    0xB3); // Encryption Control and Status
+SFR(ADCCON1,  0xB4); // ADC Control 1
+SFR(ADCCON2,  0xB5); // ADC Control 2
+SFR(ADCCON3,  0xB6); // ADC Control 3
+SFR(IEN1,     0xB8); // Interrupt Enable 1
+   SBIT(DMAIE,    0xB8, 0); // DMA Transfer Interrupt Enable
+   SBIT(T1IE,     0xB8, 1); // Timer 1 Interrupt Enable
+   SBIT(T2IE,     0xB8, 2); // Timer 2 Interrupt Enable
+   SBIT(T3IE,     0xB8, 3); // Timer 3 Interrupt Enable
+   SBIT(T4IE,     0xB8, 4); // Timer 4 Interrupt Enable
+   SBIT(P0IE,     0xB8, 5); // Port 0 Interrupt Enable
+SFR(IP1,      0xB9); // Interrupt Priority 1
+SFR(ADCL,     0xBA); // ADC Data Low
+SFR(ADCH,     0xBB); // ADC Data High
+SFR(RNDL,     0xBC); // Random Number Generator Data Low Byte
+SFR(RNDH,     0xBD); // Random Number Generator Data High Byte
+SFR(SLEEP,    0xBE); // Sleep Mode Control
+SFR(IRCON,    0xC0); // Interrupt Flags 4
+   SBIT(DMAIF,    0xC0, 0); // DMA Complete Interrupt Flag
+   SBIT(T1IF,     0xC0, 1); // Timer 1 Interrupt Flag
+   SBIT(T2IF,     0xC0, 2); // Timer 2 Interrupt Flag
+   SBIT(T3IF,     0xC0, 3); // Timer 3 Interrupt Flag
+   SBIT(T4IF,     0xC0, 4); // Timer 4 Interrupt Flag
+   SBIT(P0IF,     0xC0, 5); // Port 0 Interrupt Flag
+   SBIT(STIF,     0xC0, 7); // Sleep Timer Interrupt Flag
+SFR(U0DBUF,   0xC1); // USART 0 Receive/Transmit Data Buffer
+SFR(U0BAUD,   0xC2); // USART 0 Baud Rate Control
+SFR(T2CNF,    0xC3); // Timer 2 Configuration
+SFR(U0UCR,    0xC4); // USART 0 UART Control
+SFR(U0GCR,    0xC5); // USART 0 Generic Control
+SFR(CLKCON,   0xC6); // Clock Control
+SFR(MEMCTR,   0xC7); // Memory Arbiter Control
+SFR(WDCTL,    0xC9); // Watchdog Timer Control
+SFR(T3CNT,    0xCA); // Timer 3 Counter
+SFR(T3CTL,    0xCB); // Timer 3 Control
+SFR(T3CCTL0,  0xCC); // Timer 3 Channel 0 Capture/Compare Control
+SFR(T3CC0,    0xCD); // Timer 3 Channel 0 Capture/Compare Value
+SFR(T3CCTL1,  0xCE); // Timer 3 Channel 1 Capture/Compare Control
+SFR(T3CC1,    0xCF); // Timer 3 Channel 1 Capture/Compare Value
+SFR(PSW,      0xD0); // Program Status Word
+   SBIT(P,        0xD0, 0); // Parity Flag
+   SBIT(F1,       0xD0, 1); // User-Defined Flag
+   SBIT(OV,       0xD0, 2); // Overflow Flag
+   SBIT(RS0,      0xD0, 3); // Register Bank Select 0
+   SBIT(RS1,      0xD0, 4); // Register Bank Select 1
+   SBIT(F0,       0xD0, 5); // User-Defined Flag
+   SBIT(AC,       0xD0, 6); // Auxiliary Carry Flag
+   SBIT(CY,       0xD0, 7); // Carry Flag
+SFR(DMAIRQ,   0xD1); // DMA Interrupt Flag
+SFR(DMA1CFGL, 0xD2); // DMA Channel 1-4 Configuration Address Low Byte
+SFR(DMA1CFGH, 0xD3); // DMA Channel 1-4 Configuration Address High Byte
+SFR(DMA0CFGL, 0xD4); // DMA Channel 0 Configuration Address Low Byte
+SFR(DMA0CFGH, 0xD5); // DMA Channel 0 Configuration Address High Byte
+SFR(DMAARM,   0xD6); // DMA Channel Arm
+SFR(DMAREQ,   0xD7); // DMA Channel Start Request and Status
+SFR(TIMIF,    0xD8); // Timers 1/3/4 Interrupt Mask/Flag
+   SBIT(T3OVFIF,  0xD8, 0); // Timer 3 overflow interrupt flag 0:no pending 1:pending
+   SBIT(T3CH0IF,  0xD8, 1); // Timer 3 channel 0 interrupt flag 0:no pending 1:pending
+   SBIT(T3CH1IF,  0xD8, 2); // Timer 3 channel 1 interrupt flag 0:no pending 1:pending
+   SBIT(T4OVFIF,  0xD8, 3); // Timer 4 overflow interrupt flag 0:no pending 1:pending
+   SBIT(T4CH0IF,  0xD8, 4); // Timer 4 channel 0 interrupt flag 0:no pending 1:pending
+   SBIT(T4CH1IF,  0xD8, 5); // Timer 4 channel 1 interrupt flag 0:no pending 1:pending
+   SBIT(OVFIM,    0xD8, 6); // Timer 1 overflow interrupt mask
+SFR(RFD,      0xD9); // RF Data
+SFR(T1CC0L,   0xDA); // Timer 1 Channel 0 Capture/Compare Value Low
+SFR(T1CC0H,   0xDB); // Timer 1 Channel 0 Capture/Compare Value High
+SFR(T1CC1L,   0xDC); // Timer 1 Channel 1 Capture/Compare Value Low
+SFR(T1CC1H,   0xDD); // Timer 1 Channel 1 Capture/Compare Value High
+SFR(T1CC2L,   0xDE); // Timer 1 Channel 2 Capture/Compare Value Low
+SFR(T1CC2H,   0xDF); // Timer 1 Channel 2 Capture/Compare Value High
+SFR(ACC,      0xE0); // Accumulator
+   SBIT(ACC_0,    0xE0, 0); // Accumulator bit 0
+   SBIT(ACC_1,    0xE0, 1); // Accumulator bit 1
+   SBIT(ACC_2,    0xE0, 2); // Accumulator bit 2
+   SBIT(ACC_3,    0xE0, 3); // Accumulator bit 3
+   SBIT(ACC_4,    0xE0, 4); // Accumulator bit 4
+   SBIT(ACC_5,    0xE0, 5); // Accumulator bit 5
+   SBIT(ACC_6,    0xE0, 6); // Accumulator bit 6
+   SBIT(ACC_7,    0xE0, 7); // Accumulator bit 7
+SFR(RFST,     0xE1); // RF CSMA-CA / Strobe Processor
+SFR(T1CNTL,   0xE2); // Timer 1 Counter Low
+SFR(T1CNTH,   0xE3); // Timer 1 Counter High
+SFR(T1CTL,    0xE4); // Timer 1 Control and Status
+SFR(T1CCTL0,  0xE5); // Timer 1 Channel 0 Capture/Compare Control
+SFR(T1CCTL1,  0xE6); // Timer 1 Channel 1 Capture/Compare Control
+SFR(T1CCTL2,  0xE7); // Timer 1 Channel 2 Capture/Compare Control
+SFR(IRCON2,   0xE8); // Interrupt Flags 5
+   SBIT(P2IF,     0xE8, 0); // Port 2 Interrupt Flag
+   SBIT(UTX0IF,   0xE8, 1); // USART0 TX Interrupt Flag
+   SBIT(UTX1IF,   0xE8, 2); // USART1 TX Interrupt Flag
+   SBIT(P1IF,     0xE8, 3); // Port 1 Interrupt Flag
+   SBIT(WDTIF,    0xE8, 4); // Watchdog Timer Interrupt Flag
+SFR(RFIF,     0xE9); // RF Interrupt Flags
+SFR(T4CNT,    0xEA); // Timer 4 Counter
+SFR(T4CTL,    0xEB); // Timer 4 Control
+SFR(T4CCTL0,  0xEC); // Timer 4 Channel 0 Capture/Compare Control
+SFR(T4CC0,    0xED); // Timer 4 Channel 0 Capture/Compare Value
+SFR(T4CCTL1,  0xEE); // Timer 4 Channel 1 Capture/Compare Control
+SFR(T4CC1,    0xEF); // Timer 4 Channel 1 Capture/Compare Value
+SFR(B,        0xF0); // B Register
+   SBIT(B_0,      0xF0, 0); // Register B bit 0
+   SBIT(B_1,      0xF0, 1); // Register B bit 1
+   SBIT(B_2,      0xF0, 2); // Register B bit 2
+   SBIT(B_3,      0xF0, 3); // Register B bit 3
+   SBIT(B_4,      0xF0, 4); // Register B bit 4
+   SBIT(B_5,      0xF0, 5); // Register B bit 5
+   SBIT(B_6,      0xF0, 6); // Register B bit 6
+   SBIT(B_7,      0xF0, 7); // Register B bit 7
+SFR(PERCFG,   0xF1); // Peripheral Control
+SFR(ADCCFG,   0xF2); // ADC Input Configuration
+SFR(P0SEL,    0xF3); // Port 0 Function Select
+SFR(P1SEL,    0xF4); // Port 1 Function Select
+SFR(P2SEL,    0xF5); // Port 2 Function Select
+SFR(P1INP,    0xF6); // Port 1 Input Mode
+SFR(P2INP,    0xF7); // Port 2 Input Mode
+SFR(U1CSR,    0xF8); // USART 1 Control and Status
+   SBIT(ACTIVE,   0xF8, 0); // USART transmit/receive active status 0:idle 1:busy
+   SBIT(TX_BYTE,  0xF8, 1); // Transmit byte status 0:Byte not transmitted 1:Last byte transmitted
+   SBIT(RX_BYTE,  0xF8, 2); // Receive byte status 0:No byte received 1:Received byte ready
+   SBIT(ERR,      0xF8, 3); // UART parity error status 0:No error 1:parity error
+   SBIT(FE,       0xF8, 4); // UART framing error status 0:No error 1:incorrect stop bit level
+   SBIT(SLAVE,    0xF8, 5); // SPI master or slave mode select 0:master 1:slave
+   SBIT(RE,       0xF8, 6); // UART receiver enable 0:disabled 1:enabled
+   SBIT(MODE,     0xF8, 7); // USART mode select 0:SPI 1:UART
+SFR(U1DBUF,   0xF9); // USART 1 Receive/Transmit Data Buffer
+SFR(U1BAUD,   0xFA); // USART 1 Baud Rate Control
+SFR(U1UCR,    0xFB); // USART 1 UART Control
+SFR(U1GCR,    0xFC); // USART 1 Generic Control
+SFR(P0DIR,    0xFD); // Port 0 Direction
+SFR(P1DIR,    0xFE); // Port 1 Direction
+SFR(P2DIR,    0xFF); // Port 2 Direction
+
+// From Table 45 : Overview of RF registers
+
+SFRX(MDMCTRL0H,  0xDF02); // Modem Control 0,  high
+SFRX(MDMCTRL0L,  0xDF03); // Modem Control 0,  low
+SFRX(MDMCTRL1H,  0xDF04); // Modem Control 1,  high
+SFRX(MDMCTRL1L,  0xDF05); // Modem Control 1,  low
+SFRX(RSSIH,      0xDF06); // RSSI and CCA Status and Control,  high
+SFRX(RSSIL,      0xDF07); // RSSI and CCA Status and Control,  low
+SFRX(SYNCWORDH,  0xDF08); // Synchronisation Word Control,  high
+SFRX(SYNCWORDL,  0xDF09); // Synchronisation Word Control,  low
+SFRX(TXCTRLH,    0xDF0A); // Transmit Control,  high
+SFRX(TXCTRLL,    0xDF0B); // Transmit Control,  low
+SFRX(RXCTRL0H,   0xDF0C); // Receive Control 0,  high
+SFRX(RXCTRL0L,   0xDF0D); // Receive Control 0,  low
+SFRX(RXCTRL1H,   0xDF0E); // Receive Control 1,  high
+SFRX(RXCTRL1L,   0xDF0F); // Receive Control 1,  low
+SFRX(FSCTRLH,    0xDF10); // Frequency Synthesizer Control and Status,  high
+SFRX(FSCTRLL,    0xDF11); // Frequency Synthesizer Control and Status,  low
+SFRX(CSPX,       0xDF12); // CSP X Data
+SFRX(CSPY,       0xDF13); // CSP Y Data
+SFRX(CSPZ,       0xDF14); // CSP Z Data
+SFRX(CSPCTRL,    0xDF15); // CSP Control
+SFRX(CSPT,       0xDF16); // CSP T Data
+SFRX(RFPWR,      0xDF17); // RF Power Control
+SFRX(FSMTCH,     0xDF20); // Finite State Machine Time Constants,  high
+SFRX(FSMTCL,     0xDF21); // Finite State Machine Time Constants,  low
+SFRX(MANANDH,    0xDF22); // Manual AND Override,  high
+SFRX(MANANDL,    0xDF23); // Manual AND Override,  low
+SFRX(MANORH,     0xDF24); // Manual OR Override,  high
+SFRX(MANORL,     0xDF25); // Manual OR Override,  low
+SFRX(AGCCTRLH,   0xDF26); // AGC Control,  high
+SFRX(AGCCTRLL,   0xDF27); // AGC Control,  low
+SFRX(FSMSTATE,   0xDF39); // Finite State Machine State Status
+SFRX(ADCTSTH,    0xDF3A); // ADC Test,  high
+SFRX(ADCTSTL,    0xDF3B); // ADC Test,  low
+SFRX(DACTSTH,    0xDF3C); // DAC Test,  high
+SFRX(DACTSTL,    0xDF3D); // DAC Test,  low
+SFRX(IEEE_ADDR0, 0xDF43); // IEEE Address 0
+SFRX(IEEE_ADDR1, 0xDF44); // IEEE Address 1
+SFRX(IEEE_ADDR2, 0xDF45); // IEEE Address 2
+SFRX(IEEE_ADDR3, 0xDF46); // IEEE Address 3
+SFRX(IEEE_ADDR4, 0xDF47); // IEEE Address 4
+SFRX(IEEE_ADDR5, 0xDF48); // IEEE Address 5
+SFRX(IEEE_ADDR6, 0xDF49); // IEEE Address 6
+SFRX(IEEE_ADDR7, 0xDF4A); // IEEE Address 7
+SFRX(PANIDH,     0xDF4B); // PAN Identifier,  high
+SFRX(PANIDL,     0xDF4C); // PAN Identifier,  low
+SFRX(SHORTADDRH, 0xDF4D); // Short Address,  high
+SFRX(SHORTADDRL, 0xDF4E); // Short Address,  low
+SFRX(IOCFG0,     0xDF4F); // I/O Configuration 0
+SFRX(IOCFG1,     0xDF50); // I/O Configuration 1
+SFRX(IOCFG2,     0xDF51); // I/O Configuration 2
+SFRX(IOCFG3,     0xDF52); // I/O Configuration 3
+SFRX(RXFIFOCNT,  0xDF53); // RX FIFO Count
+SFRX(FSMTC1,     0xDF54); // Finite State Machine Control
+SFRX(CHVER,      0xDF60); // Chip Version
+SFRX(CHIPID,     0xDF61); // Chip Identification
+SFRX(RFSTATUS,   0xDF62); // RF Status
+
+// SFRs also accesible through XDATA space
+
+SFRX(X_U0CSR,    0xDF86); // USART 0 Control and Status
+SFRX(X_P0IFG,    0xDF89); // Port 0 Interrupt Status Flag
+SFRX(X_P1IFG,    0xDF8A); // Port 1 Interrupt Status Flag
+SFRX(X_P2IFG,    0xDF8B); // Port 2 Interrupt Status Flag
+SFRX(X_PICTL,    0xDF8C); // Port Interrupt Control
+SFRX(X_P1IEN,    0xDF8D); // Port 1 Interrupt Mask
+SFRX(X_P0INP,    0xDF8F); // Port 0 Input Mode
+SFRX(X_RFIM,     0xDF91); // RF Interrupt Mask
+SFRX(X_MPAGE,    0xDF93); // Memory Page Select
+SFRX(X_T2CMP,    0xDF94); // Timer 2 Compare Value
+SFRX(X_ST0,      0xDF95); // Sleep Timer 0
+SFRX(X_ST1,      0xDF96); // Sleep Timer 1
+SFRX(X_ST2,      0xDF97); // Sleep Timer 2
+SFRX(X_T2PEROF0, 0xDF9C); // Timer 2 Overflow Capture/Compare 0
+SFRX(X_T2PEROF1, 0xDF9D); // Timer 2 Overflow Capture/Compare 1
+SFRX(X_T2PEROF2, 0xDF9E); // Timer 2 Overflow Capture/Compare 2
+SFRX(X_T2OF0,    0xDFA1); // Timer 2 Overflow Count 0
+SFRX(X_T2OF1,    0xDFA2); // Timer 2 Overflow Count 1
+SFRX(X_T2OF2,    0xDFA3); // Timer 2 Overflow Count 2
+SFRX(X_T2CAPLPL, 0xDFA4); // Timer 2 Period Low Byte
+SFRX(X_T2CAPHPH, 0xDFA5); // Timer 2 Period High Byte
+SFRX(X_T2TLD,    0xDFA6); // Timer 2 Timer Value Low Byte
+SFRX(X_T2THD,    0xDFA7); // Timer 2 Timer Value High Byte
+SFRX(X_FWT,      0xDFAB); // Flash Write Timing
+SFRX(X_FADDRL,   0xDFAC); // Flash Address Low Byte
+SFRX(X_FADDRH,   0xDFAD); // Flash Address High Byte
+SFRX(X_FCTL,     0xDFAE); // Flash Control
+SFRX(X_FWDATA,   0xDFAF); // Flash Write Data
+SFRX(X_ENCDI,    0xDFB1); // Encryption Input Data
+SFRX(X_ENCDO,    0xDFB2); // Encryption Output Data
+SFRX(X_ENCCS,    0xDFB3); // Encryption Control and Status
+SFRX(X_ADCCON1,  0xDFB4); // ADC Control 1
+SFRX(X_ADCCON2,  0xDFB5); // ADC Control 2
+SFRX(X_ADCCON3,  0xDFB6); // ADC Control 3
+SFRX(X_ADCL,     0xDFBA); // ADC Data Low
+SFRX(X_ADCH,     0xDFBB); // ADC Data High
+SFRX(X_RNDL,     0xDFBC); // Random Number Generator Data Low Byte
+SFRX(X_RNDH,     0xDFBD); // Random Number Generator Data High Byte
+SFRX(X_SLEEP,    0xDFBE); // Sleep Mode Control
+SFRX(X_U0DBUF,   0xDFC1); // USART 0 Receive/Transmit Data Buffer
+SFRX(X_U0BAUD,   0xDFC2); // USART 0 Baud Rate Control
+SFRX(X_T2CNF,    0xDFC3); // Timer 2 Configuration
+SFRX(X_U0UCR,    0xDFC4); // USART 0 UART Control
+SFRX(X_U0GCR,    0xDFC5); // USART 0 Generic Control
+SFRX(X_CLKCON,   0xDFC6); // Clock Control
+SFRX(X_MEMCTR,   0xDFC7); // Memory Arbiter Control
+SFRX(X_WDCTL,    0xDFC9); // Watchdog Timer Control
+SFRX(X_T3CNT,    0xDFCA); // Timer 3 Counter
+SFRX(X_T3CTL,    0xDFCB); // Timer 3 Control
+SFRX(X_T3CCTL0,  0xDFCC); // Timer 3 Channel 0 Capture/Compare Control
+SFRX(X_T3CC0,    0xDFCD); // Timer 3 Channel 0 Capture/Compare Value
+SFRX(X_T3CCTL1,  0xDFCE); // Timer 3 Channel 1 Capture/Compare Control
+SFRX(X_T3CC1,    0xDFCF); // Timer 3 Channel 1 Capture/Compare Value
+SFRX(X_DMAIRQ,   0xDFD1); // DMA Interrupt Flag
+SFRX(X_DMA1CFGL, 0xDFD2); // DMA Channel 1-4 Configuration Address Low Byte
+SFRX(X_DMA1CFGH, 0xDFD3); // DMA Channel 1-4 Configuration Address High Byte
+SFRX(X_DMA0CFGL, 0xDFD4); // DMA Channel 0 Configuration Address Low Byte
+SFRX(X_DMA0CFGH, 0xDFD5); // DMA Channel 0 Configuration Address High Byte
+SFRX(X_DMAARM,   0xDFD6); // DMA Channel Arm
+SFRX(X_DMAREQ,   0xDFD7); // DMA Channel Start Request and Status
+SFRX(X_TIMIF,    0xDFD8); // Timers 1/3/4 Interrupt Mask/Flag
+SFRX(X_RFD,      0xDFD9); // RF Data
+SFRX(X_T1CC0L,   0xDFDA); // Timer 1 Channel 0 Capture/Compare Value Low
+SFRX(X_T1CC0H,   0xDFDB); // Timer 1 Channel 0 Capture/Compare Value High
+SFRX(X_T1CC1L,   0xDFDC); // Timer 1 Channel 1 Capture/Compare Value Low
+SFRX(X_T1CC1H,   0xDFDD); // Timer 1 Channel 1 Capture/Compare Value High
+SFRX(X_T1CC2L,   0xDFDE); // Timer 1 Channel 2 Capture/Compare Value Low
+SFRX(X_T1CC2H,   0xDFDF); // Timer 1 Channel 2 Capture/Compare Value High
+SFRX(X_RFST,     0xDFE1); // RF CSMA-CA / Strobe Processor
+SFRX(X_T1CNTL,   0xDFE2); // Timer 1 Counter Low
+SFRX(X_T1CNTH,   0xDFE3); // Timer 1 Counter High
+SFRX(X_T1CTL,    0xDFE4); // Timer 1 Control and Status
+SFRX(X_T1CCTL0,  0xDFE5); // Timer 1 Channel 0 Capture/Compare Control
+SFRX(X_T1CCTL1,  0xDFE6); // Timer 1 Channel 1 Capture/Compare Control
+SFRX(X_T1CCTL2,  0xDFE7); // Timer 1 Channel 2 Capture/Compare Control
+SFRX(X_RFIF,     0xDFE9); // RF Interrupt Flags
+SFRX(X_T4CNT,    0xDFEA); // Timer 4 Counter
+SFRX(X_T4CTL,    0xDFEB); // Timer 4 Control
+SFRX(X_T4CCTL0,  0xDFEC); // Timer 4 Channel 0 Capture/Compare Control
+SFRX(X_T4CC0,    0xDFED); // Timer 4 Channel 0 Capture/Compare Value
+SFRX(X_T4CCTL1,  0xDFEE); // Timer 4 Channel 1 Capture/Compare Control
+SFRX(X_T4CC1,    0xDFEF); // Timer 4 Channel 1 Capture/Compare Value
+SFRX(X_PERCFG,   0xDFF1); // Peripheral Control
+SFRX(X_ADCCFG,   0xDFF2); // ADC Input Configuration
+SFRX(X_P0SEL,    0xDFF3); // Port 0 Function Select
+SFRX(X_P1SEL,    0xDFF4); // Port 1 Function Select
+SFRX(X_P2SEL,    0xDFF5); // Port 2 Function Select
+SFRX(X_P1INP,    0xDFF6); // Port 1 Input Mode
+SFRX(X_P2INP,    0xDFF7); // Port 2 Input Mode
+SFRX(X_U1CSR,    0xDFF8); // USART 1 Control and Status
+SFRX(X_U1DBUF,   0xDFF9); // USART 1 Receive/Transmit Data Buffer
+SFRX(X_U1BAUD,   0xDFFA); // USART 1 Baud Rate Control
+SFRX(X_U1UCR,    0xDFFB); // USART 1 UART Control
+SFRX(X_U1GCR,    0xDFFC); // USART 1 Generic Control
+SFRX(X_P0DIR,    0xDFFD); // Port 0 Direction
+SFRX(X_P1DIR,    0xDFFE); // Port 1 Direction
+SFRX(X_P2DIR,    0xDFFF); // Port 2 Direction
+
+#endif //REG_CC2430_H