您尚未
登入
註冊
忘記密碼
搜尋
贊助
贊助本站
數位公仔
紀念T恤
紀念馬克杯
廣告
刊登廣告
廣告價格
線上申請刊登
用雅幣刊登
免費刊登
目前客戶
簡訊
簡訊說明
購買金幣
發送簡訊
預約簡訊
發送記錄
好友通訊
罐頭簡訊
論命
數位論命舘
免費排盤工具
葫蘆墩 優生造命
葫蘆墩 八字命書
影音論命(葫蘆墩)
影音占卜(葫蘆墩)
購買金幣
星座分析
孔明神數
周公解夢
星僑線上論命
娛樂
影 像 行 腳
數 位 造 型
數 位 畫 廊
心 情 日 記
公 益 彩 券
送生日蛋糕
俄羅斯方塊
四 川 省
猜 數 字
比 大 小
泡 泡 龍
許 願 池
萬 年 曆
經 期 計 算
體 重 測 量
音 樂 點 播
衛 星 地 圖
時間戳字幕
男女聊天室
求助
論壇守則
會員等級
會員權限
語法教學
常見問題
最新活動
打工賺雅幣
首頁
新版首頁(全頁)
傳統首頁(全頁)
新版首頁(選單)
傳統首頁(選單)
MyChat 數位男女
命理風水
15
星僑五術軟體
4
葫蘆墩命理網
5
命理問答
9
四柱八字
1
紫微斗數
1
姓名學
手面相
易經占卜
1
風水研討
1
擇日&三式
1
西洋占星
無視論塔羅牌
10
修行&武術
1
中醫研討
五術哈啦
1
電腦資訊
13
硬體討論
5
超頻 & 開箱
3
數位生活
2
PDA 討論
手機討論區
軟體推薦
2
軟體討論
6
Apple 討論
1
Unix-like
網路&防毒
2
程式設計
網站架設
4
電腦教學資源
生活休閒
14
休閒哈啦
7
感情世界
2
上班一族
5
國考&法律
7
生活醫學
4
運動體育
1
單車討論
1
釣魚討論
6
旅遊討論
4
天文觀星
3
攝影分享
8
圖片分享
4
數位影視
2
笑話集錦
3
興趣嗜好
13
文學散文
7
繪圖藝術
1
布袋戲
3
動漫畫討論
3
美食天地
6
理財專區
心理測驗
1
汽、機車
3
寵物園地
模型&手工藝
4
花卉園藝
魔術方塊
獨輪車專區
電玩遊戲
13
遊戲歡樂包
4
CS討論
8
Steam
3
MineCraft
2
東方Project
英雄聯盟LOL
1
單機遊戲
2
WebGame
3
線上遊戲1
6
線上遊戲2
5
電視遊樂器
1
掌上型遊戲
2
模擬器遊戲
1
工商服務
6
虛擬城市
7
好康分享
新品販售
二手拍賣
1
租屋&找屋
工商建議區
1
站務專區
10
最新活動
活動成果
數位造型
心情日記
個人圖庫
新人報到練習
論壇問題建議
1
榮會及電子報討論
-最近版區-
-最近瀏覽-
»
程式設計
»
如何用RS232傳送HEX檔?
手機版
訂閱
地圖
簡體
您是第
20709
個閱讀者
<<
上頁
1
2
3
4
5
6
下頁
>>
(共 6 頁)
可列印版
加為IE收藏
收藏主題
上一主題
|
下一主題
ken0127
級別:
小人物
x0
x0
分享:
▼
發現沒有辦法回傳值
電路也檢查過了
不知道是什麼原因…
程式如下
main()
{
char buf;
int i;
SCON = 0x52;
TMOD = 0X21;
TH1 = 256-(28800/9600);
TR1 = 1;
TI = 1;
P1 = 0x00;
while(1)
{
if(RI == 1)
{
TI = 1;
buf = SBUF;
i = atoh(buf);
P1 = seven_seg[ i ];
delay10ms(50) ;
RI = 0;
do
{
}while(!TI);
TI=0;
SBUF = buf;
}
}
}
是回傳程式有誤嗎?
x
0
[30 樓]
From:未知地址 |
Posted:
2007-03-25 01:56 |
cmovies
級別:
小人物
x0
x20
分享:
▲
▼
你把TI的定義弄錯了. 你的程式變成收到一個Byte就停了. 因為 TI 永遠不會自動清為零
當 51 將 SBUF 的資料送完時(傳送 stop bit), 會自動將 TI 設為 1, 而不是清為 0
不過你的程式只是測試而已, 也不需要等是否傳送完. 反正接收也要相同的時間才會有下一個 byte
while(1)
{
if(RI == 1)
{
buf = SBUF;
i = atoh(buf);
P1 = seven_seg[ i ];
delay10ms(50) ;
RI = 0;
TI=0;
SBUF = buf;
while (!TI) ; // 純測試的話不一定需要這行
}
}
x
0
[31 樓]
From:臺灣中華電信HINET |
Posted:
2007-03-25 13:19 |
ken0127
級別:
小人物
x0
x0
分享:
▲
▼
改完之後還是沒有回傳值
問了學長
他說之前的學長有提到有關於電腦com1那邊的資源設定要注意到
但他說他也不太清楚
但檢查之後發現電路也沒錯...
x
0
[32 樓]
From:未知地址 |
Posted:
2007-03-25 15:33 |
ken0127
級別:
小人物
x0
x0
分享:
▲
▼
我將測試rs232的程式加入了一小段
燒錄8052
功能多了將高位跟低位的值都show出來
發現輸入1,七段顯示器會顯示71
代表從pc端傳出來的值原本就是不對的…
用VB傳送的不是都是ASCII碼嗎…數字1應該是31H呀....
x
0
[33 樓]
From:未知地址 |
Posted:
2007-03-25 16:24 |
cmovies
級別:
小人物
x0
x20
分享:
▲
▼
我記得你之前做RS232測試時不是會回傳嗎???
如果你覺得PC送的資料有問題有兩種方式可以確定:
1. 使用 Serial Port Monitor 軟體來監看PC對COM Port的動作
2. 使用另一個COM Port來接收這個COM Port的資料
你有用過上次那個RS232 PC 測試軟體來送資料嗎???
Serial Port Monitor 軟體
http://www.microsoft.com/technet/sys...ies/portmon.mspx
x
0
[34 樓]
From:臺灣中華電信HINET |
Posted:
2007-03-25 17:14 |
ken0127
級別:
小人物
x0
x0
分享:
▲
▼
從軟體上監看
輸出的值是正確的沒錯
但我在接收到SBUF時的值卻是錯的
這是什麼情形…
鮑率也都設成9600但輸入的值卻是錯的....
後來我加入了底下程式
if( getChar >= 0x41 && getChar <= 0x4f ) getChar = getChar - 0x20;
if( getChar >= 0x70 && getChar <= 0x8f ) getChar = getChar - 0x40;
if( getChar >= 0xb0 && getChar <= 0xcf ) getChar = getChar - 0x60;
if( getChar >= 0xf0 && getChar <= 0xfe ) getChar = getChar - 0x80;
雖然傳的資料是錯的
但是有規則
而用軟體監看傳資料的狀況
發現大大您之前寫的vb程式
似乎有些許ug
就是你設定每行一次最多傳送長度為32
但在hex檔裡每行幾乎都當過32
當超過時
他會直接將後面的截掉加入0x0a,好像是換行指令
然後接著下一行傳
所以當傳到最後存的資料是不正確的....
[ 此文章被ken0127在2007-03-25 20:56重新編輯 ]
x
0
[35 樓]
From:未知地址 |
Posted:
2007-03-25 20:12 |
cmovies
級別:
小人物
x0
x20
分享:
▲
▼
接收的資料會錯, 如果送的沒問題只有收的出錯了.
收的會錯應該是格式不對速率不對或是 MAX232 有問題.
你有檢查你的 Crystal 真的是 11.0592 MHz 嗎?
如果你有示波器的話也許可以量量看波形對不對.
你有打開 Options -> Show Hex 來確定嗎? 我剛試了一下好像沒問題啊!
還有 Edit -> Max Output Bytes 要設定 128 這樣才能看到所有 Hex 資料
x
0
[36 樓]
From:臺灣中華電信HINET |
Posted:
2007-03-25 21:28 |
ken0127
級別:
小人物
x0
x0
分享:
▲
▼
原來是我沒打開設為128
所以看的都短短的資料,以為後面被截掉
我現在用的是12.0000 M HZ
而ICE上面的也是12.0000MHZ
難道是這個原因嗎?
那我改成11.0592好了,剛好手邊有一顆
那我把ICE設為使用外頻模式來試試
x
0
[37 樓]
From:未知地址 |
Posted:
2007-03-25 21:42 |
ken0127
級別:
小人物
x0
x0
分享:
▲
▼
對不起…我錯了
原來真的是這個問題
現在收發正確的資料了
現下就來試試程式了…
謝謝大大....
x
0
[38 樓]
From:未知地址 |
Posted:
2007-03-25 21:48 |
ken0127
級別:
小人物
x0
x0
分享:
▲
但我不知道我的程式有沒有真的寫入記憶體內
因為在ice內的memory window裡頭去找那位置看不到我寫入的資料
*((unsigned char *)&pCode + 0 ) = getChar + 0x80; // high address
getHex();
*((unsigned char *)&pCode + 1 ) = getChar ; // low address
*pCode++ = getChar; //讀取並儲存data
但在ICE裡頭看監看pCode、getChar都有正確的值
我將偏移量設為8000
也就是pCode寫的位置會在8xxxh那邊
這樣是正確的嗎?
有在8k之後嗎?
因為用ice模擬,傳送完資料之後
p1有清除的動作,也就是我的程式有載完並有跳到8000h那個位置
但結果依然不是我想要的動作....
是我偏移量設錯了嗎?
x
0
[39 樓]
From:未知地址 |
Posted:
2007-03-25 22:20 |
<<
上頁
1
2
3
4
5
6
下頁
>>
(共 6 頁)
MyChat 數位男女
»
程式設計
Powered by
PHPWind
v1.3.6
Copyright © 2003-04
PHPWind
Processed in 0.061227 second(s),query:16 Gzip disabled
本站由
瀛睿律師事務所
擔任常年法律顧問 |
免責聲明
|
本網站已依台灣網站內容分級規定處理
|
連絡我們
|
訪客留言