求助:单片机通过串口向PC传送双字节有符号数据的问题

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-01
关于51单片机通过串口发送数据的问题 我没有用循环发送 但是连上电脑后单片机就不断的向pc机发送数据

呵呵,您使用的是C8051F系列单片机。因此,初始化时应当禁用WDT。
在初始化里增加以下语句:
PCA0MD &= ~0x40;
PCA0MD = 0x00;
这样,单片机就不会不停地复位了。

单一字节发送接收可以,只能说明软件、硬件,基本调通;
要想传送数据,还必须制定通信协议。

发送方,先向对方呼叫,待收到正确的回音后;

再向对方发送“数据的字节数”;

再向对方连续发送数据字节串,对方收到,存放到一个缓存空间;

发送方,最后向对方发出校验字节(一般是累加和);

待收到正确的回音后,一次数据通信才算结束。

16位的有符号数据赋值给一个32位字长的有符号类型的变量,
16位的-1在32位字长的有符号int数据里表示65535,这如何解决?
----
在32位字长的数据里,进行判断:
如果,这个32位数,大于 32767,它就是负数。
如:32768~65535,就都是负数。

再用 -65536,加上这个数(32768~65535),
即可得出,这个数,所代表的正确数字:-32768 ~ -1。

做个标志,确认是单片机里传来的数据,再处理转换成32位数

PC程序里判断传入数据是否大于32767,然后做相应加减添加符号,

  • 如何将单片机上的数据传输到电脑上?
    答:通过max232串口。将单片机的数据通过RXD和TXD与PC进行通信;其实你也可以通过下载线和串口助手(或者自己写上位机界面),上传数据;买一根USB转串口线,接到电脑USB接口上,上传数据也可以;可能还有其他方式。。。
  • 单片机与PC机的串行通信问题
    答:现在我们已经将程序写好,并烧入了单片机芯片,下面我们要做的就是用串口线将增强型51实验板和PC机相连起来,同时给实验板接上电源,然后就是通过PC机软件来发数据了,要在PC机上向串口发送数据一定要借助相应软件,打开光盘内附带的串口调试软件,它设置方便、灵活,界面简洁明。因为我们得告诉实验板来显示哪些数字,程序的...
  • 51单片机用串口跟pc通信进行收发数据
    答://代码来自 单片机小精灵v1.3//波特率9600 11.0592晶振 方式2#include <reg51.h>void InitUART(void){ TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; ES = 1; TR1 = 1;}void SendOneByte(unsigned char c){ SBUF ...
  • pc机与51单片机的串口通信
    答:电脑发送也只能一个字节一个字节发送。所以,接收也是一个字一个字节接收的。接收完再组合起来就可以了。例如:rec_buf[x++]=SBUF;if(x==2) //接收完成 { int_x= rec_buf[1]*256+rec_buf[0]; //组成2字节数据,再显示 }
  • 单片机与PC机串口通讯
    答:1,你的程序delay是如何实现的,是不是长时间占用CPU资源的?因为串行数据传送是连续的,第一个数据ff接收到之后在SHUMA1()函数中delay了这么久再查询串口,之后的数据早就发送完毕了,你可能接收不到之后的了。这样可以解释为什么你一位一位发送的话显示没有问题。因为你手动发送的延时肯定>SHUMA1()...
  • 如何在单片机上编写程序,将单片机中的数据通过串口传输到电脑上...
    答:具体实现:1.通信协议格式 根据具体数据自定义 2.单片机部分 键盘处理程序,Flash读写程序,串口初始化程序,串口中断服务程序,通信协议解析程序 3.电脑部分 用VC++编一个软件,用于电脑上的操作,串口驱动,串口设置(自动还是手动),通信协议解析程序,界面显示,文件存储 ...
  • 使用51单片机,用串口向PC机发送一个字符。要求:把串口的程序下载到开...
    答:然后在电脑里也把串口调试工具的波特率字样 改为你想要的值 一般都是 115200或者9600,然后在串口调试工具里选择COM1或者2或者11或者等等,看看哪个串口有空!- PC机准备工作才算完毕- - 然后到单片机 开发板了-- 串口程序-- 不知道你用的是51哪个芯片-- 确定以后就去看串口的寄存器叫什么 比如叫 ...
  • 51单片机与PC机之间的硬件串口连接??? 具体的怎样连接???
    答:单片机通过TXD和RXD两条线 连接MAX232芯片后,转换电平,连接PC串口,一般是2、3脚,5脚是地线。一共三根线。单片机的TXD接电脑的RXD,单片机的RXD接电脑的TXD。地线接地线。VB中要用MSCOMM控件,设置相同的波特率,起始、结束位、校验位,数据位等。VB的MSCOMM控件设置好端口号,然后PORTOPEN= true 就...
  • 如何进行单片机与PC机的串口数据读取通信?
    答:软件要有一个串口调试工具.至于程序就是 (1):设置串口相关寄存器 注意波特率设置 (2):把数据放在sbuf里面 (3):检查是否发送完毕没完等待 发完了就继续放 各种单片机设置方法不一样就给你一个51 的程序你参考一下://wx原创 串口调试程序 向pc发送数据 用于调试观察数据 include<reg52.h...
  • 利用串口实现单片机与PC超级终端通信
    答:备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]/***/ void UART_init (void){ EA = 1; //允许总中断(如不使用中断,可用//屏蔽)ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x...