C51语言编程:单片机与 PC 串口通信程序

发布者:学海飘香最新更新时间:2018-11-19 来源: eefocus关键字:C51  语言编程  单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章

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


}

 

}


关键字:C51  语言编程  单片机  串口通信 引用地址:C51语言编程:单片机与 PC 串口通信程序

上一篇:51单片机--巧记步进电机相关知识
下一篇:利用8031单片机,设计跑马灯和流水灯

推荐阅读最新更新时间:2024-03-16 16:17

单片机出租车计价器设计
出租车计价器的单片机源程序: #include reg51.h #include lcd1602.h #include ds1302.h unsigned char time_add ; void LcdDisplay(); void keyscan(); uint n=0,s=0; uint j=0,k=0; uint t=0; uint tx=0,ty=0,tz=0; uint s18=0,n18=0,t18=0,tx18=0,ty18=0,tz18=0,j18=0,k18=0; uint l=0; uint lx=0,ly=0; uint count; sbit SW=P2^1; sbit LED=P2^0;
[单片机]
<font color='red'>单片机</font>出租车计价器设计
单片机MSP430入门--理论①--MSP430简介
大家都应该多少在新闻上,都看到过国家对于集成电路的重视,还有贸易战对于中国的打压,所以在现在以及将来的很长一段时间,集成电路将会国家重点扶持的行业,然而集成电路发展除了国家政策,市场资金的扶持,最主要的还是人才的需求,所有个人建议如果有机会或者缘分的话,大家可以多学习下,不一定非要做这行,最起码多个选择多一点了解吧 现在网上有好多关于MSP430的资料内容,但是有的都太散了,我就是想给大家也是给自己整理精炼下,让大家对这个有个系统性的认识 本期先对MSP430来简单的介绍下,MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signa
[单片机]
AT89S51与AT89C2051单片机介绍
AT89C2051是精简版的51单片机,精简掉了P0口和P2口,只有20只引脚,但其内部集成了一个很实用的模拟比较器,特别适合开发精简的51应用系统,毕竟很多时候我们用不了全部32个I/O端口,使用AT89C2051更合适,芯片体积更小,而且AT89C2051的工作电压最低为2.7V,因此可以用来开发两节5号电池供电的便携式产品。 下面对ATMEL公司生产的51系列家族的AT89S51和AT89C2051两种单片机进行一下比较,两种单片机都是目前除了宏晶STC系列单片机之外最常用的单片机,其中AT89S51为标准51单片机,当然其功能要比早期的51单片机更加强大,支持ISP在系统编程技术,内置硬件看门狗。。。 一、AT89S51单
[单片机]
一种单片机和FPGA的远程温度监控系统
温度对工农业生产和国防事业均有不同程度的影响。电力设备的故障有多种多样,但大多数都伴有发热的现象,一次事故损失巨大;纺织、食品、烟草等工业中,温度过高容易使产品变质,电子仪器也容易出故障;温室栽培和工业生产中,若不控制温度,将严重影响产量和质量。还有很多领域的温度可能较高或较低,人无法靠近或现场无需人力来监控。传统的温度测量方式周期长,不能实时监测,而且测量员必须到现场进行测量和启动功率设备来调整温度,工作效率非常低,且不便于管理。为此设计了这套远程测控系统,坐在办公室里就可以对现场进行监控,又方便又节省人力。   1 系统的总体设计   本设计是基于单片机和NiosⅡ软核的温度监控系统,其系统框图如图1所示。本系统
[单片机]
51单片机的看门狗是什么
看门狗是用来防止万一单片机程序出错造成重大损失的。 防错的原理很简单,它在硬件上就是一个定时器,当它溢出的时候就会让单片机强制复位使程序重新开始执行。 正常的情况下是不能让它溢出的,所以在程序上每隔一段时间要给他置一次值(俗称喂狗),只要程序中正常给它喂他就不会溢出。 一旦程序跑飞了,有干扰或者进入死循环之类的情况时,不能正常 执行程序 了,那么就永远执行不到喂狗的指令了,但此时定时器是硬件控制的,仍然会走,所以溢出了,单片机就复位了。 一般安全性要求比较高的,系统跑飞了会造成重大事故的都会加一个“狗”保安全。 通常,看门狗的溢出时间越短越灵敏,跑飞之后复位的时间越短,也就越安全,但是,你喂狗的操作也要更频繁。
[单片机]
工程师分享的单片机学习步骤
  有了单片机学习板之后你就要多练习,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用。另外我再说说用汇编和C语
[单片机]
51单片机的I/O端口结构及应用特性
1.锁存器加引脚的典型结构 51单片机的I/O端口都有内部总线实现操作控制。P0-P3四个I/O口都可以做普通I/O口,因此,要求具有输出锁存功能。内部总线有事分时操作,因此每个I/O端口都有相应的锁存器。然而I/O端口又是外部的输入/输出通道,必须有相应的引脚,故形成了I/O端口的锁存器加引脚的典型结构。 2.I/O口的复用功能 (1)I/O口的总线复用 80C51在使用并行总线扩展时,P0口可作为数据总 线口和低8位地址总线口,这是,P0为三态双向口。P0口输出总线的地址数据信号,P2口输出高8位地址信号。 (2)I/O口的功能复用 I/O口的P3为功能复用的I/O端口。端口有复用输出的控制端;引脚也有复用输入的控制端。
[单片机]
定时器中断是什么意思,定时器中断的工作原理
定时器中断是由单片机中的定时器溢出而申请的中断。51单片机中有两个定时器T0和T1。STM32中共有11个定时器。 一、定时器中断是什么意思 定时器中断是由单片机中的定时器溢出而申请的中断。 51单片机中有两个定时器T0和T1: (1)TF0:定时器T0溢出中断请求。当定时器TO产生溢出时,TO中断请求标志TF0置1,请求中断处理。 (2)TF1:定时器T1溢出中断请求。当定时器Tl产生溢出时,T1中断请求标志TF1置1,请求中断处理。 Stm32共有11个定时器: 1、两个高级定时器:TIM1、TIM8-------------------------APB2 2、四个通用定时器:TIM2~TIM5-------------
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved