51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。
当串行发送完毕后,将在标志位 TI 置 1,同样,当收到了数据后,也会在 RI 置 1。
无论 RI 或 TI 出现了 1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。
在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。
常用的方法有:
接收数据时,使用“中断方式”,清除 RI 后,用一个变量通知主函数,收到新数据。
发送数据时,也用“中断方式”,清除 TI 后,用另一个变量通知主函数,数据发送完毕。
这样一来,收、发两者基本一致,编写程序也很规范、易懂。
更重要的是,主函数中,不用在那儿死等发送完毕,可以有更多的时间查看其它的标志。
PC与单片机串口通信的程序,要求如下:
1、如果在电脑上发送以$开始的字符串,则将整个字符串原样返回(字符串长度不是固定的)。
2、如果接收到1,则将P00置高电平,接收到0,P10置低电平。(用来控制一个LED)
单片机是STC89C52RC/晶振11.0592/波特率要求是9600或4800。
注意:调试软件我选择“串口猎人”,串口猎人中选择“字符格式发送” 。当然STC-ISP也是可以的
*********************************************************************************/
#include
sbit LED=P0^0;
unsigned char UART_buff;
bit New_rec = 0, Send_ed = 1, Money = 0;
void main ()
{
SCON = 0x50; //串口方式1, 10位UART(一个起始位“0”八个数据位一个停止位“1”), 允许接收.
TMOD = 0x20; //T1方式2
TH1 = 0xFD; //装入自动重加载的处置,9600bps@11.0592MHz
TL1 = 0xFD; //装入初值
TR1 = 1; //启动定时器T1
ES = 1; //开串口中断,但不开定时器中断,不允许定时器中断
EA = 1;
while(Money == 0); //等着交费,呵呵,等着接收$.
while(1)
{
if ((New_rec == 1) && (Send_ed == 1))
{ //如果收到新数据及发送完毕
SBUF = UART_buff; //那就发送.
New_rec = 0;
Send_ed = 0;
}
}
}
//----------------------------------------------
void ser_int (void) interrupt 4
{
if(RI == 1) //如果收到.
{
RI = 0; //清除标志.
New_rec = 1;
UART_buff = SBUF; //接收.
if(UART_buff == '1') LED = 1;
if(UART_buff == '0') LED = 0;
if(UART_buff == '$') Money = 1;
}
else //如果送毕.
{
TI = 0; //清除标志.
Send_ed = 1;
}
}
关键字:51单片机 PC 通信
引用地址:
51单片机与PC通信知识总结
推荐阅读最新更新时间:2024-11-03 16:16
基于AT89S51单片机的定时报警器电路图
设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59 秒)进行倒计时,当计时到0 时数码管闪烁“00”(以1Hz 闪烁),按键功能如下: (1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此键无效。 (2)增一键:在设置状态时,每按一次递增键,初始值的数字增1。 (3)递一键:在设置状态时,每按一次递减键,初始值的数字减1。 (4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数字。如果已经处于计时状态则此键无效。 图 定时报警器电路原理图
[单片机]
基于AT89C2051单片机制作的厨房定时器
该制作以5分钟为一个计时单位,最多计时1小时,3V电池做电源,有蜂鸣器报警,工作时功耗为6mA左右(使用AT89C2051),可以使用3V钮扣电池,具有自动关机功能,不运行时耗电量可以忽略不计,单键操作,简单方便。 电路图 VT1为PNP的9012,当电路不工作时VT1的B极由R4得到高电平,VT1截止,AT89C2051无法从VT1的E极得到电源。当SW1按下时,VT1的B极通过VD2和SB1接地,由高电平转为低电平,VT1导通。此时AT89C2051得电,同时通过C1,R4复位。复位成功后P3.7升为高电平,使得VT2导通,从而使VT1的B极保持低电平状态,这时就算松开SB1,VT1也不会截止而导致MCU失
[工业控制]
安弗施为中国最高摩天大楼提供通信支持
上海,2013年11月4日——日前,全球无线通信与广播基础设施领域专家安弗施无线射频系统公司(RFS)宣布,将为中国最高摩天大楼——上海中心大厦提供高性能室内覆盖解决方案,助其在电梯内实现无线信号的完美覆盖。 在建的上海中心大厦是中国最高的大楼,也是全球第二大高楼,仅次于迪拜的哈里发塔。它坐落于浦东金融区,这是上海最具活力的区域之一。一旦落成,这座新大厦将提供多达380,000平米的办公空间,可满足数百家企业的办公和活动需求。 利用RFS市场领先的RADIAFLEX®泄漏电缆,该大厦127层高的电梯通道内将实现无线全覆盖。当人们在乘坐上海中心大厦632米高的电梯时,仍然能够与家人、朋友与同事保持良好的通信连接。 “
[网络通信]
基于PL3200的CDMA扩频电力线载波通信系统设计
1引言 电力线载波通信是利用现有的电力线路作为介质进行信息传输的一种通信方式。广泛用于电力管理系统、工业自动控制系统、远程控制系统、智能化小区等领域。利用电力线作为通信媒介,无需另外架设通信线路,也不占用现有的频谱资源。但在电力线上进行信号传输,信号衰减大、噪声干扰大,使得电力线载波通信的应用受到了限制,必须采用多种技术措施改善通信质量。目前,最有发展前景的解决方案是采用技术先进的CDMA扩频通信技术。 2CDMA扩频通信 CDMA(码分多址)包含二个基本技术:一个是码分技术,另一个是多址技术。 2.1CDMA中的码分技术 码分技术的基础是扩频技术,其目的是解决强干扰下的通信。由香农定理可知,在信号
[网络通信]
是德科技助力香农通信验证支持Open RAN的 5G 小型蜂窝基站性能
是德科技终端设备仿真(UEE)解决方案快速验证 O-RAN 设备 2022 年 3 月 24 日,北京——是德科技公司日前宣布,香农通信科技有限公司是中国一家 4G 和 5G 小型蜂窝基站解决方案厂商,选中是德科技公司的终端用户设备仿真解决方案UeSIM,用于加速验证基于 O-RAN 联盟标准的无线接入网(RAN)设备。是德科技提供先进的设计和验证解决方案,旨在加速创新,创造一个安全互联的世界。 为支持部署虚拟化的开放式的无线接入网(RAN),众多设备商、测试实验室、移动运营商和超大规模数据中心围绕 O-RAN 联盟定义的规范组成了一个生态系统,香农通信就是其中一员。移动运营商通过部署小型蜂窝基站来改善室内覆盖效果,并在高
[测试测量]
MCS-51单片机与CPLD/FPGA接口逻辑设计
在功能上,单片机与大规模CPLD有很强的互补性。单片机具有性能价格比高、功能灵活、易于人机对话、良好的数据处理能力潍点;CPLD/FPGA则具有高速、高可靠以及开发便捷、规范等优点。以此两类器件相结合的电路结构在许多高性能仪器仪表和电子产品中仍将被广泛应用。本文就单片机与CPLD/FPGA的接口方式作一简单介绍,希望对从事单片机和CPLD/FPGA研发的朋友能有所启发。 单片机与CPLD/FPGA的接口方式一般有两种,即总线方式与独立方式,分别说明如下: 一、总线方式 单片机以总线方式与CPLD/FPGA进行数据与控制信息通信有许多优点。 (1)速度快。如图一所示,其通信工作时序是纯硬件行为,对于MCS-51单片机,只需一条单字节
[单片机]
现代摩比斯宣布成功开发车载5G通信模块技术
现代摩比斯近日宣布成功开发出车载5G通信模块技术,并称该技术基于5G移动通信技术,被视为推动自动驾驶和车联网大容量数据处理、实时连接技术发展的关键。 据介绍,摩比斯研发的5G通信模块把通信芯片、存储器、射频电路和GPS集成到一起,今后将应用于5G互联车辆的远程信息处理服务。 其中,远程信息处理技术是指利用移动通信网络与外部控制中心共享车辆信息,例如远程车辆控制、OTA更新、实时交通数据共享和紧急呼叫服务等,为驾驶者提供更安全、更便利、更娱乐的驾乘体验。 据了解,摩比斯还计划将此次开发的5G通信模块技术与此前成功开发的V2X通信技术融合,为自动驾驶、车联网提供集成解决方案。摩比斯的5G+V2X集成解决方案能实现车辆间
[汽车电子]
51单片机串口应用实例(汇编)
一、 实验题目 猜数字小游戏:串行口发送0x01、0x02、0x03 HEX数据中的一个到51单片机,对应的按键key1-key3,发送数据之后,另一边人员猜测对应的HEX码,并按下对应的按键,若按下正确的按键,则LED灯闪烁,按下不正确的按键,则蜂鸣器响一下报错,程序可以一直执行到猜中停止,此时按下key4清空复位运行数据,等待下一个串口发送的数据进行下一次猜数字。 二、 设计方案及电路 设计方案: 串口通过定时器1产生9600波特率,接收中断里面处理接收数据,主循环里面对接收数据进行判断,根据不同的HEX码转换到不同的按键判断任务,通过扫描的方式读取KEY1-3,判断读取的值,如果与HEX码对应的按键不同,则跳转到蜂鸣器报警
[单片机]