• 締切済み

C言語でLEDを点灯させるプログラムです

C言語を使ってLEDを点灯させるプログラムです。 以下のプログラムを変更して、Aポートの入力(下位4ビット) と、Cポートの入力(下位4ビット)を加算した値をBポートに出力しなさい 。 という問題なのですが、加算した値を出力するにはどうプログラムを記述すればいいか 分かりません。教えてください。 また、加算するというのは、たとえばどういうふうにしろ ということなのか、教えてください。 #include<18F452/h> #device HIGH_INTS=TRUE #priority ext,rb #fuses NOOSCSEN,HS,BORV45,NOBROWNOUT,PUT #fuses WDT128,NOWDT #fuses NODEBUG,NOLVP,NOSTVREN #fuses NOPROTECT,NOCPD,NOCPB #fuses NOWRT,NOWRTD,NOWRTB,NOWRTC,NOEBTR,NOEBTRB #use delay (CLOCK=20000000) #use fast_io(A) #use fast_io(B) #use fast_io(C) #use fast_io(D) #use fast_io(E) #byte port_a=0xf80 #byte port_b=0xf81 #byte port_c=0xf82 #byte port_d=0xf83 #byte port_e=0xf84 int i=0,j=0; void main() { if(input(PIN_b4)){output_high(PIN_d4);} else{output_low(PIN_d4);} if(input(PIN_b5)){output_high(PIN_d5);} else{output_low(PIN_d5);} if(input(PIN_b6)){output_high(PIN_d6);} else{output_low(PIN_d6);} if(input(PIN_b7)){output_high(PIN_d7);} else{output_low(PIN_d7);} while(1) { output_c(0b10101010); } }

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

「C言語」と書かれていますが、標準的なC言語には #device とか #fuses とかのような表記は存在しません。 また、ポートからの入力・ポートへの出力という操作も、標準的なC言語の仕様として決められているものではありません。 このため、どんな独自拡張C言語を使っているのかが分からないと誰も答えようが無いと思われます。 検索してみたところでは http://www.datadynamics.co.jp/ccsc/overview.html を使っているのかなと思いましたが。

回答No.2

ポートから入力と出力の関数(マクロ?)があるのなら、 outpu_b((ポートAの内容&0x0f)+(ポートCの内容&0x0f)); みたいに、足し算の結果をポートBに出せばいいのではないでしょうか。 input() や output_なんたら() の仕様が不明ですのでこれ以上は分かりません。。

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

「加算」=「論理和」のことであれば、orしたものを出力すればいいだけ。 # ソースが書かれても、 input()とか、output_high()とか、PIN_dxとかの意味を書かれなければ意味ないよ。だからソースは一切見てない。 まぁ、ある程度推測はすることはできるけど。

関連するQ&A