历史上的今天
返回首页

历史上的今天

今天是:2024年11月19日(星期二)

正在发生

2018年11月19日 | C51语言编程:单片机与 PC 串口通信程序

2018-11-19 来源:eefocus

单片机接收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就发送.


}

 

}


推荐阅读

史海拾趣

AF International公司的发展小趣事

随着国内市场的逐渐饱和,AF International开始寻求海外市场的拓展。公司派遣专业的销售团队前往欧美、东南亚等地区,与当地企业建立合作关系,推广自己的产品。同时,AF International还积极参与国际电子展会,展示公司的最新技术和产品,吸引了众多国际客户的关注。通过不断的努力,AF International成功打开了海外市场,实现了国际化发展的目标。

东晶(ECEC)公司的发展小趣事

为了满足市场需求和降低成本,东晶电子不断进行产能扩张和自动化升级。公司引进了国际先进的生产设备和技术,提高了生产效率和产品质量。同时,公司还加大了对自动化设备的投入,减少了人力成本,提高了生产效率。这些措施不仅提升了公司的竞争力,也为公司的长远发展奠定了基础。

复旦微电子(FM)公司的发展小趣事

东晶电子自创立以来,始终将技术创新作为公司发展的核心动力。在21世纪初,随着通信技术的迅猛发展,对高性能、高稳定性的石英晶体元器件需求急剧增加。东晶电子凭借其强大的研发团队,成功研发出一系列高精度、高稳定的石英晶体谐振器和振荡器,打破了国外厂商的技术垄断,为中国通信产业提供了关键元器件支持。这一技术突破为公司赢得了市场口碑,也奠定了其在电子行业中的领先地位。

中移物联网(Chinamobile)公司的发展小趣事

2024年2月,中移物联网携自主打造的专业通信模组品牌——中移物联OneMO亮相巴塞罗那世界移动通信大会。这一品牌展示了公司在物联网模组领域的创新能力和技术实力。通过与国际知名企业的交流与合作,中移物联网进一步拓宽了国际视野,为公司的国际化发展提供了有力支持。

EPSON公司的发展小趣事

随着业务的不断发展,EPSON开始积极拓展国际市场。公司先后在全球五大洲设立了多个生产和研发机构,以及销售和服务网点,以便更好地服务全球客户。通过不断拓展海外市场,EPSON逐渐实现了全球化战略,其产品和服务已经覆盖全球多个国家和地区。

Desco Tools公司的发展小趣事

Desco Tools公司一直注重客户服务和品质保障。公司建立了完善的客户服务体系,为客户提供全方位的技术支持和解决方案。同时,公司还建立了严格的质量管理体系,确保每一件产品都符合高标准的质量要求。这些举措赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。

问答坊 | AI 解惑

探索大脑的秘密----脑电波

我们的大脑无时无刻不在产生脑电波。早在1857年,英国的一位青年生理科学工作者卡通(R.Caton)在兔脑和猴脑上记录到了脑电活动,并发表了“脑灰质电现象的研究”论文,但当时并没有引起重视。十五年后,贝克(A.Beck)再一次发表脑电波的论文,才 ...…

查看全部问答>

Windows CE.net的串口通讯类设计.pdf

Windows CE.net的串口通讯类设计.pdf…

查看全部问答>

需要远程监控的方案可以和我联系

有学校,工厂,超市,政府等方面的方案,欢迎交流!…

查看全部问答>

新手 请问这是什么意思啊?

           0  1  2  3  4  5  6  7  8  9  A  B  C  D &nb ...…

查看全部问答>

运算放大器的应用电路分析探讨

大家好 有没有好的关于集成运放的资料可以共享一下,大家一起讨论一下 电路分析的方法!…

查看全部问答>

PIC的I2C接口从机通信错误,未能发出数据

1.用STM32的芯片做主机,PIC16F677作为从机作数据采集。主机用模拟方式实现IIC通信,速率是400K,从机是通过配置相关的IIC寄存器实现。 2.上电后用示波器观察,主机有发送配置地址0XF0和10连续的共10个位的数据。 3.发送的地址和677的SSPADD配置地 ...…

查看全部问答>

GPRS模块MC55的编程问题

大家好 我用一块ARM开发板来控制GPRS模块MC55,让MC55 与因特网建立一个TCP连接并传输数据 开发板上运行着ARM-Linux,我使用了cssl(一个串口通信库)来发送AT指令 建立配置文件到建立连接“AT^SISO=1”都没有问题 在测试时我想发送一个二进制 ...…

查看全部问答>

华为核心网开发部 内部推荐,此次全部是华为名额!

工作地点:北京 (面试地:北京) 招聘岗位:软件工程师、高级软件工程师 职责描述 1)负责通信产品软件模块设计、开发工作,完成相关的设计文档、代码编写。 2)参与软件模块的部分测试工作,完成测试用例的设计、执行与测试报告的输出。 3) ...…

查看全部问答>

amd的BSP

请问大侠们,vxworks有没有配套于处理器为AMD的BSP啊?万分感激各位。。。。翘首待您。。。。。…

查看全部问答>

IMP813L

那位大哥大姐用过IMP813L看门狗芯片啊,求帮助,求解脱。 WDI喂狗信号都放软件延时函数里了(WDI = ~WDI),时间绝对小于1.6秒,为什么还是产生复位信号,RESET变高电平啊? 真心急!!!!!!!!!!!!!!!!!!…

查看全部问答>