找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8972|回复: 6
打印 上一主题 下一主题
收起左侧

SSCOM32串口调试助手显示WriteFile function failed(win errorcode:6)

[复制链接]
跳转到指定楼层
楼主
         各位大牛,小弟今天编写C51串口中断程序时,遇到了一个问题,就是用SSCOM32串口调试助手发送程序,显示成这样:

     请问这是什么原因呢?本人的开发板是普中科技的,数据线也连接得好好的,网上有人说要装虚拟串口。

        以下是小弟的代码,还请大家指点!感激不尽!

  1. #include "reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. unsigned char flag,a,i;
  5. uchar code table[] = "I get ";

  6. void init()
  7. {
  8.     TMOD = 0x20;     //设定T1定时器工作方式2
  9.           TH1  = 0xfd;     //T1定时器装初值
  10.           TL1  = 0xfd;     //T1定时器装初值
  11.           TR1  = 1;        //启动T1定时器
  12.           REN  = 1;        //允许串口接收位
  13.           SM0  = 0;        //设定串口工作方式1
  14.           SM1  = 1;       //同上
  15.           EA   = 1;        //开总中断
  16.           ES   = 1;        //开串口中断
  17. }

  18. void main()
  19. {
  20.     init();
  21.           while(1)
  22.                 {
  23.                      if(flag == 1)     //当检测到flag为1时,说明程序已经执行过串口中断服务,即受到了数据
  24.                                  {
  25.                                             ES = 0;       //接下来要发送数据,若不关闭串口中断,当发送完数据后,单片机同样会申请串口中断
  26.                                             for(i = 0;i < 6;i ++)
  27.                                       {
  28.                                                                   SBUF = table[i];       //发送数据
  29.                                                                   while(!TI);            //等待发送完毕
  30.                                                                   TI   = 0;      
  31.                                                         }
  32.                                                         SBUF = a;                  //发送从PC端接收到的数据
  33.                                                         TI   = 0;
  34.                                                         ES   = 1;                  //发送完毕后,重新打开串口中断
  35.                                                         flag = 0;
  36.                                  }
  37.                 }
  38. }

  39. void ser() interrupt 4
  40. {
  41.     RI   = 0;
  42.           a    = SBUF;    //接收数据
  43.           flag = 1;
  44. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2021-2-10 09:35 | 只看该作者
跟你的c51代码一毛钱关系都没有,是软件和win通讯出错了,原因我也不清楚。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:883031 发表于 2021-2-10 10:06 | 只看该作者
楼上说得对,和你的软件无关。
回复

使用道具 举报

地板
ID:609281 发表于 2021-2-10 14:41 | 只看该作者
Hephaestus 发表于 2021-2-10 09:35
跟你的c51代码一毛钱关系都没有,是软件和win通讯出错了,原因我也不清楚。

好的,感谢提醒
回复

使用道具 举报

5#
ID:609281 发表于 2021-2-11 19:21 | 只看该作者
后来我下载了虚拟串口软件,增加了两个串口,就没有WriteFile Function fail,应该是由于U盘驱动,C51开发板数据线,鼠标占满了串口,而串口助手的写功能也需要占用一个串口,导致写功能失败,另外波特率也一定要设置好,T1定时器的溢出率要和波特率对应上,否则会出现乱码。
回复

使用道具 举报

6#
ID:77589 发表于 2023-9-12 15:28 | 只看该作者
Hephaestus 发表于 2021-2-10 09:35
跟你的c51代码一毛钱关系都没有,是软件和win通讯出错了,原因我也不清楚。

正解!或许USB转TTL工具没有装驱动,或许重启一下电脑就好了
回复

使用道具 举报

7#
ID:1092275 发表于 2023-9-13 16:42 | 只看该作者
软件和win通讯出错了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表