微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请高手帮忙看下

请高手帮忙看下

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit led1=P1^0;
bit busy;
void init()
{
TMOD=0x20;
TH1=0Xfd;
TL1=0Xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void senddata(char date)
{
while(busy);
SBUF=date;
//if(date==33)
//led1=0;
busy=1;       
}
void sendstring(char *s)
{
while(*s)
{
         senddata(*s++);
}       
}
void main()
{
init();
sendstring("STC15F2K60S2\r\nUart Test!\r\n");
while(1);
}
void ser() interrupt 4
{
if(RI)
{
RI=0;
}
if(TI)
{
TI=0;
busy=0;
}
}
各位 请帮忙看下 我想将STC15F2K60S2\r\nUart Test!\r\n这个字符串发送给上位机串口调试助手, 经过调试我发现SBUF=date这个发送指令确实已经执行了  也就是说字符串都传递过来了  可是上位机串口调试助手里却收不到任何数据  ,波特率设置没问题,实在想不明白

如果确定程序是正常的话检查一下你的硬件,看看串口线是否是正常,com口是否选择正确等等

嗯 ,这些都是正常的  后来我加了个大循环  while(1){sendstring("STC15F2K60S2\r\nUart Test!\r\n");} 当我打开串口的时候  可以无限次接收 说明 数据确实发送成功 程序和硬件应该都没问题,所以我的猜测是可能在烧写程序时串口关闭,但程序烧写完后程序已经执行也就是数据已经发送了只是串口没打开 导致数据丢失 当我再打开串口时数据已经丢失了  也不知道是不是这样

有可能是这样,这个你可以试一下确认的

你好 ,这个该如何确认呢? 我现在学单片机痛苦的地方是不知道该如何去分析调试程序,因为调试时经常出现很奇怪的现象,我常常不知道如何去调试 ,因为我不知道为什么会出现这种情况,再者,有时经过调试我也能慢慢找到错误在哪里,可不知道该怎么去改正,归根结底还是因为不知道为什么会出现这种奇怪的错误现象,这也是我现阶段遇到的瓶颈,也没有什么书可以提供参考?希望有人能指点迷津

遇到问题首先要先进行问题的定位,找到具体问题出现的地方才能进行之后的修改。比如程序的某个功能不正常了,可以先单独试这个功能模块然后在慢慢添加其他的看到哪里会出问题类似于这样的方法

好的  我会尝试的  谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top