全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2326
推到 Plurk!
推到 Facebook!

PIC 單晶片 收資料抓字元的問題

答題得分者是:阿信
sindyvirgo
一般會員


發表:1
回覆:2
積分:0
註冊:2008-08-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-08 10:27:44 IP:203.73.xxx.xxx 訂閱
在下最近開始接觸單晶片,所使用的是PIC18f4620這顆晶片,而我選擇了比較容易使用的C語言來開發。
我是想問C程式寫法上的問題,剛學C不久 ~ 很多例子還無法實際上戰場應用 !
我現在可以用UART收GPS的資料然後再送出去 ~ (只是用來測試)
片段如下
char Msg_Temp;
RDA_isr()
{
gets(Msg_Temp);
printf("%s\n\r",Msg_Temp);
}

如今我要讓資料存進單晶片裡面,然後只抓我要的字元丟出來就好 !!
這樣的程式要怎麼寫呢?抓字元的程式要去看哪一章節的C?
我手邊的C課本都是純C,或是8051 of C,詳看了以後都是屬於第一種丟什麼傳什麼的
並沒有提及如何抓取字元,C語言的指標概念裡面有提到抓取字元,但又好像無法使用
在單晶片上?希望有高手可以給我個方向 !!

目前我可以做道存資料進去,片段如下 ~
char Msg_Temp[512];
RDA_isr()
{
gets(Msg_Temp); // GPS資料都丟進去
//我該如何去寫這段抓取我要的字元的程式 ?
}

我只要知道我該如何抓取字元就好了 ~ 抓到我要的然後丟出來,不一定要考慮GPS為範例 !!


starlin
一般會員


發表:1
回覆:4
積分:1
註冊:2008-12-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-08 11:29:27 IP:210.243.xxx.xxx 訂閱
您要不要直接上去Micro Chip找一下UART的demo code呀~

或是改用8051的會不會簡單一點....^^
sindyvirgo
一般會員


發表:1
回覆:2
積分:0
註冊:2008-08-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-08 13:39:29 IP:203.73.xxx.xxx 訂閱
microchip那邊我看過了,都是組語的source code,另外單晶片指定要用 pic 的,這就沒辦法囉 !
不過我主要問的是關於C語言如何去抓字元而已 !
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-09 18:16:16 IP:60.248.xxx.xxx 訂閱
這個其實有點複雜,
基本上暫存區的大小應為最長指令的2倍。

假設今天有總共只有兩個指令要比較,
且長度相同,
分別為「AB/」與「AC/」,
關鍵字元是結束的「/」,
所以要在每次收到資料時判斷「/」,
若是「/」,則再判斷前一筆與前前一筆的資料
是否為「AB/」或「AC/」。

若是則輸出,否則不輸出,
然後清空暫存區,指標歸零。

以下是一個參考的程式碼,
縮排使用全形空格。

char Msg_Array[16];
char Msg_Temp;
char i; //指標

i=0;

RDA_isr()
{
gets(Msg_Temp); // GPS資料都丟進去
//我該如何去寫這段抓取我要的字元的程式 ?
Msg_Index ; //指向下一個位址
Msg_Array[i]=Msg_Temp; //存入陣列
if (Msg_Temp=='/') { //修改成你要的字元
if (Msg_Index>=3) { //至少要已收到3個字元
if ( (Msg_Array[i-1]=='A' && Msg_Array[i-2]=='B')
|| (Msg_Array[i-1]=='A' && Msg_Array[i-2]=='C') ) {
printf("%s\n\r",Msg_Array[i-2]); //送出前前一個字元
printf("%s\n\r",Msg_Array[i-1]); //送出前一個字元
}
}
i=0; //指標清零
}
}
sindyvirgo
一般會員


發表:1
回覆:2
積分:0
註冊:2008-08-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-16 13:40:59 IP:203.73.xxx.xxx 訂閱
感謝板大的指導,我最近一直不斷的在 try,目前只能到處拼湊人家的function @@,是有解決依部分問題了
系統時間:2024-04-28 12:04:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!