⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 easyweb_test.c

📁 ARM程序
💻 C
字号:
//******************************************************************************

#include  <msp430x14x.h>

#define          B1             P4IN & BIT4     //B1 - P4.4
#define          B2             P4IN & BIT5     //B2 - P4.5
#define          B3             P4IN & BIT6     //B3 - P4.6
#define          B4             P4IN & BIT7     //B4 - P4.7
#define          STATUS_LED     BIT1           //STATUS_LED - P2.1
#define          BUZ1           BIT2           //P4.2
#define          BUZ2           BIT3           //P4.3
#define          CR             0x0d
#define          LF             0x0a
#define          ON             1
#define          OFF            0


unsigned char i, RXData, TXData, BUZ_count;
const unsigned char Message [] = {"http://www.olimex.com/dev"};

void Delay (unsigned int a);
void stop (void);
void test_ok (void);
void InitOsc(void);
void InitPorts(void);

void main(void)
{ 
  InitOsc();
  InitPorts();
   
//  Delay(255);                           //Delay while set oscilator                                     
//  Delay(255);
//  Delay(255);
//  Delay(255);
  
//UART ini
  U0CTL = CHAR;                                   //Start 8bit 1stop, N
  U0TCTL = SSEL0;                                 //UCLOCK = ACLK
  U0BR0 = 0xa0;                                   //BAUD RATE = 9600
  U0BR1 = 0x01;
  U1MCTL = 0x00;                                  //without modulation
  ME1 = UTXE0 | URXE0;                            //enable RX and TX
  P3SEL |= BIT4 | BIT5;                           //select UART pins
  P3DIR |= BIT4;                                  //port direction for TXD0
  P3DIR &= ~BIT5;                                 //port direction for RXD0
//  IE1 |= URXIE0;                                  // Enable USART0 RX interrupt  
//  _EINT();                                        // Enable interrupts
  
//  U1CTL &= ~SWRST;                              //reset UART logic
  
  while (1)
    {
      if ((B1) == 0)   P2OUT &= ~STATUS_LED;           //switch on status_led
      else  P2OUT |= STATUS_LED;                      //switch off status led
    
    
      for (i=0; i!=25; i++)
        {
          TXData = 0xaa;
          while ((IFG1 & UTXIFG0) == 0);
          U0TXBUF = TXData; 
//          Delay(255);       
        }    
    
//    Delay(255);
    
//UART1 - echo
    
//      if ((IFG1 & URXIFG0) != 0)  
//        {
//          RXData=U0RXBUF;
//          TXData = RXData;
//          while ((IFG1 & UTXIFG0) == 0);
//          U0TXBUF = TXData+1;    
//        }
  }
}  

void InitOsc(void)
{
  WDTCTL = WDTPW | WDTHOLD;                      // stop watchdog timer

  BCSCTL1 |= XTS;                                // XT1 as high-frequency
  _BIC_SR(OSCOFF);                               // turn on XT1 oscillator
                          
  do                                             // wait in loop until crystal is stable 
    IFG1 &= ~OFIFG;
  while (IFG1 & OFIFG);

  BCSCTL1 |= DIVA0;                              // ACLK = XT1 / 2
  BCSCTL1 &= ~DIVA1;
  
  IE1 &= ~WDTIE;                                 // disable WDT int.
  IFG1 &= ~WDTIFG;                               // clear WDT int. flag
  
  WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1; // use WDT as timer, flag each
                                                           // 512 pulses from ACLK
                                                           
  while (!(IFG1 & WDTIFG));                      // count 1024 pulses from XT1 (until XT1's
                                                 // amplitude is OK)

  IFG1 &= ~OFIFG;                                // clear osc. fault int. flag
  BCSCTL2 = SELM0 | SELM1;                       // set XT1 as MCLK
}  

void InitPorts(void)
{
  P1SEL = BIT0;                                  // 
  P1OUT = 0;                                     //
  P1DIR = BIT5 | BIT6 | BIT0;                    //enable only Relay outputs

  P2SEL = 0;
  P2OUT = 0;
  P2DIR = ~BIT0;                                //only P2.0 is input
  
  P3SEL |= BIT4 | BIT5;                         //enable UART0    
  P3DIR |= BIT4;                                //enable TXD0 as output
  P3DIR &= ~BIT5;                               //enable RXD0 as input

  P4SEL = 0;
  P4OUT = 0;
  P4DIR = BIT1 | BIT2 | BIT3;

  P6SEL = 0x80;                                  // use P6.7 for the ADC module
  P6OUT = 0;
  P6DIR = 0x00;                                  // all output except P6.7
}


void stop (void)
{
  P1DIR=0;
  P2DIR=0;
  P3DIR=0;
  P4DIR=0;
  P5DIR=0;
  P6DIR=0;
  i=i;
  while(1);
}

void Delay (unsigned int a)
{
  for (i=0 ; i != a; i++);
}

//interrupt[UART0RX_VECTOR] void usart0_rx (void)
//{
//  while ((IFG1 & UTXIFG0) == 0);        // USART0 TX buffer ready?
//  TXBUF0 = RXBUF0;                      // RXBUF0 to TXBUF0
//}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -