いちばん失敗した人決定戦

初心者です。
下記のプログラムをコンパイルすると、(2)、(4)、(5)(SBI、CBI命令)でエラー( Error: constant value required)になります。
理由が全くわかりません。

※(1)、(3)にて、DATAの値をR16に受け渡したいのですが、下記の方法でよろしいでしょうか?

ご教示下さい、よろしくお願い致します。

    unsigned char DATA;  ・・・・(1)

       ・
       ・
       ・

    asm("SBI PORTB,4");  ・・・・(2)
    asm("LDS R16,DATA");  ・・・・(3)
    asm("MOV R17,R16");
    _delay_us(10);
    asm("ANDI R17,0b00000001");
    asm("SBRS R17,0");
    asm("CBI PORTB,4");  ・・・・(4)
    asm("SBI PORTB,4");  ・・・・(5)

A 回答 (1件)

>理由が全くわかりません。



「CBI、SBIは定数を要求する」がエラーの意味。

んで

>asm("SBI PORTB,4");  ・・・・(2)
>asm("CBI PORTB,4");  ・・・・(4)
>asm("SBI PORTB,4");  ・・・・(5)

って書いた場合「PORTBが何者であるか書いてない」ので「そこには定数を書けよ」って怒られる事になる。

このへん
http://www9.plala.or.jp/fsson/NewHP_elc/AVR/Avr_ …
を参考に、マクロで書くのが吉。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2012/12/26 08:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!