想請教高手們兩個C語言code的問題.
|
||||
---|---|---|---|---|
初級會員
|
Hello 高手們日安,
我想請教你們兩個關於code的問題. 我用的是兩個PIC 16F877 各自在兩個2840 development board上面,然後彼此之間是沒有任何RS232 連結. 用的是wireless連結. 我現在想要做的是從PIC A 傳送一個數字給PIC B, 然後 PIC B收到之後,在將他收到的數字+1 然後再回傳回去給PIC A 然後PIC A收到之後再 +1 再傳給PIC B . 我這兩個code compile 不過. 然後他指出的錯誤, 我不是很了解,也不知道該從哪下手做改進. 麻煩高手 或是 明眼人指點一下. PIC A 傳送: #include<16F877.h> #use delay(clock=10000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) int a=1; int c=3; int z=101; int b,y,w; void main() { do { puts("con 11:1C:84:00:60:44"); //上面是硬體聯結指令,可以呼略這個 delay_ms(3); w=gets(); //上面這個是想說當PIC B 接收到連結訊號時, 傳送一組數字回來,證明收到訊號 }while(w!=z); puts("a"); delay_ms(9) y=getc(); delay_ms(9) do { puts("c"); printf("c is %d",y+1); }while(c!=y+1); } PIC B 接收: #include<16F877.h> #use delay(clock=10000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) #define str "con 11:1C:84:00:60:44" int b=2; int d=4; int e,x; char address[22]; void main() { address=gets(); delay_ms(1); if(strcmp(address, str)) { puts("101"); //收到連結訊號回傳的那個數值. } x=getc(); delay_ms(3) do { puts("b"); printf("b is %d",x+1); }while(b!=x+1); } 這程式可能有點簡單,但是感覺自己好像有某個點沒通,所以一直不知道哪裡出錯,所以請各位高手指點一番. 在此先感激各位抽空看文章. 十分感激 菜鳥
發表於: 2008/7/23 16:49
|
|||
|
Re: 想請教我遇到的二個怪問題.
|
||||
---|---|---|---|---|
初級會員
|
Hello Mark, 版主,
謝謝你們喔. 我大致上了解你們的意思了. 感激你們不厭其煩的解釋 十分感激. 菜鳥
發表於: 2008/7/23 16:32
|
|||
|
Re: 想請教我遇到的二個怪問題.
|
||||
---|---|---|---|---|
初級會員
|
參照:
Hello Mark, 這個問題我已經解決了. 我想Mark 說的沒錯可能是因為流量或是buffer的關係. 我在printf之後加上 dealy_ms(3) 之後, 這個問題就解決了. 謝謝Mark 的提醒. 我想順便請教一下, 你說的影體控制是因為你用組合語言寫的關係是嗎? 用C好像沒法直接控制硬體是嗎??? 還有你所謂的短路在一起,這有怎樣特別的影響或是意義嗎? 因為剛學所以很多不懂所以對你這句話沒法體會到它的意思.不是很了解那句話的意思.可以在深入講解一下嗎??? 謝謝你抽空回文章. 十分感激. 菜鳥
發表於: 2008/7/23 13:48
|
|||
|
Re: 我想請教一下版主或是各位高手關於C語言和組合語言問題
|
||||
---|---|---|---|---|
初級會員
|
Hello Mark, 版主,
十分感謝你們抽空回文章. Mark 我會在研讀你的RX範例的, 謝謝你. 版主謝謝你的建議,我會看一下C18 C compiler 這個部分的範例. 謝謝你 十分感激你們的指導跟建議. 菜鳥
發表於: 2008/7/23 13:40
|
|||
|
Re: 我想請教一下版主或是各位高手關於C語言和組合語言問題
|
||||
---|---|---|---|---|
初級會員
|
參照:
Hello Mark, 謝謝你上次的回覆,我已經看了你的程式. 因為對程式語言也是高起步在學,所以想請教原作者Mark 或版主及板上的高手幾個問題. 上面的程式裡面,有BYTE1~BYTE15,這幾各部分是該填些什麼呢? 我的意思是說,如果我要傳輸一個字串像是"Hello Word, I am coming" 那這幾個Byte就是填這幾各十六位元碼嗎? 我知道如果我想要傳輸一個字母"U"我該像下面這麼寫. MOVLW 0x55 MOVWF TXREG 那我要傳輸一個字串,是不是也是將那些字串的每個字都改成十六進位碼放進去所謂的Byte1~Byte15呢? 那我要是想要傳輸一些數字像是 123 那我也是一樣的道理是嗎? 那接收的部分呢? 接收的部分我該怎麼做呢? 程序顛倒還是有特別的做法? 在此先謝謝各位抽空看文章,也謝謝大家不吝嗇的指點. 在此先謝謝大家了. 菜鳥
發表於: 2008/7/21 14:57
|
|||
|
Re: 我想請教一下版主或是各位高手關於C語言和組合語言問題
|
||||
---|---|---|---|---|
初級會員
|
參照:
Hello Master, 我去問過好多家書局了, 包括若水堂,問津堂,秋水堂. 她們都沒有,不知道Master知不知道有沒有PDF檔可以抓或是哪裡可以買到二手書.看了一下目錄,我可以了解位什麼Master說這個可以學到很多東西.所以很想買到.有特別建議的嗎? 在這裡先謝謝master了 菜鳥
發表於: 2008/7/21 14:27
|
|||
|
Re: 想請教我遇到的二個怪問題.
|
||||
---|---|---|---|---|
初級會員
|
Hello 版主,
謝謝你的回覆. 第二個問題解決了. 我發現把那個勾選取消之後,在Hyper terminal 裡面,你打字在上面好像也不會顯示出來了. 看來魚與熊掌不能兼得. 希望有高手能指導一下第一個問題. 謝謝大家抽空看文章回覆. 十分感激 菜鳥
發表於: 2008/7/21 14:20
|
|||
|
想請教我遇到的二個怪問題.
|
||||
---|---|---|---|---|
初級會員
|
Hello, 各位高手
菜鳥又來問問題了,這次遇到兩各怪問題. 但是首先我要說,因為我的筆記型電腦沒有9 pins的的孔可以接rs232 所以我去買了一條use 轉 rs232的線來使用,不知道是否有什麼影響下面的問題. 第一個: 我用了一個相當簡單的測試一下我的code想試一下我的傳輸線,Code如下 #include<16F877.h> #use delay(clock=10000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) void main() { printf("con 00:0C:84:00:60:44"); } 但是在Hyper terminal 的螢幕上,卻無法完整的顯示, 它永遠都只顯示到 con 00:0C:84:00:60 而後面的 44 就消失不見了,有高手可以指點一下怎麼回事嗎??? 第二個: 就是當我把檔案傳入我的PIC 16f877 之後,我在Hyper terminal 上按g,要執行他,我明明指按一個g,可是他都會顯示兩個,然後他在傳輸的過程,所有的數字還有文字都是會重複在跑出來. 我輸入一個驚嘆號進去, 可是Hyper terminal 螢幕卻顯示出兩個驚嘆號,所以可以請教是什麼原因嗎? 在此先謝謝大家的幫忙 菜鳥
發表於: 2008/7/21 3:49
|
|||
|
Re: 想請教各位前輩幾個語言問題與MPLAB v8.10
|
||||
---|---|---|---|---|
初級會員
|
Hello 版主,
謝謝你的回覆,還附上圖讓我了解. 這個部分已經找到了,謝謝你. 順便請教一個題外話,你說的 PIC C 是指 C18 嗎??? 還是指哪個呢??? 謝謝你這次的回覆. 菜鳥
發表於: 2008/7/16 0:47
|
|||
|