永发信息网

单片机接收外部脉冲并计数,把计数得到的数据通过串口发送给电脑,大神快来看看我的程序哪里有问题

答案:3  悬赏:10  手机版
解决时间 2021-03-03 06:31
单片机接收外部脉冲并计数,把计数得到的数据通过串口发送给电脑,大神快来看看我的程序哪里有问题
最佳答案
试试看:
void send(uchar i)
{
SBUF = i / 1000 + 0x30;
i = i % 1000;
while (TI==0);
TI = 0;
SBUF = i / 100 + 0x30;
i = i % 100;
while (TI==0);
TI = 0;
SBUF = i / 10 + 0x30;
i = i % 10;
while (TI==0);
TI = 0;
SBUF = i + 0x30;
while (TI==0);
TI = 0;
SBUF = ','; //发送一个逗号
while (TI==0);
TI = 0;
}

void main()
{
init();
while(1) {
show(Count);
send();
}
}

显示一次、发送一次,试试看。

也可能发送的太频繁。
那就显示100次,发送一次,试试看。追问不行啊,还是很快的显示,我觉得是那个显示是动态显示,把send()跟它放一块按我写的那个应该没有问题的,但是不知道怎么回事就是显示很快。
另外一个问题显示的不是对应的十六进制有解决办法吗?追答void main()
{
uint nnn;
init();
while(1) {
show(Count);
if(nnn != Count) { send(); nnn = Count;}
//仅当Count发生变化时,发送一次。
}
}追问嗯,明天试试,先谢谢啦
全部回答
首先确定你的串口设置是否正确:让你的串口发一个固定数字,甚至可以写一个0~0xff轮训着发的函数,看串口调试助手是否是程序中发的数据,如果不是则说明你的串口使用不对(配置,或者串口调试助手与其的波特率没设置正确),如果数据对则说明串口没问题,是整个中有BUG,这个查找就麻烦了。
你这程序有问题,“void show(uchar i)”其中形参i是uchar型(8位),而在这个函数里面你却有“i/1000”这样的操作,我相信你的编译器肯定会给这条语句报警的。追问编译没有错误,就连警告都没有……我试试
void send()
{
SBUF=Count;
while(TI==0);
TI=0;
}
可能是这个函数有问题追问这是什么地方?追答串口发送是需要时间的,所以你要等发送完一个后在发送下一个,
一旦发送数据就很快的发送不停的发,这是必定的,while(1)不停循环,自然是不停的send,所以串口助手是一直在接收数据。实现计一次数串口发送一次数据,解决的办法就是在中断里发送
while(1) {
show(Count);
}
void Counter0() interrupt 0
{
EX0=0;
Count++;
send();
EX0=1;
}
发送的还不是十六进制对应的数,这是因为发送的本来就不是十六进制,而是8位二进制数,你说的可能是串口助手里以十六进制数显式还是以字符格式显示追问嗯,明天试试,我也知道那个while是不停的循环,所以加了个for,先谢谢了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求lol完整的段位名称,如英勇黄铜
深圳前海恒捷投资管理有限公司顺德分公司我想
在血液成分中数量最多的血细胞是BA. 血浆B.
北大附中南宁分校高考成绩
任沟村这个地址在什么地方,我要处理点事
如何将txt转换成excel,使用数据导入时原本的T
家家惠便利店天津路店我想知道这个在什么地方
苹果5id密码注销从新设置用户ID密码、会不会
四年级下册语文25课告诉我们的道理
课外阅读用英语怎么说
纷繁的世界和多彩的生活中,我们拥有一个共同
车险在使用地区买,非上号的城市买,行吗?
幼儿园手工制作用橡皮泥怎么做美食
隆安县飞越幼儿园地址在什么地方,想过去办事
我身高一米八八,体重七十八公斤,目前练了两
推荐资讯
查理 卓别林的电影 有一个电影片段是把帽子当
美国二战经典《凯利的英雄们》这部电影怎么下
PIFA是什么意思
西安市中海驾校报名处地址在哪,我要去那里办
如何自制卫星接收天线?
easeyes-e105能听歌吗
苹果6手机升级后微信老是慢半拍,别人发的信
用土豆、黄瓜等敷脸一般敷多长时间最好呢
杭州龙禧大酒店-室外游泳池地址有知道的么?
下列生物中属于竞争关系的是A. 猫和老鼠B. 蚂
我因涉嫌盗窃 没有事实被刑事拘留一个月后无
请问理综训练 21道选择 3道选作多长时间为宜?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?