找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10541|回復(fù): 6
收起左側(cè)

SSCOM32串口調(diào)試助手顯示W(wǎng)riteFile function failed(win errorcode:6)

[復(fù)制鏈接]
ID:609281 發(fā)表于 2021-2-10 01:04 | 顯示全部樓層 |閱讀模式
         各位大牛,小弟今天編寫C51串口中斷程序時,遇到了一個問題,就是用SSCOM32串口調(diào)試助手發(fā)送程序,顯示成這樣:
1.png
     請問這是什么原因呢?本人的開發(fā)板是普中科技的,數(shù)據(jù)線也連接得好好的,網(wǎng)上有人說要裝虛擬串口。

        以下是小弟的代碼,還請大家指點!感激不盡!

  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;     //設(shè)定T1定時器工作方式2
  9.           TH1  = 0xfd;     //T1定時器裝初值
  10.           TL1  = 0xfd;     //T1定時器裝初值
  11.           TR1  = 1;        //啟動T1定時器
  12.           REN  = 1;        //允許串口接收位
  13.           SM0  = 0;        //設(shè)定串口工作方式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)     //當(dāng)檢測到flag為1時,說明程序已經(jīng)執(zhí)行過串口中斷服務(wù),即受到了數(shù)據(jù)
  24.                                  {
  25.                                             ES = 0;       //接下來要發(fā)送數(shù)據(jù),若不關(guān)閉串口中斷,當(dāng)發(fā)送完數(shù)據(jù)后,單片機(jī)同樣會申請串口中斷
  26.                                             for(i = 0;i < 6;i ++)
  27.                                       {
  28.                                                                   SBUF = table[i];       //發(fā)送數(shù)據(jù)
  29.                                                                   while(!TI);            //等待發(fā)送完畢
  30.                                                                   TI   = 0;      
  31.                                                         }
  32.                                                         SBUF = a;                  //發(fā)送從PC端接收到的數(shù)據(jù)
  33.                                                         TI   = 0;
  34.                                                         ES   = 1;                  //發(fā)送完畢后,重新打開串口中斷
  35.                                                         flag = 0;
  36.                                  }
  37.                 }
  38. }

  39. void ser() interrupt 4
  40. {
  41.     RI   = 0;
  42.           a    = SBUF;    //接收數(shù)據(jù)
  43.           flag = 1;
  44. }
復(fù)制代碼

回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2021-2-10 09:35 | 顯示全部樓層
跟你的c51代碼一毛錢關(guān)系都沒有,是軟件和win通訊出錯了,原因我也不清楚。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:883031 發(fā)表于 2021-2-10 10:06 | 顯示全部樓層
樓上說得對,和你的軟件無關(guān)。
回復(fù)

使用道具 舉報

ID:609281 發(fā)表于 2021-2-10 14:41 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-2-10 09:35
跟你的c51代碼一毛錢關(guān)系都沒有,是軟件和win通訊出錯了,原因我也不清楚。

好的,感謝提醒
回復(fù)

使用道具 舉報

ID:609281 發(fā)表于 2021-2-11 19:21 | 顯示全部樓層
后來我下載了虛擬串口軟件,增加了兩個串口,就沒有WriteFile Function fail,應(yīng)該是由于U盤驅(qū)動,C51開發(fā)板數(shù)據(jù)線,鼠標(biāo)占滿了串口,而串口助手的寫功能也需要占用一個串口,導(dǎo)致寫功能失敗,另外波特率也一定要設(shè)置好,T1定時器的溢出率要和波特率對應(yīng)上,否則會出現(xiàn)亂碼。
回復(fù)

使用道具 舉報

ID:77589 發(fā)表于 2023-9-12 15:28 | 顯示全部樓層
Hephaestus 發(fā)表于 2021-2-10 09:35
跟你的c51代碼一毛錢關(guān)系都沒有,是軟件和win通訊出錯了,原因我也不清楚。

正解!或許USB轉(zhuǎn)TTL工具沒有裝驅(qū)動,或許重啟一下電腦就好了
回復(fù)

使用道具 舉報

ID:1092275 發(fā)表于 2023-9-13 16:42 | 顯示全部樓層
軟件和win通訊出錯了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表