Re: 請教各位一個 Code的問題. 跟一個C語言問題
|
||||
---|---|---|---|---|
高級會員
|
你的七段顯示器顯示的段數是直接驅動還是透過7447?
既然你可以在超級終端機上秀出字,那表示你也有ASCII CODE轉HEX,所以應該沒問題! 至於E是七段顯示器顯示E,代表ERROR! 就不用0->9->0!!! 另外那是回答你第二個問題啦!!! 呵!!
發表於: 2008/8/28 14:58
|
|||
|
Re: 請教各位一個 Code的問題. 跟一個C語言問題
|
||||
---|---|---|---|---|
高級會員
|
你要做無線傳輸,有沒有使用編解碼IC啊?
還是你是用紅外線或藍芽傳輸,才會用USART,如果是RF就須編解碼IC,一次需8個I/O PORT. 你也沒提到?所以不清楚你為收到資料無法正確顯示! 你可以錯誤的時候改顯示E,這樣就可以避免出現誤判情形! 假如你要的時是10H,那就判斷值等於10H,才做副程式即可啊!
發表於: 2008/8/28 8:55
|
|||
|
請教各位一個 Code的問題. 跟一個C語言問題
|
||||
---|---|---|---|---|
初級會員
|
Hello 高手們日安,
首先,想請教code的問題. 我用的是兩個PIC 16F877 我要做無線傳輸的測試, 兩個PIC 彼此之間是沒有任何RS232 連結. 我想要做的是從PIC A 傳送 1 給PIC B, 然後 PIC B收到之後,在將所收到的數字+1 之後回傳回去給PIC A 然後PIC A收到之後再 +1 再傳給PIC B . 然後我用七段顯示器,去顯示PIC B 都到的數字.如果沒收到數字我設定七段顯示器顯示 "0"-->''9"-->"0"表示沒有收到PIC A 的數字 這兩個通過compile,但是我想我犯了邏輯上的錯誤,因為在七段顯示器上面,它顯示就是"0"-->''9"-->"0" 始終沒有出現我希望它顯示的 1, 3 ,5. 麻煩高手們 或是 明眼人指點一下. 第二個問題是,菜鳥想請教,如果我想要某一段指令,等到給定一個值才執行該怎麼寫呢? 我的意思是說,如果我想要printf 出某一個值,但是我要收到一個數字之後在執行這個部分,我該怎麼寫呢? 你們的指點一定可以讓蔡鳥學到很多知識跟技巧. 也感激你們抽空看文章 菜鳥 PIC A : #include<16F877.h> #use delay(clock=10000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) int c,d,g,h; void main() { delay_ms(1000); puts("1"); delay_ms(1030); c=getc(); if(c==2) { delay_ms(100); d=c+1; delay_ms(30); puts("d"); delay_ms(100); } g=getc(); if(c==4) { delay_ms(100); h=g+1; puts("h"); delay_ms(100); } } PIC B: #include<16F877.h> #use delay(clock=10000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) int a,b,e,f,i; void main() { set_tris_b(0xFF); set_tris_d(0x00); while(1) { //我把硬體連結的Code忽略, 這樣看起來比較不會 //亂. a=getc(); if(a==1) { output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_low(PIN_D3); } else { output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_high(PIN_D3); delay_ms(1000); output_low(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_low(PIN_D3); delay_ms(1000); output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_high(PIN_D3); } delay_ms(100); b=a+1; delay_ms(30); puts("b"); delay_ms(100); e=getc(); if(e==3) { output_high(PIN_D0); output_high(PIN_D1); output_low(PIN_D2); output_low(PIN_D3); } else { output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_high(PIN_D3); delay_ms(1000); output_low(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_low(PIN_D3); delay_ms(1000); output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_high(PIN_D3); delay_ms(1000); } delay_ms(100); f=e+1; delay_ms(3); puts("f"); i=getc(); if(i==5) { output_high(PIN_D0); output_low(PIN_D1); output_high(PIN_D2); output_low(PIN_D3); } else { output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_high(PIN_D3); delay_ms(1000); output_low(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_low(PIN_D3); delay_ms(1000); output_high(PIN_D0); output_low(PIN_D1); output_low(PIN_D2); output_high(PIN_D3); delay_ms(1000); } } }
發表於: 2008/8/27 17:20
|
|||
|