Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 9378|回復: 2
打印 上一主題 下一主題

RS232及超級終端機相關問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-5-7 01:21:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我的程式是由發射端發射資料到接收端,接收端用RS232與電腦連接
我是設定在P2為0X0C時,才將E的資料傳給電腦,並在RS232有在傳給電腦時P3_7會閃爍
以下是我接收端的程式,請大大們幫我看看,麻煩大大們了,謝謝大大們
重點是下面的部份,那是我自己所寫的RS232傳輸程式,看看哪裡有問題,因為在使用超級終端機進行傳輸時出現無法開啟COM1
我的RS232是25隻腳的,是使用HIN232的IC,我RS232只接地2、第3、第7隻腳,分別接TXD、RXD、接地
#include<AT89X51.H>
#define wled P3_7
void send(unsigned char E);
void delayms(unsigned int time)  ;
unsigned char A; //宣告一個字元A
unsigned char C; //宣告一個字元C
unsigned char D; //宣告一個字元D
unsigned char E; //宣告一個字元E
main()  //主程式
{  
TMOD=0X20;
   TH1=230;
   TL1=230;
   TR1=1;
   SCON=0X40;
   TI=1;
while(1)  //重複執行以下敘述
{
P2=0X0A; //測試時所假設的數值
if(P2==0x0a) //若P2為0x0a時,做以下動作
{
D=P2;//將P2的值存到字元D
}
P2=0X0A; //測試時所假設的數值
if(D==0x0a&&P2<=0x0F)//當D為0X0A以即P2為小於或等於0X0F時,做以下動作
{
  
P1=P2;//將P2的值存到字元A
  A=P1;
}
P2=0X0B; //測試時所假設的數值
if(P2==0x0b)//當P2為0X0B時,做以下動作
{
C=P2;//將P2的值存到字元C
}
P2=0X03; //測試時所假設的數值
if(C==0x0b&& P2<=0x0F)//當D為0X0B以即P2為小於或等於0X0F時,做以下動作
{
P0=P2<<4;//將P2的值向左移四位後存到字元B
B=P0;
}
P2=0X0C; //測試時所假設的數值
if(P2==0x0C)//當P2為0X0C時,做以下動作
{
E=A|B;//做A or B,即為將A與B的數值做結合,將所結合的數值傳到位址E
send(E) ;//將E位址內的數值傳出去
wled=0;delayms(50);
wled=1;delayms(50);
}
}
   }
  }
void delayms(unsigned int time)        //延遲的副程式
{
unsigned int  n;
while(time>0)
{
n=120;
while(n>0)  n--;
time--;
}
}
void send(unsigned char E)
{
TI=0;
SBUF=E;
while(TI==0);
}

2#
發表於 2009-8-17 14:09:40 | 只看該作者
如果我沒記錯.2,3,5才對吧.5才是接地,會是接地問題嗎?
3#
發表於 2009-8-17 15:01:45 | 只看該作者
COM1 無法開啟應該是PC端的問題吧,
這和你有沒有接上 8051 沒有關係喔,
如果成功開啟應該是什麼事情都沒發生,靜靜的等著指令...

要是 8051 有送資料的話,可以在開始的地方送出一個字串,
這樣測試的時候可以看看PC不能收到東西...
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-27 23:59 , Processed in 0.219664 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表