完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位大侠看一下,我下面的程序为什么不能接收两个字节的数据呢?
#include #define uchar unsigned char #define uint unsigned int void rs232_init(); uchar flag,i,g,d; uchar code table[]="I get "; //***it led=P1^0; main() { rs232_init(); while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!ti); TI=0; } SBUF=g; while(!TI); TI=0; SBUF=d; while(!TI); TI=0; ES=1; flag=0; } } } void rs232_init() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void ser()interrupt 4 { RI=0; g=SBUF; d=SBUF; flag=1; } 我用串口调试助手调试时,上位机给单片机发送两个字节的数据,例如发送ck两个字母时,只接收到cc两个字母呢? |
|
相关推荐
19个回答
|
|
很久没用c语言了,研究研究先
|
|
|
|
本帖最后由 tangkii 于 2013-12-27 16:26 编辑
首先数据发送是一位一位发送的,串口接收也是一位一位接收的,当接收8位数据后,申请中断。 你的程序中,程序进入中断后,你用了g=SBUF,d=SBUF,程序之所以进入中断是因为串口接收到了八位数据,是八位数据,不是十六位数据,也就是你发送的字母ck中的c,k还没有发送完呢,所以g和d都被赋值了c,打印结果当然是cc了。 你要了解串口是接收八位数据后申请中断,你必须在下一个八位数据接收完(下一次中断到来前)以前取走这个数据,不然这个数据将会丢失。 我给你改 的程序如下,我定义一个宏N,N就是你每次发送的数据个数,然后一个数组,数组有N个元素,用于存储串口接受的数据。 当串口有中断时,我立即把这个数据存储到数组中,同时将数组指针指向下一位,然后当下一个中断来时重复上面步骤,直到接收数据个数到达N。 这里中断中程序不能太长,如果程序很长,我本次数据还没存储好,下一个数据已经到了,会丢失数据。
|
|
|
|
非常非常感谢你!!我想了一天了也没想通 |
|
|
|
谢谢,我也受益。 |
|
|
|
|
|
|
|
嗯,高手如云,一起学习,谢谢了
|
|
|
|
一起学习啊,O(∩_∩)O谢谢
|
|
|
|
楼上的高手,请问一下,用串口怎样显示从DS18B20读出的温度值呢?谢谢。
|
|
|
|
一个字节一个字节地接收,不能同时,爱收多少都可以。
|
|
|
|
用上crc16校验会更好。
|
|
|
|
谢谢楼主分享11111111111111111111
|
|
|
|
好难懂啊...不过收益匪浅...
|
|
|
|
收益匪浅..收益匪浅..
|
|
|
|
tangkii 发表于 2013-12-27 16:22 你好,我按照您的程序修改了一下,把“i get”的数组重新赋值,把多位数输入进去,为什么输出的数字会不同呢(已转换ascii码)我把num的位数调到3却可以正常输出,6位就不能了
|
|
|
|
嗯,高手如云,一起学习,谢谢了
|
|
|
|
tangkii 发表于 2013-12-27 16:22 高人啊,你写的这个程序能接收5个字节的数据么 |
|
|
|
|
|
想学习都应该建个微信群哈哈
|
|
|
|
一看楼主就知道是个初学者,数据的定义大小不分,建议去看下char,int等的范围
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
203 浏览 0 评论
761 浏览 0 评论
806 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
743 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1195 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11806 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 17:50 , Processed in 1.219772 second(s), Total 112, Slave 94 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号