找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机串口通信出了点问题 求大神看一下

查看数: 2831 | 评论数: 8 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-2-12 19:19

正文摘要:

就是输入1的时候蜂鸣器响 2的时候led流水灯 但是什么反应都没有 串口通信可以实现 但是不能时间额外的功能 #include "reg51.h" #define led P0 typedef unsigned char u8; typedef unsigned int u16; sbit ...

回复

ID:476375 发表于 2019-2-14 11:11
SBUF =  Data; while(TI == 0); TI = 0;这些放到main()里面的while(1)最下面试试;中断函数里面不能while(TI == 0);堵塞
ID:476086 发表于 2019-2-13 09:54
笨笨兔 发表于 2019-2-13 08:14
这个未必是单片机串口通信出了问题。
void tx() interrupt 4
{

其实是将数据保存在了Data这个变量了,我估计楼主重新发出去的操作是看看有没有正确接收,调试用的吧。
ID:476086 发表于 2019-2-13 09:50
1.串口接收到数据,然后根据数据内容进行蜂鸣器或者LED显示处理后,是否需要将Data变量进行清零?
2.我们这种前后台系统,在做延时的时候,不能直接调用DELAY这种函数的,这样系统会死在这里很长时间的。如果此时有新的串口指令过来的话,你的MCU是无法进行处理的。
ID:393699 发表于 2019-2-13 09:45
试着用字符串比较函数strcmp替代if判断?
ID:164602 发表于 2019-2-13 09:23
你的程序什么问题也没有(已经用板子试验通过了),是你在使用串口调试软件时范了错误。
从你的程序上看:判断是1、2——注意!注意!注意——重要的事儿说三遍,你判断的数字1、2,不是字符1、2
而从你截图中看到的,是发送字符1、2,当然没反应了。呵呵呵
要勾选HEX发送嘛!

评分

参与人数 2黑币 +40 收起 理由
yousunny + 30 很给力!
日本人孙笑川 + 10 很给力!

查看全部评分

ID:94031 发表于 2019-2-13 08:44
查查波特率有无问题。
ID:158375 发表于 2019-2-13 08:14
这个未必是单片机串口通信出了问题。
void tx() interrupt 4
{
        Data=SBUF;
        RI=0;
        SBUF=Data;
        while(TI==0);
        TI=0;
}
中断接收了数据,然后发送出去;什么时候按照你的想法处理这个数据呢?
这个中断处理也不是很好。
ID:432823 发表于 2019-2-13 07:24

        RI=0;
        Data=SBUF;
        
        while(TI==0);
        TI=0;

评分

参与人数 1黑币 +20 收起 理由
yousunny + 20 赞一个!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表