来大神帮忙改一下,怎样改成多字符串接收。感谢!C&UART
时间:10-02
整理:3721RD
点击:
#include <stdio.h>
#include <LPC2103.H>
#include "TFT018.h"
typedef char S8;
typedef unsigned char U8;
typedef short S16;
typedef unsigned short U16;
typedef int S32;
typedef unsigned int U32;
typedef long long S64;
typedef unsigned long long U64;
typedef unsigned char BIT;
typedef unsigned int BOOL;
#define LED (1<<3)
#define BUZZER (1<<7)
/*----------------------------------------------------------*\
| Delay ns |
\*----------------------------------------------------------*/
void DelayNS (U32 dly) {
U32 i;
for ( ; dly>0; dly--)
for (i=0; i<5000; i++);
}
/*----------------------------------------------------------*\
| UART0 Initial |
\*----------------------------------------------------------*/
void UART0_init(void) {
unsigned short int fdiv;
PINSEL0 |= 0x00000005; // 设置I/O连接到UART0 173 p0.1
U0LCR = 0x83; // DLAB = 1,可设置波特率 288
fdiv = (60000000/16)/9600;
U0DLM= fdiv/256;
U0DLL = fdiv%256;
U0LCR = 0x03;
}
/*----------------------------------------------------------*\
| UART0 Send Char |
\*----------------------------------------------------------*/
void UART0_PutCh(unsigned char Ch) {
U0THR = Ch; // 发送数据 发送保存寄存器 282
while( (U0LSR&0x40)==0 ); // 等待数据发送完毕 289
}
/*----------------------------------------------------------*\
| UART0 Send String |
\*----------------------------------------------------------*/
void UART0_PutStr(unsigned char const *str) {
while(*str)
UART0_PutCh(*str++);
}
/*----------------------------------------------------------*\
| UART0 Get Char |
\*----------------------------------------------------------*/
unsigned char UART0_GetCh(void) {
while( (U0LSR&0x01)==0 ); //289
return U0RBR;
}
/*
unsigned char UART0_RcvByte(void)
{
unsigned char rcv_data;
while((U0LSR&0x01)==0);
rcv_data = U0RBR;
return(rcv_data);
}
*\
int main(void) {
unsigned char s[]="";
IODIR=0x000000FF; //设置P0.0~P0.7为输出
UART0_init();
for(;;) {
UART0_PutStr(s);
s[0]=UART0_GetCh();
if(strcmp(s[0],'c')==0){
//if(s[0] == '1'){
IOCLR = BUZZER;
IOSET =0x00000004;
IOSET =LED;
}
if(strcmp(s[0],'o')==0){
//if(s[0] == '0'){
IOSET = BUZZER;
IOCLR =0x00000004;
IOCLR = LED;
}
DelayNS(10);
}
}
#include <LPC2103.H>
#include "TFT018.h"
typedef char S8;
typedef unsigned char U8;
typedef short S16;
typedef unsigned short U16;
typedef int S32;
typedef unsigned int U32;
typedef long long S64;
typedef unsigned long long U64;
typedef unsigned char BIT;
typedef unsigned int BOOL;
#define LED (1<<3)
#define BUZZER (1<<7)
/*----------------------------------------------------------*\
| Delay ns |
\*----------------------------------------------------------*/
void DelayNS (U32 dly) {
U32 i;
for ( ; dly>0; dly--)
for (i=0; i<5000; i++);
}
/*----------------------------------------------------------*\
| UART0 Initial |
\*----------------------------------------------------------*/
void UART0_init(void) {
unsigned short int fdiv;
PINSEL0 |= 0x00000005; // 设置I/O连接到UART0 173 p0.1
U0LCR = 0x83; // DLAB = 1,可设置波特率 288
fdiv = (60000000/16)/9600;
U0DLM= fdiv/256;
U0DLL = fdiv%256;
U0LCR = 0x03;
}
/*----------------------------------------------------------*\
| UART0 Send Char |
\*----------------------------------------------------------*/
void UART0_PutCh(unsigned char Ch) {
U0THR = Ch; // 发送数据 发送保存寄存器 282
while( (U0LSR&0x40)==0 ); // 等待数据发送完毕 289
}
/*----------------------------------------------------------*\
| UART0 Send String |
\*----------------------------------------------------------*/
void UART0_PutStr(unsigned char const *str) {
while(*str)
UART0_PutCh(*str++);
}
/*----------------------------------------------------------*\
| UART0 Get Char |
\*----------------------------------------------------------*/
unsigned char UART0_GetCh(void) {
while( (U0LSR&0x01)==0 ); //289
return U0RBR;
}
/*
unsigned char UART0_RcvByte(void)
{
unsigned char rcv_data;
while((U0LSR&0x01)==0);
rcv_data = U0RBR;
return(rcv_data);
}
*\
int main(void) {
unsigned char s[]="";
IODIR=0x000000FF; //设置P0.0~P0.7为输出
UART0_init();
for(;;) {
UART0_PutStr(s);
s[0]=UART0_GetCh();
if(strcmp(s[0],'c')==0){
//if(s[0] == '1'){
IOCLR = BUZZER;
IOSET =0x00000004;
IOSET =LED;
}
if(strcmp(s[0],'o')==0){
//if(s[0] == '0'){
IOSET = BUZZER;
IOCLR =0x00000004;
IOCLR = LED;
}
DelayNS(10);
}
}