串口有关问题,请高手帮忙解答(尽量详细啊初学)
发布时间:2010-06-14 16:01:34 文章来源:www.iduyao.cn 采编人员:星星草
串口问题,请高手帮忙解答(尽量详细啊,初学)
1 串口是接收到一个字符就产生中断吗?如要接受“ABC”是否要产生3次中断。
2 串口怎样判断字符串接收完毕?
------解决方案--------------------
3次中断 查询寄存器标志
------解决方案--------------------
有中断 或者查询事件。
有的可以设置threshold, 但硬件层面上只能自己判断了
------解决方案--------------------
以51单片机为例:
如果你允许了接收中断,那么每收到1个字符,就会产生一次中断,中断标志位是RI;如果同时允许了发送中断(TI),每次进入中断后,还需要判断是什么引起的中断,并作相应的处理;
串口硬件无法判断字符串接收完毕,这项工作需要软件来实现;
做法就是,双方事先约定,例如约定发送的字节数;或者发送特定的结束标志(可以是两字节结束标志);
------解决方案--------------------
------解决方案--------------------
对于单片机来说:
1 是产生3次硬件中断
2 硬件上无法判断某个字符串是否接收完毕,可以自己定义一个简单的数据协议。
比如:
协议头 + 数据长度 + 数据 + 校验 + 协议尾
比如“协议头”数据有两个字节:f0 5a。
你在接收到f0 5a之后,读取到的下一个字节就是“数据长度”。
“数据长度”可以包含“数据长度 + 数据 + 校验”的总长度。
读取完这些数据之后,再判断“协议尾”。
比如协议尾为两个字节:5a f0。
读取“协议头 + 数据长度 + 数据 + 校验 ”之后,再继续读两个字节,如果正好是5a f0。
那证明你的一帧数据包算是接收完毕了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
c51串口求助!
串口接收程序如下
void rec_gps(void) interrupt 4 {
uchar str;
uint i,k;
k=0;
i=0;...
-
win7运行CodeWarrior IDE出错
我的本安装了CodeWarrior IDE,一运行就会出现提示:
IDE 4.1 Build 0622 已停止工作。
或者提示:
Unha...
-
关于AT指令控制GSM短信猫的问题
C/C++ code
打开串口
BOOL CComm::OpenComm(const char* pPort,
int nBaudRa...
-
关于51中断求教
各位大虾,我现在要做一个GPS授时的小程序,遇到如下困惑,求大虾们解答:
1 线路板上带有时钟芯片,平时显示时间是...
-
atd指令拨号,如何判断电话状态
在网上找了许久,终于找到一位仁心解决方案,这个指令是可以得到手机当时的状态,但是不管是空号、欠费、...
-
知道在哪跑飞,跑飞的详细原因有谁能解释一下。
今天出现这样的问题:
将这个中断函数注释掉:
#pragma vector=USCI_B2_VECTOR
__in...
-
51程序移植到2051
大牛们,我想吧一个51的程序移植到2051中,用NXP的89V51芯片时用到的I/O口只有P1.0 P1.1 P1.2 3三个,我现在移植到AT...
-
一道课程设计题:基于单片机的波形发生器的设计
设计要求:
1.能产生正弦波、方波、三角波、锯齿波等4种周期性波形,并且可通过调节变...
-
解析单片机最小系统及相关电路
原文出自:电子发烧友论坛——单片机论坛[color=#FF0000][/color]
单片机最小系统单片机最小系统介...
-
单片机学习书籍大全推荐
在电子发烧友论坛里看到了单片机学习资料汇总,特地搜罗了过来,不知道大家看过几本,也希望让需要学习的人 都...