線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2505
推到 Plurk!
推到 Facebook!

8051怎麼將從PC讀取到的值正確執行?

缺席
Furtise
一般會員


發表:1
回覆:3
積分:0
註冊:2007-02-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-25 14:51:56 IP:218.170.xxx.xxx 訂閱
我的構想是將從BCB讀取來的字串

如:
pc-->1234567傳給8051
8051將值一個一個分開讀取-->1、2、3...的讀取
並且副程式print_1()能按照從SBUF中讀取到的值
正確的執行列印出抓取值的個數(1就執行1次 2就執行2次...)
最後再將值回傳給pc
所以PC會收到"1234567"


我試寫了好多次
可是每次幾乎都不太成功
因為我的觀念還不是很熟
所以
拜託各位高手幫忙,拜託!
請高手幫我看一下我的程式碼(感謝~)


#include
#include
//#define n=5
sbit wled = P3^7;
/*-----------------------------*//* 時間延遲 */
delay(int d)
{
int i, j;
for(i=0; i for(j=0; j<100; j ) ;
}
/*---------------------------*//* 設定rs-232通訊協定<9600,n,8,1> */
init_rs232()
{
SCON=0xF0;
TMOD=0x20;
TH1 =0xFD;
TR1=1;
TI=1;
}
/*----------------------*//* 傳送資料 */
tx_char(unsigned char c)
{
while(1) if(TI==1) break;
TI=0;
SBUF=c;
}
/*---------------------*//* 接收資料 */
char rx_char()
{
while(1) if(RI==1) break;
RI=0;
return SBUF;
}
/*----------------------------*//* 印出所執行的結果 */
print_1(int b)
{
int i;
b=(bI) 1;
for(i=0;i {
printf("OK_\n");
}
}
/*-----------------------*/
main()
{
char a;
init_rs232();

while (1)
{

a=rx_char();
print_1(a);
tx_char(a);
}
}
/*----------------------*/




版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-02-25 16:15:20 IP:219.70.xxx.xxx 未訂閱
1> 51  印的出東西嗎? or .....你從那邊印出來?
2> 請善用中斷, 你這邊的 while 會讓51一直在傳東西給PC.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
Furtise
一般會員


發表:1
回覆:3
積分:0
註冊:2007-02-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-02-25 19:28:07 IP:218.170.xxx.xxx 訂閱
印出來的值是在PC端的BCB上顯示

中斷該怎麼使用??
抱歉= = 我對這塊還是個新手
請問中斷的話該怎麼修改?

還是哪裡有範例程式可以讓我學習...
請告訴我
我會認真學習
Furtise
一般會員


發表:1
回覆:3
積分:0
註冊:2007-02-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-03-04 09:46:13 IP:218.170.xxx.xxx 訂閱
這部份的問題我用陣列解決了
在主程式裡
用陣列儲存接收值
並將陣列裡的值傳回給pc
大致上看起來是沒有錯誤的


可是很多人還是說要用中斷的方法
那麼用陣列就不好了嗎?

saiki
一般會員


發表:3
回覆:26
積分:5
註冊:2008-09-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-30 18:34:41 IP:121.254.xxx.xxx 訂閱
SCON 怎麼會是 0xF0;
這樣就這MODE 3了耶
怎麼不用MODE 1
改成 0x50 試試看吧
vans007
一般會員


發表:9
回覆:11
積分:9
註冊:2008-12-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-30 19:43:54 IP:61.230.xxx.xxx 訂閱
這個嘛,很簡單押
這裡有小弟我的實作
希望可以幫助到你

這實作為,在pc端輸入值後,在8051的LCD上印出,delay之後再由8051送給PC端
http://seelectron.phpbb.net/viewforum.php?f=13
如有問題可與我聯絡
shiming73@gmail.com
系統時間:2024-04-29 2:05:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!