当前位置:首页 > 单片机 > 单片机
[导读]单片机接收PC机发来的指令信号,然后单片机又向PC机发送字符串。具体要求如下:当接收指令信号为:'go',单片机向PC机发送字符串:WELCOME TO CHINA!;当接收指令信号为:'who',单片机向PC机发送字符串:MY NAME IS

单片机接收PC机发来的指令信号,然后单片机又向PC机发送字符串。具体要求如下:

当接收指令信号为:'go',单片机向PC机发送字符串:WELCOME TO CHINA!;

当接收指令信号为:'who',单片机向PC机发送字符串:MY NAME IS LIMING;

当接收指令信号为:'home',单片机向PC机发送字符串:YINGYONGKEXUEXUEYUAN。

PC机上的串口调试软件,会在窗口显示出单片机送回来相应字符串;

如果接送的字符串不正确,单片机不响应。

采用C语言。

题目链接:http://zhidao.baidu.com/question/282477940.html

//---------------------------------------------------------

做而论道回答如下:

看看下面的。

//---------------------------------------------------------

#include

#include

#define uchar unsigned char

#define uint unsigned int

//---------------------------------------------------

uchar idata trdata1[] = {

'W','E','L','C','O','M','E',' ','T','O',' ','C','H','I','N','A','!',0x0d,0x0a,0x00};

uchar idata trdata2[] = {

'M','Y',' ','N','A','M','E',' ','I','S',' ','L','I','M','I','N','G',0x0d,0x0a,0x00};

uchar idata trdata3[] = {

'Y','I','N','G','Y','O','N','G','K','E','X','U','E','X','U','E','Y','U','A','N',0x0d,0x0a,0x00};

uchar RxBuf[5], Rx_p, Rx_i, TX_p, Tx_i;

//---------------------------------------------------

void UART_Init(void) //串口初始化

{

PCON = 0x00;

SCON = 0x50; //串口工作方式为1,允许接收.

TMOD = 0x20; // T1 定时方式2

TH1 = 0xfd; //波特率 9600bps @ fosc = 11.0592MHz

TL1 = 0xfd;

TR1 = 1; //启动T1

ES = 1; //开串口中断.

EA = 1; //开总中断.

}

//---------------------------------------------------

void main()

{

UART_Init();

Rx_p = 0;

Rx_p = 2;

while(1) {

if (Rx_p != 0) {

TX_p = Rx_p;//字符串1 2 3

Tx_i = 0; //字符指针.

Rx_p = 0; //清零.

Rx_i = 0;

TI = 1; //启动发送中断.

} }

}

//---------------------------------------------------

void Uart_INT(void) interrupt 4 //串口中断函数

{

uchar Tcv = 0;

if(RI) { //接收?.

RI = 0; //标志位清零.

RxBuf[Rx_i] = SBUF;

if((RxBuf[Rx_i - 1] == 'g') && (RxBuf[Rx_i] == 'o')) Rx_p = 1;

if((RxBuf[Rx_i - 2] == 'w') && (RxBuf[Rx_i - 1] == 'h') && (RxBuf[Rx_i] == 'o')) Rx_p = 2;

if((RxBuf[Rx_i - 3] == 'h') && (RxBuf[Rx_i - 2] == 'o') && (RxBuf[Rx_i - 1] == 'm') && (RxBuf[Rx_i] == 'e')) Rx_p = 3;

P1 = Rx_p; //在P1显示收到的信息.

Rx_i++;

Rx_i %= 5;

}

else {

TI = 0;

if (TX_p == 1) Tcv = trdata1[Tx_i]; //取来待发字符.

if (TX_p == 2) Tcv = trdata2[Tx_i];

if (TX_p == 3) Tcv = trdata3[Tx_i];

if (Tcv != 0) {SBUF = Tcv; Tx_i++;} //不是0就发送.

}

 

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

8位单片机在嵌入式设计领域已经成为半个多世纪以来的主流选择。尽管嵌入式系统市场日益复杂,8位单片机依然不断发展,积极应对新的挑战和系统需求。如今,Microchip推出的8位PIC®和AVR®单片机系列,配备了先进的独立...

关键字: 单片机 嵌入式 CPU

在嵌入式系统开发中,程序烧录是连接软件设计与硬件实现的关键环节。当前主流的单片机烧录技术已形成ICP(在电路编程)、ISP(在系统编程)、IAP(在应用编程)三大技术体系,分别对应开发调试、量产烧录、远程升级等不同场景。...

关键字: 单片机 ISP ICP IAP 嵌入式系统开发

在嵌入式系统开发中,看门狗(Watchdog Timer, WDT)是保障系统可靠性的核心组件,其初始化时机的选择直接影响系统抗干扰能力和稳定性。本文从硬件架构、软件流程、安全规范三个维度,系统分析看门狗初始化的最佳实践...

关键字: 单片机 看门狗 嵌入式系统

本文中,小编将对单片机予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 单片机 开发板 Keil

随着单片机系统越来越广泛地应用于消费类电子、医疗、工业自动化、智能化仪器仪表、航空航天等各领域,单片机系统面临着电磁干扰(EMI)日益严重的威胁。电磁兼容性(EMC)包含系统的发射和敏感度两方面的问题。

关键字: 单片机 电磁兼容

以下内容中,小编将对单片机的相关内容进行着重介绍和阐述,希望本文能帮您增进对单片机的了解,和小编一起来看看吧。

关键字: 单片机 复位电路

在这篇文章中,小编将为大家带来单片机的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 单片机 异常复位

今天,小编将在这篇文章中为大家带来单片机的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 仿真器

单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对它的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 中断 boot

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 数字信号 模拟信号
关闭