- ベストアンサー
※ 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();と書けます。しかし、この書き方だとエラーが発生してしまいます。どのように修正すればエラーを回避できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>検索ずいぶんやったんですがSTATUS,CやSTATUS,0なんてCでは使わないんでしょうか? ないので使えません(処理系によっては独自仕様で類似のものがあったりするかもしれませんが)。 cntが何ビットかわかりませんけど8ビットとしたら int status_c = cnt & (1<<7); cnt <<= 1; if (status_c) { APGM(); } else { BPGM(); } になるかと思います。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
まぁ, if(STATUS,0==1) ではエラーは出ないんですけどね. 文法的には何もおかしくないし. あと, 最低限エラーメッセージくらいは書くように.
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
回答No.2
Hi-tec C であれば、pic.h というヘッダファイルがあるはずです。 これを使うために、 #include <pic.h> とつけると、いろいろ使えます。 > STATUS,CやSTATUS,0なんてCでは使わないんでしょうか? さすがに、カンマを含んだ名前は(文法上)使えませんが、pic.h の中に、似たような名前が適切に定義されているはずです。
お礼
さっそくの回答ありがとうございます。全然違いましたね。 やっぱりむずかしいですね。