• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PICのC言語でキャリーオーバー)

PICのC言語でキャリーオーバー

このQ&Aのポイント
  • アセンブラのCNTからデータを取り出す方法はRLF CNT,F、BTFSC STATUS,C、GOTO APGM、GOTO BPGMとなります。しかし、Hi-tecC言語で同じことをする場合はcnt=cnt<<1; if(STATUS,0==1) APGM(); else BPGM();と書いてもエラーが発生します。どのように書けばよいのでしょうか?
  • アセンブラでは、CNTからデータを取り出すにはRLF CNT,F、BTFSC STATUS,C、GOTO APGM、GOTO BPGMというコードを使用します。しかし、Hi-tecC言語ではcnt=cnt<<1; if(STATUS,0==1) APGM(); else BPGM();と書いてもエラーが発生します。このエラーを回避するためにはどうしたらよいでしょうか?
  • Hi-tecC言語でCNTからデータを取り出すには、アセンブラのRLF CNT,F、BTFSC STATUS,C、GOTO APGM、GOTO BPGMというコードの代わりにcnt=cnt<<1; if(STATUS,0==1) APGM(); else BPGM();と書けます。しかし、この書き方だとエラーが発生してしまいます。どのように修正すればエラーを回避できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>検索ずいぶんやったんですがSTATUS,CやSTATUS,0なんてCでは使わないんでしょうか? ないので使えません(処理系によっては独自仕様で類似のものがあったりするかもしれませんが)。 cntが何ビットかわかりませんけど8ビットとしたら int status_c = cnt & (1<<7); cnt <<= 1; if (status_c) { APGM(); } else { BPGM(); } になるかと思います。

ny36
質問者

お礼

さっそくの回答ありがとうございます。全然違いましたね。 やっぱりむずかしいですね。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

まぁ, if(STATUS,0==1) ではエラーは出ないんですけどね. 文法的には何もおかしくないし. あと, 最低限エラーメッセージくらいは書くように.

回答No.2

Hi-tec C であれば、pic.h というヘッダファイルがあるはずです。 これを使うために、 #include <pic.h> とつけると、いろいろ使えます。 > STATUS,CやSTATUS,0なんてCでは使わないんでしょうか? さすがに、カンマを含んだ名前は(文法上)使えませんが、pic.h の中に、似たような名前が適切に定義されているはずです。

関連するQ&A