こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

アセンブラはそこそこ使えるんですが最近C言語をはじめました。
一見簡単そうですがむずかしいですね。

アセンブラの場合
CNT からデータを取り出す場合

RLF CNT,F
BTFSC STATUS,C
GOTO APGM
GOTO BPGM

とやります。これをHi-tecC言語で自己流で
cnt=cnt<<1;
if(STATUS,0==1)
APGM();
else
BPGM();
なんて書いてみたんですがエラーでまくりです。
どう書くんでしょうか、おしえてください。
検索ずいぶんやったんですがSTATUS,CやSTATUS,0なんてCでは使わないんでしょうか?

投稿日時 - 2013-04-04 01:27:57

QNo.8026185

暇なときに回答ください

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

>検索ずいぶんやったんですがSTATUS,CやSTATUS,0なんてCでは使わないんでしょうか?

ないので使えません(処理系によっては独自仕様で類似のものがあったりするかもしれませんが)。

cntが何ビットかわかりませんけど8ビットとしたら

int status_c = cnt & (1<<7);
cnt <<= 1;
if (status_c) {
APGM();
}
else {
BPGM();
}

になるかと思います。

投稿日時 - 2013-04-04 01:53:49

お礼

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

投稿日時 - 2013-04-04 02:16:09

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

まぁ,
if(STATUS,0==1)
ではエラーは出ないんですけどね. 文法的には何もおかしくないし.

あと, 最低限エラーメッセージくらいは書くように.

投稿日時 - 2013-04-04 13:31:50

ANo.2

Hi-tec C であれば、pic.h というヘッダファイルがあるはずです。
これを使うために、

#include <pic.h>

とつけると、いろいろ使えます。

> STATUS,CやSTATUS,0なんてCでは使わないんでしょうか?

さすがに、カンマを含んだ名前は(文法上)使えませんが、pic.h の中に、似たような名前が適切に定義されているはずです。

投稿日時 - 2013-04-04 08:23:42

あなたにオススメの質問