完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
郭天祥那个讲串口的视屏里有个作业,题目是:以2400bps从计算机发送任一字节数据,当单片机收到该数据后,在此数据前加上一序号然后连同此数据一起发送至计算机,当序号超过255时归零。我写的程序在串口助手上不能正确运行,序号显示有问题,情况见图,代码如下:
#include unsigned char a,i,flag; void init() { EA=1; ES=1; TMOD=0x20; TH1=0xf4; TL1=0xf4; TR1=1; REN=1; SM0=0; SM1=1; } void main() { init(); while(1) { if(flag==1) { flag=0; ES=0; i++; if(i>255) i=0; SBUF=i; //传递序号 while(!ti); TI=0; SBUF=a; //传递收到的数据 while(!TI); TI=0; ES=1; } } } void serial() interrupt 4 { RI=0; a=SBUF; flag=1; } 求大神指点
|
|
相关推荐
12个回答
|
|
|
有两个问题:
第一点: i++; if(i>255) i=0; i 是unsigned char内型的变量,取值范围为0~255,所以 if(i>255) 永远不会成立。稍作修改即可, /****************************************************************************************************************************** if(flag==1) { flag=0; ES=0; SBUF=i; //传递序号 while(!TI); TI=0; SBUF=a; //传递收到的数据 while(!TI); TI=0; ES=1; i++; // if(i==255) i=0; //注意这里不需要判断 } ***********************************************************************************************************************************/ 第二点: 串口显示方式设置问题,由截图分析,因为你的程序是以整数的形式发送的(SBUF=i),所以串口要设置为十六进制显示。正常显示内容应该是这样,4c 00 4C 01 4c 02 4c 03 ..........4c ff,然后重复。注意这里的4c就是‘L’,也就是字母L的ascii码的十六进制表示形式。 评分 |
|
|
|
|
|
不应该是unsigned int i 吗?
|
|
|
|
|
|
|
|
|
|
|
|
调试助手选择十六进制显示,就是把单片机发过来的一个字节当作一个整数(0~255),然后以十六进制方式显示该数。 调试助手选择文本显示,就是把单片机发过来的一个字节当做某个字符的ASCII,然后显示该字符。 下面分两种情况讨论: 1.你写SBUF=1,表示你发送的整数1,调试助手接收到的也是整数1。当你选择十六进制显示时,接收窗口显示结果是01(0x01);而当你选择文本显示时,接收窗口显示结果是ASCII为1的某个字符,你可以去查ascii表。 2.你写SBUF=‘1’,实际发送是的是‘1’的Ascii码,调试助手接收到的是整数49。当你选择十六进制显示时,接收窗口显示结果是31(0x31);而当你选择文本显示时,接收窗口显示结果是ASCII为49的某个字符,也就是‘1’。 不知道我这样说,你明白不? |
|
|
|
|
|
题目要求是超过255就清零,也就是0~255,而unsigned char 的范围正好是0~255,所以任然可以用unsigned char。 |
|
|
|
|
|
懂了,谢谢你。
|
|
|
|
|
|
怎样把十六进制变成十进制
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
学习学习,我才开始
|
|
|
|
|
|
好好学习好好学习
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:51 , Processed in 0.751024 second(s), Total 65, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6844