請問有關89C61用RS232跟電腦傳資料的問題~~ |
答題得分者是:㊣
|
trowayui
一般會員 發表:3 回覆:7 積分:2 註冊:2005-05-15 發送簡訊給我 |
原本在用89C61傳資料給電腦的時候~都是用4.8K的BAUD RATE ~這樣資料都正確~但是由於要傳送差不多5M的資料~所以要提高BAUD RATE不然會傳很久....但是換成其他頻率的BAUD RATE就會整個資料就錯誤了~(電腦的接收程式都有調成相對應的頻率)~還是因為我用12M的震盪....以下是我的程式 這是我的主程式~其中rs232.h是上面那兩個副函式的~我震盪是用12M~RS232IC是用HIN232CP~
#include "io51.h"
#include "rs232.h"
main()
{
char start[]="READING.....";
int s;
set232(0xfa);
for(s=0;s<12;s )
trdata(*(start s));
while(1);
}
//設定BAUD RATE
void set232(unsigned char baud)
{
PCON=0x00;
SCON=0x50;
TMOD=0x20;
TH1=baud;
TR1=1;
}
//傳送資料
void trdata(unsigned char sbufdata) //rs232設定
{
SBUF=sbufdata;
while(TI!=1);
TI=0;
} 我現在是送一個陣列去給他測試~~但是除了4.8K能收到正確的資料以外~其他都是錯誤的~不知道這是什麼問題~~希望各位大大幫我看一下~~謝啦
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
trowayui
一般會員 發表:3 回覆:7 積分:2 註冊:2005-05-15 發送簡訊給我 |
|
trowayui
一般會員 發表:3 回覆:7 積分:2 註冊:2005-05-15 發送簡訊給我 |
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
依你的Timer模式與UART模式, 鮑率計算如下: 鮑率=振盪頻率/[384x(256-TH1)] 當振盪頻率=11.0592 MHz時可以清楚由鮑率須求算出TH1 當振盪頻率=12.0 MHz, TH1=0xFA(250), 實際鮑率應為5208 bps
其他的值你可以依公式算算,都不會是剛好2400 bps, 9600 bps....等
所以PC接收到的都是錯誤的.而設4800 bps時, PC能接收到是因為它在
一定的誤差範圍內可接受, 超過就不行.
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
trowayui
一般會員 發表:3 回覆:7 積分:2 註冊:2005-05-15 發送簡訊給我 |
|
trowayui
一般會員 發表:3 回覆:7 積分:2 註冊:2005-05-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |