📄 easyweb_test.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 + -