搜索
bottom↓
回复: 3

串口串口,遇到一个离奇的问题。发送一次变成不停发送,求解惑

[复制链接]

出0入0汤圆

发表于 2010-9-10 20:20:10 | 显示全部楼层 |阅读模式
代码如下:
#include <msp430x14x.h>
//==============================================================================
#define  INT8U    unsigned char
#define  INT16U   unsigned int
#define  uclong   unsigned long
//==================================&Ouml;÷&sup3;&ouml;&acute;&Oacute;&Egrave;&euml;====================================
#define  MOSI_0     P2OUT &=~BIT0        
#define  MOSI_1     P2OUT |= BIT0  
//===================================&Ouml;÷&Egrave;&euml;&acute;&Oacute;&sup3;&ouml;===================================
#define  MISO_0     P2OUT &=~BIT1      
#define  MISO_1     P2OUT |= BIT1              
//===================================SPI&Ecirc;±&Ouml;&Oacute;&para;&Euml;&iquest;&Uacute;================================
#define  SCK_0      P2OUT &=~BIT2        
#define  SCK_1      P2OUT |= BIT2        
//=========================PAC&sup1;&brvbar;&Acirc;&Ecirc;·&Aring;&acute;ó&iquest;&Oslash;&Ouml;&AElig;&para;&Euml;====================================
#define  PAC_0      P2OUT &=~BIT3
#define  PAC_1      P2OUT |= BIT3
//=========================GDO2×&acute;&Igrave;&not;=============================================
#define  GDO2_0     P2OUT &=~BIT4
#define  GDO2_1     P2OUT |= BIT4
//=========================SPI&Ecirc;&sup1;&Auml;&Uuml;&para;&Euml;&iquest;&Uacute;==========================================
#define  CSN_0      P2OUT &=~BIT5
#define  CSN_1      P2OUT |= BIT5
//==========================GDO0×&acute;&Igrave;&not;============================================
#define  GDO0_0     P2OUT &=~BIT6   
#define  GDO0_1     P2OUT |= BIT6
//==============================================================================
#define  LED1_0     P6OUT &=~BIT1          //&Ecirc;&auml;&sup3;&ouml;0
#define  LED1_1     P6OUT |= BIT1          //&Ecirc;&auml;&sup3;&ouml;1
#define  LED2_0     P6OUT &=~BIT2          //&Ecirc;&auml;&sup3;&ouml;0
#define  LED2_1     P6OUT |= BIT2          //&Ecirc;&auml;&sup3;&ouml;1
//===================================LCD========================================
#define DataDir     P4DIR              
#define DataPort    P4OUT       
//==============================================================================
#define Busy            0x80
//==============================================================================
#define CtrlDir     P6DIR
#define CLR_RS P6OUT&=~BIT6;    //RS = P6.6       
#define SET_RS P6OUT|=BIT6;       
//==============================================================================
#define CLR_RW P6OUT&=~BIT5;        //RW = P6.5
#define SET_RW P6OUT|=BIT5;       
//==============================================================================
#define CLR_EN P6OUT&=~BIT4;        //EN = P6.4
#define SET_EN P6OUT|=BIT4;       
//==============================================================================
#define         WRITE_BURST         0x40                //&Aacute;&not;&ETH;&oslash;&ETH;&acute;&Egrave;&euml;
#define         READ_SINGLE         0x80                //&para;&Aacute;
#define         READ_BURST          0xC0                //&Aacute;&not;&ETH;&oslash;&para;&Aacute;
#define         BYTES_IN_RXFIFO     0x7F                  //&frac12;&Oacute;&Ecirc;&Otilde;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&micro;&Auml;&Oacute;&ETH;&ETH;§×&Ouml;&frac12;&Uacute;&Ecirc;&yacute;
#define         CRC_OK              0x80                 //CRC&ETH;&pound;&Ntilde;é&Iacute;¨&sup1;&yacute;&Icirc;&raquo;±ê&Ouml;&frac34;
//*****************************************************************************************
// CC1100-CC1101  &Euml;ù&Oacute;&ETH;&Iuml;à&sup1;&Oslash;&frac14;&Auml;&acute;&aelig;&AElig;÷&Oacute;&sup3;&Eacute;&auml;
#define CCxxx0_IOCFG2       0x00        // GDO2 output pin configuration
#define CCxxx0_IOCFG1       0x01        // GDO1 output pin configuration
#define CCxxx0_IOCFG0       0x02        // GDO0 output pin configuration
#define CCxxx0_FIFOTHR      0x03        // RX FIFO and TX FIFO thresholds
#define CCxxx0_SYNC1        0x04        // Sync word, high INT8U
#define CCxxx0_SYNC0        0x05        // Sync word, low INT8U
#define CCxxx0_PKTLEN       0x06        // Packet length
#define CCxxx0_PKTCTRL1     0x07        // Packet automation control
#define CCxxx0_PKTCTRL0     0x08        // Packet automation control
#define CCxxx0_ADDR         0x09        // Device address
#define CCxxx0_CHANNR       0x0A        // Channel number
#define CCxxx0_FSCTRL1      0x0B        // Frequency synthesizer control
#define CCxxx0_FSCTRL0      0x0C        // Frequency synthesizer control
#define CCxxx0_FREQ2        0x0D        // Frequency control word, high INT8U
#define CCxxx0_FREQ1        0x0E        // Frequency control word, middle INT8U
#define CCxxx0_FREQ0        0x0F        // Frequency control word, low INT8U
#define CCxxx0_MDMCFG4      0x10        // Modem configuration
#define CCxxx0_MDMCFG3      0x11        // Modem configuration
#define CCxxx0_MDMCFG2      0x12        // Modem configuration
#define CCxxx0_MDMCFG1      0x13        // Modem configuration
#define CCxxx0_MDMCFG0      0x14        // Modem configuration
#define CCxxx0_DEVIATN      0x15        // Modem deviation setting
#define CCxxx0_MCSM2        0x16        // Main Radio Control State Machine configuration
#define CCxxx0_MCSM1        0x17        // Main Radio Control State Machine configuration
#define CCxxx0_MCSM0        0x18        // Main Radio Control State Machine configuration
#define CCxxx0_FOCCFG       0x19        // Frequency Offset Compensation configuration
#define CCxxx0_BSCFG        0x1A        // Bit Synchronization configuration
#define CCxxx0_AGCCTRL2     0x1B        // AGC control
#define CCxxx0_AGCCTRL1     0x1C        // AGC control
#define CCxxx0_AGCCTRL0     0x1D        // AGC control
#define CCxxx0_WOREVT1      0x1E        // High INT8U Event 0 timeout
#define CCxxx0_WOREVT0      0x1F        // Low INT8U Event 0 timeout
#define CCxxx0_WORCTRL      0x20        // Wake On Radio control
#define CCxxx0_FREND1       0x21        // Front end RX configuration
#define CCxxx0_FREND0       0x22        // Front end TX configuration
#define CCxxx0_FSCAL3       0x23        // Frequency synthesizer calibration
#define CCxxx0_FSCAL2       0x24        // Frequency synthesizer calibration
#define CCxxx0_FSCAL1       0x25        // Frequency synthesizer calibration
#define CCxxx0_FSCAL0       0x26        // Frequency synthesizer calibration
#define CCxxx0_RCCTRL1      0x27        // RC oscillator configuration
#define CCxxx0_RCCTRL0      0x28        // RC oscillator configuration
#define CCxxx0_FSTEST       0x29        // Frequency synthesizer calibration control
#define CCxxx0_PTEST        0x2A        // Production test
#define CCxxx0_AGCTEST      0x2B        // AGC test
#define CCxxx0_TEST2        0x2C        // Various test settings
#define CCxxx0_TEST1        0x2D        // Various test settings
#define CCxxx0_TEST0        0x2E        // Various test settings
// Strobe commands
#define CCxxx0_SRES         0x30        // Reset chip.
#define CCxxx0_SFSTXON      0x31        // Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1).
                                        // If in RX/TX: Go to a wait state where only the synthesizer is
                                        // running (for quick RX / TX turnaround).
#define CCxxx0_SXOFF        0x32        // Turn off crystal oscillator.
#define CCxxx0_SCAL         0x33        // Calibrate frequency synthesizer and turn it off
                                        // (enables quick start).
#define CCxxx0_SRX          0x34        // Enable RX. Perform calibration first if coming from IDLE and
                                        // MCSM0.FS_AUTOCAL=1.
#define CCxxx0_STX          0x35        // In IDLE state: Enable TX. Perform calibration first if
                                        // MCSM0.FS_AUTOCAL=1. If in RX state and CCA is enabled:
                                        // Only go to TX if channel is clear.
#define CCxxx0_SIDLE        0x36        // Exit RX / TX, turn off frequency synthesizer and exit
                                        // Wake-On-Radio mode if applicable.
#define CCxxx0_SAFC         0x37        // Perform AFC adjustment of the frequency synthesizer
#define CCxxx0_SWOR         0x38        // Start automatic RX polling sequence (Wake-on-Radio)
#define CCxxx0_SPWD         0x39        // Enter power down mode when CSn goes high.
#define CCxxx0_SFRX         0x3A        // Flush the RX FIFO buffer.
#define CCxxx0_SFTX         0x3B        // Flush the TX FIFO buffer.
#define CCxxx0_SWORRST      0x3C        // Reset real time clock.
#define CCxxx0_SNOP         0x3D        // No operation. May be used to pad strobe commands to two
                                        // INT8Us for simpler software.
#define CCxxx0_PARTNUM      0x30
#define CCxxx0_VERSION      0x31
#define CCxxx0_FREQEST      0x32
#define CCxxx0_LQI          0x33
#define CCxxx0_RSSI         0x34
#define CCxxx0_MARCSTATE    0x35
#define CCxxx0_WORTIME1     0x36
#define CCxxx0_WORTIME0     0x37
#define CCxxx0_PKTSTATUS    0x38
#define CCxxx0_VCO_VC_DAC   0x39
#define CCxxx0_TXBYTES      0x3A
#define CCxxx0_RXBYTES      0x3B

#define CCxxx0_PATABLE      0x3E
#define CCxxx0_TXFIFO       0x3F
#define CCxxx0_RXFIFO       0x3F
//******************************************************************************
//*****&cedil;ü&para;à&sup1;&brvbar;&Acirc;&Ecirc;&sup2;&Icirc;&Ecirc;&yacute;&Eacute;è&Ouml;&Atilde;&iquest;&Eacute;&Iuml;ê&Iuml;&cedil;&sup2;&Icirc;&iquest;&frac14;DATACC1100&Oacute;&cent;&Icirc;&Auml;&Icirc;&Auml;&micro;&micro;&Ouml;&ETH;&micro;&Uacute;48-49&Ograve;&sup3;&micro;&Auml;&sup2;&Icirc;&Ecirc;&yacute;±í**********
//INT8U PaTabel[8] = {0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04};  //-30dBm   &sup1;&brvbar;&Acirc;&Ecirc;×&icirc;&ETH;&iexcl;
//INT8U PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60};  //0dBm
INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};   //10dBm     &sup1;&brvbar;&Acirc;&Ecirc;×&icirc;&acute;ó
//=======================&para;¨&Ograve;&aring;RF1100-1101&frac14;&Auml;&acute;&aelig;&AElig;÷&frac12;á&sup1;&sup1;&Igrave;&aring;&Ecirc;&yacute;×é =================================
typedef struct S_RF_SETTINGS
{
    INT8U FSCTRL2;
    INT8U FSCTRL1;   // Frequency synthesizer control.
    INT8U FSCTRL0;   // Frequency synthesizer control.
    INT8U FREQ2;     // Frequency control word, high INT8U.
    INT8U FREQ1;     // Frequency control word, middle INT8U.
    INT8U FREQ0;     // Frequency control word, low INT8U.
    INT8U MDMCFG4;   // Modem configuration.
    INT8U MDMCFG3;   // Modem configuration.
    INT8U MDMCFG2;   // Modem configuration.
    INT8U MDMCFG1;   // Modem configuration.
    INT8U MDMCFG0;   // Modem configuration.
    INT8U CHANNR;    // Channel number.
    INT8U DEVIATN;   // Modem deviation setting (when FSK modulation is enabled).
    INT8U FREND1;    // Front end RX configuration.
    INT8U FREND0;    // Front end RX configuration.
    INT8U MCSM0;     // Main Radio Control State Machine configuration.
    INT8U FOCCFG;    // Frequency Offset Compensation Configuration.
    INT8U BSCFG;     // Bit synchronization Configuration.
    INT8U AGCCTRL2;  // AGC control.
    INT8U AGCCTRL1;  // AGC control.
    INT8U AGCCTRL0;  // AGC control.
    INT8U FSCAL3;    // Frequency synthesizer calibration.
    INT8U FSCAL2;    // Frequency synthesizer calibration.
    INT8U FSCAL1;    // Frequency synthesizer calibration.
    INT8U FSCAL0;    // Frequency synthesizer calibration.
    INT8U FSTEST;    // Frequency synthesizer calibration control
    INT8U TEST2;     // Various test settings.
    INT8U TEST1;     // Various test settings.
    INT8U TEST0;     // Various test settings.
    INT8U IOCFG2;    // GDO2 output pin configuration
    INT8U IOCFG0;    // GDO0 output pin configuration
    INT8U PKTCTRL1;  // Packet automation control.
    INT8U PKTCTRL0;  // Packet automation control.
    INT8U ADDR;      // Device address.
    INT8U PKTLEN;    // Packet length.
} RF_SETTINGS;
//==========================CC1100-1101&frac14;&Auml;&acute;&aelig;&AElig;÷&Aring;&auml;&Ouml;&Atilde;===============================
const RF_SETTINGS rfSettings =
{
    0x00,
    0x08,   // FSCTRL1   Frequency synthesizer control.
    0x00,   // FSCTRL0   Frequency synthesizer control.
    0x10,   // FREQ2     Frequency control word, high byte.
    0xA7,   // FREQ1     Frequency control word, middle byte.
    0x62,   // FREQ0     Frequency control word, low byte.
    0x5B,   // MDMCFG4   Modem configuration.
    0xF8,   // MDMCFG3   Modem configuration.
    0x03,   // MDMCFG2   Modem configuration.
    0x22,   // MDMCFG1   Modem configuration.
    0xF8,   // MDMCFG0   Modem configuration.

    0x00,   // CHANNR    Channel number.
    0x47,   // DEVIATN   Modem deviation setting (when FSK modulation is enabled).
    0xB6,   // FREND1    Front end RX configuration.
    0x10,   // FREND0    Front end RX configuration.
    0x18,   // MCSM0     Main Radio Control State Machine configuration.
    0x1D,   // FOCCFG    Frequency Offset Compensation Configuration.
    0x1C,   // BSCFG     Bit synchronization Configuration.
    0xC7,   // AGCCTRL2  AGC control.
    0x00,   // AGCCTRL1  AGC control.
    0xB2,   // AGCCTRL0  AGC control.

    0xEA,   // FSCAL3    Frequency synthesizer calibration.
    0x2A,   // FSCAL2    Frequency synthesizer calibration.
    0x00,   // FSCAL1    Frequency synthesizer calibration.
    0x11,   // FSCAL0    Frequency synthesizer calibration.
    0x59,   // FSTEST    Frequency synthesizer calibration.
    0x81,   // TEST2     Various test settings.
    0x35,   // TEST1     Various test settings.
    0x09,   // TEST0     Various test settings.
    0x0B,   // IOCFG2    GDO2 output pin configuration.
    0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.

    0x04,   // PKTCTRL1  Packet automation control.
    0x05,   // PKTCTRL0  Packet automation control.
    0x00,   // ADDR      Device address.
    0xff    // PKTLEN    Packet length.×&icirc;&acute;ó
};
//******************************************************************************
//&Iuml;&micro;&Iacute;&sup3;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
//******************************************************************************
void InitSys()
{
   unsigned int iq0;
   _DINT();
   BCSCTL1 &=~XT2OFF;
   do
   {
      IFG1 &= ~OFIFG;                         // &Ccedil;&aring;&sup3;&yacute;&Otilde;&ntilde;&micro;&acute;&AElig;÷&Ecirc;§&ETH;§±ê&Ouml;&frac34;
  for (iq0 = 0xFF; iq0 > 0; iq0--);        // &Ntilde;&Oacute;&Ecirc;±&pound;&not;&micro;&Egrave;&acute;&yacute;XT2&AElig;&eth;&Otilde;&ntilde;
   }
   while ((IFG1 & OFIFG) != 0);                // &Aring;&ETH;&para;&Iuml;XT2&Ecirc;&Ccedil;·&ntilde;&AElig;&eth;&Otilde;&ntilde;               
   BCSCTL2 =SELM1+SELS;                      //MCLK,SMCLK&Ecirc;±&Ouml;&Oacute;&Icirc;&ordf;XT2
}
//===========================LED&para;&Euml;&iquest;&Uacute;&Eacute;è&Ouml;&Atilde;==========================================
void LED_IO_set(void)
{   
        P6DIR |= 0x06;   P6SEL&=0xf9;        
}
//==============================================================================
void LCD_IO_set()
  {
    CtrlDir |= 0x70;                 //&iquest;&Oslash;&Ouml;&AElig;&Iuml;&szlig;&para;&Euml;&iquest;&Uacute;&Eacute;è&Icirc;&ordf;&Ecirc;&auml;&sup3;&ouml;×&acute;&Igrave;&not;
    DataDir  = 0xFF;                 //&Ecirc;&yacute;&frac34;&Yacute;&para;&Euml;&iquest;&Uacute;&Eacute;è&Icirc;&ordf;&Ecirc;&auml;&sup3;&ouml;×&acute;&Igrave;&not;
    P4SEL=0x00;                    //&Eacute;è&Ouml;&Atilde;P4&Icirc;&ordf;&Ograve;&raquo;°&atilde;&Ecirc;&yacute;×&Ouml;IO&iquest;&Uacute;   
    P6SEL&=0x8f;                  //&Eacute;è&Ouml;&Atilde;P6&Icirc;&ordf;&Ograve;&raquo;°&atilde;&Ecirc;&yacute;×&Ouml;IO&iquest;&Uacute;  
  }
//******************************SPI×&acute;&Igrave;&not;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;***********************************
void SpiInit(void)
{
    P2DIR|= 0x2d;   P2SEL&=0xad;    P2SEL&=0x80;  
}                                                                                                                                                                  
//==============================================================================
void RF1100_IO_set(void)
{
     SpiInit();
}
//==============================================================================
//******************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;delay(unsigned int s)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&Ecirc;±&frac14;&auml;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;&AElig;&Otilde;&Iacute;¨&Iacute;&cent;&Ecirc;±,&Auml;&Uacute;&sup2;&iquest;&Oacute;&Atilde;
//******************************************************************************               
void delay(unsigned int s)
{
        unsigned int i;
        for(i=0; i<s; i++);
        for(i=0; i<s; i++);
}
//******************************************************************************
void halWait(INT16U timeout)
{
char i;
    do {
       for(i=0; i<20; i++);
    } while (--timeout);
}
//******************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;SpisendByte(INT8U dat)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;·&cent;&Euml;&Iacute;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI·&cent;&Euml;&Iacute;&Ograve;&raquo;&cedil;&ouml;×&Ouml;&frac12;&Uacute;
//******************************************************************************
INT8U SpiTxRxByte(INT8U dat)
{
//----------------------&Ograve;&Ocirc;&Iuml;&Acirc;&Ecirc;&Ccedil;&Auml;&pound;&Auml;&acirc;SPI&Ecirc;±&ETH;ò·&frac12;&Ecirc;&frac12;-----------------------------------
        INT8U i,temp;
        temp = 0;       
        SCK_0 ;
        for(i=0; i<8; i++)
        {
                if(dat & 0x80)
                {
                   MOSI_1;
                }
                else
                {
                   MOSI_0;
                }
                dat <<= 1;
                SCK_1;
                temp <<= 1;
                //a=Read_CC1100_MISO;  //&para;&Aacute;&Egrave;&iexcl;MISO×&acute;&Igrave;&not;
                if(P2IN& 0x02)temp++;
                SCK_0 ;
        }
        return temp;
}
//*******************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void RESET_CC1100(void)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&Icirc;&THORN;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;&cedil;&acute;&Icirc;&raquo;CC1100
//*****************************************************************************************
void RESET_CC1100(void)
{
        CSN_0 ;
        while (P2IN& 0x02);
    SpiTxRxByte(CCxxx0_SRES);                 //&ETH;&acute;&Egrave;&euml;&cedil;&acute;&Icirc;&raquo;&Atilde;ü&Aacute;&icirc;
        while (P2IN& 0x02);
    CSN_1;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void POWER_UP_RESET_CC1100(void)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&Icirc;&THORN;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;&Eacute;&Iuml;&micro;&ccedil;&cedil;&acute;&Icirc;&raquo;CC1100
//*****************************************************************************************
void POWER_UP_RESET_CC1100(void)
{
        CSN_1;
        halWait(1);
        CSN_0 ;
        halWait(1);
        CSN_1;
        halWait(41);
        RESET_CC1100();                   //&cedil;&acute;&Icirc;&raquo;CC1100
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void halSpiWriteReg(INT8U addr, INT8U value)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&micro;&Oslash;&Ouml;·&ordm;&Iacute;&Aring;&auml;&Ouml;&Atilde;×&Ouml;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI&ETH;&acute;&frac14;&Auml;&acute;&aelig;&AElig;÷
//*****************************************************************************************
void halSpiWriteReg(INT8U addr, INT8U value)
{
    CSN_0;
    while (P3IN& 0x04);
    SpiTxRxByte(addr);                //&ETH;&acute;&micro;&Oslash;&Ouml;·
    SpiTxRxByte(value);                //&ETH;&acute;&Egrave;&euml;&Aring;&auml;&Ouml;&Atilde;
    CSN_1;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&micro;&Oslash;&Ouml;·&pound;&not;&ETH;&acute;&Egrave;&euml;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&pound;&not;&ETH;&acute;&Egrave;&euml;&cedil;&ouml;&Ecirc;&yacute;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI&Aacute;&not;&ETH;&oslash;&ETH;&acute;&Aring;&auml;&Ouml;&Atilde;&frac14;&Auml;&acute;&aelig;&AElig;÷
//*****************************************************************************************
void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
{
    INT8U i, temp;
        temp = addr | WRITE_BURST;
    CSN_0;
    while (P2IN& 0x02);
    SpiTxRxByte(temp);
    for (i = 0; i < count; i++)
        {
        SpiTxRxByte(buffer);
    }
    CSN_1;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void halSpiStrobe(INT8U strobe)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&Atilde;ü&Aacute;&icirc;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI&ETH;&acute;&Atilde;ü&Aacute;&icirc;
//*****************************************************************************************
void halSpiStrobe(INT8U strobe)
{
    CSN_0;
    while (P2IN& 0x02);
    SpiTxRxByte(strobe);                //&ETH;&acute;&Egrave;&euml;&Atilde;ü&Aacute;&icirc;
    CSN_1;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;INT8U halSpiReadReg(INT8U addr)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&micro;&Oslash;&Ouml;·
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&cedil;&Atilde;&frac14;&Auml;&acute;&aelig;&AElig;÷&micro;&Auml;&Aring;&auml;&Ouml;&Atilde;×&Ouml;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI&para;&Aacute;&frac14;&Auml;&acute;&aelig;&AElig;÷
//*****************************************************************************************
INT8U halSpiReadReg(INT8U addr)
{
        INT8U temp, value;
    temp = addr|READ_SINGLE;//&para;&Aacute;&frac14;&Auml;&acute;&aelig;&AElig;÷&Atilde;ü&Aacute;&icirc;
        CSN_0;
        while (P2IN& 0x02);
        SpiTxRxByte(temp);
        value = SpiTxRxByte(0);
        CSN_1;
        return value;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&micro;&Oslash;&Ouml;·&pound;&not;&para;&Aacute;&sup3;&ouml;&Ecirc;&yacute;&frac34;&Yacute;&ordm;ó&Ocirc;&Yacute;&acute;&aelig;&micro;&Auml;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&pound;&not;&para;&Aacute;&sup3;&ouml;&Aring;&auml;&Ouml;&Atilde;&cedil;&ouml;&Ecirc;&yacute;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI&Aacute;&not;&ETH;&oslash;&ETH;&acute;&Aring;&auml;&Ouml;&Atilde;&frac14;&Auml;&acute;&aelig;&AElig;÷
//*****************************************************************************************
void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
{
    INT8U i,temp;
        temp = addr | READ_BURST;                //&ETH;&acute;&Egrave;&euml;&Ograve;&ordf;&para;&Aacute;&micro;&Auml;&Aring;&auml;&Ouml;&Atilde;&frac14;&Auml;&acute;&aelig;&AElig;÷&micro;&Oslash;&Ouml;·&ordm;&Iacute;&para;&Aacute;&Atilde;ü&Aacute;&icirc;
    CSN_0;
    while (P2IN& 0x02);
        SpiTxRxByte(temp);   
    for (i = 0; i < count; i++)
        {
        buffer = SpiTxRxByte(0);
    }
    CSN_1;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;INT8U halSpiReadReg(INT8U addr)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&micro;&Oslash;&Ouml;·
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&cedil;&Atilde;×&acute;&Igrave;&not;&frac14;&Auml;&acute;&aelig;&AElig;÷&micro;±&Ccedil;°&Ouml;&micro;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;SPI&para;&Aacute;×&acute;&Igrave;&not;&frac14;&Auml;&acute;&aelig;&AElig;÷
//*****************************************************************************************
INT8U halSpiReadStatus(INT8U addr)
{
    INT8U value,temp;
        temp = addr | READ_BURST;                //&ETH;&acute;&Egrave;&euml;&Ograve;&ordf;&para;&Aacute;&micro;&Auml;×&acute;&Igrave;&not;&frac14;&Auml;&acute;&aelig;&AElig;÷&micro;&Auml;&micro;&Oslash;&Ouml;·&Iacute;&not;&Ecirc;±&ETH;&acute;&Egrave;&euml;&para;&Aacute;&Atilde;ü&Aacute;&icirc;
    CSN_0;
    while (P2IN& 0x02);
    SpiTxRxByte(temp);
        value = SpiTxRxByte(0);
        CSN_1;
        return value;
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;&Icirc;&THORN;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;&Aring;&auml;&Ouml;&Atilde;CC1100&micro;&Auml;&frac14;&Auml;&acute;&aelig;&AElig;÷
//*****************************************************************************************
void halRfWriteRfSettings(void)
{
    halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//×&Ocirc;&Ograve;&Ntilde;&frac14;&Oacute;&micro;&Auml;
    // Write register settings
    halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
    halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
    halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
    halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
    halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
    halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
    halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
    halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
    halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
    halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
    halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
    halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
    halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
    halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
    halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
    halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
    halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
    halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
    halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
    halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
    halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
    halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
    halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
    halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
    halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
    halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
    halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
    halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
    halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
    halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);   
    halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
    halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
    halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
    halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
}
//*****************************************************************************************
//&ordm;&macr;&Ecirc;&yacute;&Atilde;&ucirc;&pound;&ordm;void halRfSendPacket(INT8U *txBuffer, INT8U size)
//&Ecirc;&auml;&Egrave;&euml;&pound;&ordm;·&cent;&Euml;&Iacute;&micro;&Auml;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&pound;&not;·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;&cedil;&ouml;&Ecirc;&yacute;
//&Ecirc;&auml;&sup3;&ouml;&pound;&ordm;&Icirc;&THORN;
//&sup1;&brvbar;&Auml;&Uuml;&Atilde;è&Ecirc;&ouml;&pound;&ordm;CC1100·&cent;&Euml;&Iacute;&Ograve;&raquo;×é&Ecirc;&yacute;&frac34;&Yacute;
//*****************************************************************************************

void halRfSendPacket(INT8U *txBuffer, INT8U size)
{
    halSpiWriteReg(CCxxx0_TXFIFO, size);
    halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);        //&ETH;&acute;&Egrave;&euml;&Ograve;&ordf;·&cent;&Euml;&Iacute;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;
    halSpiStrobe(CCxxx0_STX);                //&frac12;&oslash;&Egrave;&euml;·&cent;&Euml;&Iacute;&Auml;&pound;&Ecirc;&frac12;·&cent;&Euml;&Iacute;&Ecirc;&yacute;&frac34;&Yacute;
    // Wait for GDO0 to be set -> sync transmitted
    while (!(P2IN & 0x40));
    // Wait for GDO0 to be cleared -> end of packet
    while (P2IN & 0x40);
        halSpiStrobe(CCxxx0_SFTX);
}
//------------------------------------------------------------------------------
void setRxMode(void)
{
    halSpiStrobe(CCxxx0_SRX);                //&frac12;&oslash;&Egrave;&euml;&frac12;&Oacute;&Ecirc;&Otilde;×&acute;&Igrave;&not;
}
//------------------------------------------------------------------------------
INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length)
{
    INT8U status[2];
    INT8U packetLength;
        INT8U i=(*length)*4;  // &frac34;&szlig;&Igrave;&aring;&para;à&Eacute;&Ugrave;&Ograve;&ordf;&cedil;ù&frac34;&Yacute;datarate&ordm;&Iacute;length&Agrave;&acute;&frac34;&ouml;&para;¨
    halSpiStrobe(CCxxx0_SRX);                //&frac12;&oslash;&Egrave;&euml;&frac12;&Oacute;&Ecirc;&Otilde;×&acute;&Igrave;&not;
        delay(2);
        while (P2IN & 0x40)
        {
                delay(2);
                --i;
                if(i<1)
                   return 0;             
        }         
    if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //&Egrave;&ccedil;&sup1;&ucirc;&frac12;&Oacute;&micro;&Auml;×&Ouml;&frac12;&Uacute;&Ecirc;&yacute;&sup2;&raquo;&Icirc;&ordf;0
        {
        packetLength = halSpiReadReg(CCxxx0_RXFIFO);//&para;&Aacute;&sup3;&ouml;&micro;&Uacute;&Ograve;&raquo;&cedil;&ouml;×&Ouml;&frac12;&Uacute;&pound;&not;&acute;&Euml;×&Ouml;&frac12;&Uacute;&Icirc;&ordf;&cedil;&Atilde;&Ouml;&iexcl;&Ecirc;&yacute;&frac34;&Yacute;&sup3;¤&para;&Egrave;
        if (packetLength <= *length)                 //&Egrave;&ccedil;&sup1;&ucirc;&Euml;ù&Ograve;&ordf;&micro;&Auml;&Oacute;&ETH;&ETH;§&Ecirc;&yacute;&frac34;&Yacute;&sup3;¤&para;&Egrave;&ETH;&iexcl;&Oacute;&Uacute;&micro;&Egrave;&Oacute;&Uacute;&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;°ü&micro;&Auml;&sup3;¤&para;&Egrave;
                {
            halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //&para;&Aacute;&sup3;&ouml;&Euml;ù&Oacute;&ETH;&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;
            *length = packetLength;                                //°&Ntilde;&frac12;&Oacute;&Ecirc;&Otilde;&Ecirc;&yacute;&frac34;&Yacute;&sup3;¤&para;&Egrave;&micro;&Auml;&ETH;&THORN;&cedil;&Auml;&Icirc;&ordf;&micro;±&Ccedil;°&Ecirc;&yacute;&frac34;&Yacute;&micro;&Auml;&sup3;¤&para;&Egrave;
            // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
            halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);         //&para;&Aacute;&sup3;&ouml;CRC&ETH;&pound;&Ntilde;é&Icirc;&raquo;
                        halSpiStrobe(CCxxx0_SFRX);                //&Ccedil;&aring;&Iuml;&acute;&frac12;&Oacute;&Ecirc;&Otilde;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;
            return (status[1] & CRC_OK);                        //&Egrave;&ccedil;&sup1;&ucirc;&ETH;&pound;&Ntilde;é&sup3;&Eacute;&sup1;&brvbar;·&micro;&raquo;&Oslash;&frac12;&Oacute;&Ecirc;&Otilde;&sup3;&Eacute;&sup1;&brvbar;
        }
                 else
                {
            *length = packetLength;
            halSpiStrobe(CCxxx0_SFRX);                //&Ccedil;&aring;&Iuml;&acute;&frac12;&Oacute;&Ecirc;&Otilde;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;
            return 0;
        }
    }
        else
        return 0;
}
//======================?????==============================================
void init_uart0(void)
  {
    P3SEL |= 0x30;    // &Ntilde;&iexcl;&Ocirc;&ntilde;P3.4&ordm;&Iacute;P3.5×&ouml;UART&Iacute;¨&ETH;&Aring;&para;&Euml;&iquest;&Uacute;
    ME1 |= UTXE0 + URXE0;                     // &Ecirc;&sup1;&Auml;&Uuml;USART0&micro;&Auml;·&cent;&Euml;&Iacute;&ordm;&Iacute;&frac12;&Oacute;&Ecirc;&Uuml;
    UCTL0 |= CHAR;                            // &Ntilde;&iexcl;&Ocirc;&ntilde;8&Icirc;&raquo;×&Ouml;·&ucirc;
    UTCTL0 |= SSEL0;                          // UCLK = ACLK
    UBR00 = 0x03;                             // &sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;9600
    UBR10 = 0x00;                             //
    UMCTL0 = 0x4A;                            // Modulation
    UCTL0 &= ~SWRST;                          // &sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;UART×&acute;&Igrave;&not;&raquo;ú
  }
//==============================================================================
void   R_S_Byte(char R_Byte)
{
        
        while (!(IFG1 & UTXIFG0));             //&micro;&Egrave;&acute;&yacute;&Ograve;&Ocirc;&Ccedil;°&micro;&Auml;×&Ouml;·&ucirc;·&cent;&Euml;&Iacute;&Iacute;ê±&Iuml;
        TXBUF0 = R_Byte;                       //&frac12;&laquo;&Ecirc;&Otilde;&micro;&frac12;&micro;&Auml;×&Ouml;·&ucirc;·&cent;&Euml;&Iacute;&sup3;&ouml;&Egrave;&yen;

}
//========================&Ntilde;&Oacute;&Ecirc;±&Ocirc;&frac14;5ms=============================================
void Delay5ms(void)
{
    INT16U i=40000;
    while (i != 0)
    {
        i--;
    }
}
//========================&micro;&Egrave;&acute;&yacute;1602&Ograve;&ordm;&frac34;§&Iacute;ê&sup3;&Eacute;&Auml;&Uacute;&sup2;&iquest;&sup2;&Ugrave;×÷==============================
void WaitForEnable(void)
{
    P4DIR &= 0x00;  //&frac12;&laquo;P4&iquest;&Uacute;&Ccedil;&ETH;&raquo;&raquo;&Icirc;&ordf;&Ecirc;&auml;&Egrave;&euml;×&acute;&Igrave;&not;
    CLR_RS;
    SET_RW;
    _NOP();
    SET_EN;
    _NOP();
    _NOP();
    while((P4IN & Busy)!=0);  //&frac14;ì&sup2;&acirc;&Atilde;&brvbar;±ê&Ouml;&frac34;
    CLR_EN;
    P4DIR |= 0xFF;  //&frac12;&laquo;P4&iquest;&Uacute;&Ccedil;&ETH;&raquo;&raquo;&Icirc;&ordf;&Ecirc;&auml;&sup3;&ouml;×&acute;&Igrave;&not;
}                         
//==========================&Iuml;ò&Ograve;&ordm;&frac34;§&Auml;&pound;&iquest;é&ETH;&acute;&Egrave;&euml;&Atilde;ü&Aacute;&icirc;==================================
//=================cmd--&Atilde;ü&Aacute;&icirc;&pound;&not;chk--&Ecirc;&Ccedil;·&ntilde;&Aring;&ETH;&Atilde;&brvbar;&micro;&Auml;±ê&Ouml;&frac34;&pound;&not;1&pound;&ordm;&Aring;&ETH;&Atilde;&brvbar;&pound;&not;0&pound;&ordm;&sup2;&raquo;&Aring;&ETH;=============
void LcdWriteCommand(char cmd,char chk)
{

    if (chk) WaitForEnable();   // &frac14;ì&sup2;&acirc;&Atilde;&brvbar;&ETH;&Aring;&ordm;&Aring;?
   
    CLR_RS;       
    CLR_RW;
    _NOP();

    DataPort = cmd;             //&frac12;&laquo;&Atilde;ü&Aacute;&icirc;×&Ouml;&ETH;&acute;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;&para;&Euml;&iquest;&Uacute;
    _NOP();                                       
   
    SET_EN;                     //&sup2;ú&Eacute;ú&Ecirc;&sup1;&Auml;&Uuml;&Acirc;&ouml;&sup3;&aring;&ETH;&Aring;&ordm;&Aring;
    _NOP();
    _NOP();
    CLR_EN;                       
}
//=====================&Iuml;ò&Ograve;&ordm;&frac34;§&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Auml;&micro;±&Ccedil;°&micro;&Oslash;&Ouml;·&ETH;&acute;&Egrave;&euml;&Iuml;&Ocirc;&Ecirc;&frac34;&Ecirc;&yacute;&frac34;&Yacute;=========================
void LcdWriteData(char data )
{
    WaitForEnable();        //&micro;&Egrave;&acute;&yacute;&Ograve;&ordm;&frac34;§&sup2;&raquo;&Atilde;&brvbar;
    SET_RS;
    CLR_RW;
    _NOP();
    DataPort = data;        //&frac12;&laquo;&Iuml;&Ocirc;&Ecirc;&frac34;&Ecirc;&yacute;&frac34;&Yacute;&ETH;&acute;&Egrave;&euml;&Ecirc;&yacute;&frac34;&Yacute;&para;&Euml;&iquest;&Uacute;
    _NOP();
    SET_EN;                 //&sup2;ú&Eacute;ú&Ecirc;&sup1;&Auml;&Uuml;&Acirc;&ouml;&sup3;&aring;&ETH;&Aring;&ordm;&Aring;
    _NOP();
    _NOP();
    CLR_EN;               
}
//==================&Iuml;ò&Ograve;&ordm;&frac34;§&Ecirc;&auml;&Egrave;&euml;&Iuml;&Ocirc;&Ecirc;&frac34;×&Ouml;·&ucirc;&Icirc;&raquo;&Ouml;&Atilde;&micro;&Auml;×&oslash;±ê&ETH;&Aring;&Iuml;&cent;============================
void LocateXY(char x,char y)
{
   char temp;
    x&= 0x01;
    temp = y&0x0f;
    if(x)   temp |= 0x40;  //&Egrave;&ccedil;&sup1;&ucirc;&Ocirc;&Uacute;&micro;&Uacute;2&ETH;&ETH;
    temp |= 0x80;
    LcdWriteCommand(temp,0);
}
//==========================&Ocirc;&Uacute;&Auml;&sup3;&cedil;&ouml;&Icirc;&raquo;&Ouml;&Atilde;&Iuml;&Ocirc;&Ecirc;&frac34;&Ograve;&raquo;&cedil;&ouml;×&Ouml;·&ucirc;==============================
//============x--&Icirc;&raquo;&Ouml;&Atilde;&micro;&Auml;&Aacute;&ETH;×&oslash;±ê   y--&Icirc;&raquo;&Ouml;&Atilde;&micro;&Auml;&ETH;&ETH;×&oslash;±êdata--&Iuml;&Ocirc;&Ecirc;&frac34;&micro;&Auml;×&Ouml;·&ucirc;&Ecirc;&yacute;&frac34;&Yacute;=============
void DisoneChar(char x,char y,char data)
{
    LocateXY( x, y );                       
    LcdWriteData( data );               
}
//==============================&Egrave;&Atilde;&Ograve;&ordm;&frac34;§&acute;&Oacute;&Auml;&sup3;&cedil;&ouml;&Icirc;&raquo;&Ouml;&Atilde;&AElig;&eth;&Aacute;&not;&ETH;&oslash;&Iuml;&Ocirc;&Ecirc;&frac34;&Ograve;&raquo;&cedil;&ouml;×&Ouml;·&ucirc;==============
//==============================y--&Icirc;&raquo;&Ouml;&Atilde;&micro;&Auml;&Aacute;&ETH;×&oslash;±ê  x--&Icirc;&raquo;&Ouml;&Atilde;&micro;&Auml;&ETH;&ETH;×&oslash;±ê================
void DispStr(char x,char y,char *ptr)
{
   char *temp;
   char i,n = 0;
   
    temp = ptr;
    while(*ptr++ != '\0')   n++;    //&frac14;&AElig;&Euml;&atilde;×&Ouml;·&ucirc;&acute;&reg;&Oacute;&ETH;&ETH;§×&Ouml;·&ucirc;&micro;&Auml;&cedil;&ouml;&Ecirc;&yacute;
   
    for (i=0;i<n;i++)
    {
        DisoneChar(x++,y,temp);
        if (x == 0x0f)
        {
           x  = 0;
           y ^= 1;
        }
    }
}
//&Egrave;&Atilde;&Ograve;&ordm;&frac34;§&acute;&Oacute;&Auml;&sup3;&cedil;&ouml;&Icirc;&raquo;&Ouml;&Atilde;&AElig;&eth;&Aacute;&not;&ETH;&oslash;&Iuml;&Ocirc;&Ecirc;&frac34;N&cedil;&ouml;×&Ouml;·&ucirc;
void DispNChar(char x,char y,char n,char *ptr)
{
   char i;
   
    for (i=0;i<n;i++)
    {
        DisoneChar(x++,y,ptr);
        if (x == 0x0f)
        {
           x = 0;
           y ^= 1;
        }
    }
}
//========================&para;&Ocirc;1602&Ograve;&ordm;&frac34;§&Auml;&pound;&iquest;é&frac12;&oslash;&ETH;&ETH;&cedil;&acute;&Icirc;&raquo;&sup2;&Ugrave;×÷============================
void LcdReset(void)
{
    LcdWriteCommand(0x38, 0);            //&sup1;&aelig;&para;¨&micro;&Auml;&cedil;&acute;&Icirc;&raquo;&sup2;&Ugrave;×÷
    Delay5ms();
    LcdWriteCommand(0x38, 0);               
    Delay5ms();
    LcdWriteCommand(0x38, 0);
    Delay5ms();
    LcdWriteCommand(0x38, 1);                //&Iuml;&Ocirc;&Ecirc;&frac34;&Auml;&pound;&Ecirc;&frac12;&Eacute;è&Ouml;&Atilde;
    LcdWriteCommand(0x08, 1);                //&Iuml;&Ocirc;&Ecirc;&frac34;&sup1;&Oslash;±&Otilde;
    LcdWriteCommand(0x01, 1);                //&Iuml;&Ocirc;&Ecirc;&frac34;&Ccedil;&aring;&AElig;&Aacute;
    LcdWriteCommand(0x06, 1);                //&ETH;&acute;×&Ouml;·&ucirc;&Ecirc;±&Otilde;&ucirc;&Igrave;&aring;&sup2;&raquo;&Ograve;&AElig;&para;&macr;
    LcdWriteCommand(0x0c, 1);                //&Iuml;&Ocirc;&Ecirc;&frac34;&iquest;&ordf;&pound;&not;&sup2;&raquo;&iquest;&ordf;&Oacute;&Icirc;±ê&pound;&not;&sup2;&raquo;&Eacute;&Aacute;&Euml;&cedil;
   
}
//==================================FYTOO-JASK3000=============================
void FYTOOJASK3000()
{
     DisoneChar(0,1,0x46) ;
     DisoneChar(0,2,0x59) ;
     DisoneChar(0,3,0x54) ;
     DisoneChar(0,4,0x4f) ;
     DisoneChar(0,5,0x4f) ;
     DisoneChar(0,6,0x2d) ;
     DisoneChar(0,7,0x2d) ;
     DisoneChar(0,8,0x2d) ;
     DisoneChar(0,9,0x4a) ;
     DisoneChar(0,10,0x41) ;
     DisoneChar(0,11,0x53) ;
     DisoneChar(0,12,0x4b) ;
     DisoneChar(0,13,0x33) ;
     DisoneChar(0,14,0x30) ;
     DisoneChar(0,15,0x30) ;
     DisoneChar(0,16,0x30) ;
     Delay5ms();
     DisoneChar(1,5,0x3c) ;
     DisoneChar(1,6,0x55) ;
     DisoneChar(1,7,0x73) ;
     DisoneChar(1,8,0x69) ;
     DisoneChar(1,9,0x6e) ;
     DisoneChar(1,10,0x67) ;
     DisoneChar(1,11,0x3e) ;
}
//=============================================================================
main()
{
     /*  INT8U i, leng =32;        // 8×&Ouml;&frac12;&Uacute;, &Egrave;&ccedil;&sup1;&ucirc;&ETH;è&Ograve;&ordf;&cedil;ü&sup3;¤&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;°ü,&Ccedil;&euml;&Otilde;&yacute;&Egrave;·&Eacute;è&Ouml;&Atilde;
        //INT8U TxBuf[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};         
        INT8U RxBuf[32];       
        WDTCTL = WDTPW + WDTHOLD; //&frac12;&ucirc;&Ouml;&sup1;&iquest;&acute;&Atilde;&Aring;&sup1;·
        InitSys();
        RF1100_IO_set();
        LED_IO_set();
        LCD_IO_set();      //LCD&para;&Euml;&iquest;&Uacute;&Eacute;è&Ouml;&Atilde;
        init_uart0();      //&acute;&reg;&iquest;&Uacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
        POWER_UP_RESET_CC1100();
        halRfWriteRfSettings();
        halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
        LcdReset();        //LCD&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;  
        FYTOOJASK3000();
        LED1_1;LED2_1;PAC_0;*/
        //while(1)
        //{
        // if(halRfReceivePacket(RxBuf,&leng))  //&Aring;&ETH;&para;&Iuml;&Ecirc;&Ccedil;·&ntilde;&frac12;&Oacute;&Ecirc;&Otilde;&micro;&frac12;&Ecirc;&yacute;&frac34;&Yacute;
                //{
                //for(i=0;i<32;i++)           //&micro;± &Ecirc;&Otilde;&micro;&frac12;&Ecirc;&yacute;&frac34;&Yacute;&Ecirc;±&Iacute;¨&sup1;&yacute;&sup3;&not;&frac14;&para;&Ouml;&Otilde;&para;&Euml;&raquo;ò&acute;&reg;&iquest;&Uacute;&Ouml;ú&Ecirc;&Ouml;&Egrave;í&frac14;&thorn;&Iuml;&Ocirc;&Ecirc;&frac34;&Ograve;&Ocirc;×÷&frac14;ì&Ntilde;é
                //{                           //&sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;9600  
                //R_S_Byte(RxBuf);       
             //   LED1_0;
             //   Delay5ms();
                //}
              //  }
             //  LED1_1;
        //}
// InitSys();
  init_uart0();      //&acute;&reg;&iquest;&Uacute;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
   while (!(IFG1 & UTXIFG0));             //&micro;&Egrave;&acute;&yacute;&Ograve;&Ocirc;&Ccedil;°&micro;&Auml;×&Ouml;·&ucirc;·&cent;&Euml;&Iacute;&Iacute;ê±&Iuml;
        TXBUF0 = 0x45;                       //&frac12;&laquo;&Ecirc;&Otilde;&micro;&frac12;&micro;&Auml;×&Ouml;·&ucirc;·&cent;&Euml;&Iacute;&sup3;&ouml;&Egrave;&yen;
// R_S_Byte(0x45);
  while(1)
  {
    LED1_0;
    LED1_1;
  }
}

可以不用怀疑的是板子是没问题的。下了Ti的例程,是一点问题都没有的。
现在我打算慢慢注释未使用的程序,我看究竟哪儿有问题。。
还请有经验的高手指教。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

 楼主| 发表于 2010-9-10 20:40:34 | 显示全部楼层
问题已解决

出0入0汤圆

 楼主| 发表于 2010-9-10 20:40:49 | 显示全部楼层
看门狗

出0入0汤圆

发表于 2010-9-12 10:44:49 | 显示全部楼层
能否详尽一点?
看门狗的什么地方出了问题?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-7 11:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表