bit、sfr、push/pop 組込み関数の使い方
テクニカル・ノート 40085
アーキテクチャ:
8051
コンポーネント:
compiler
更新日:
2018/08/13 1:27
はじめに
本テクニカルノートでは、KeilのツールからIAR Embedded Workbench for 8051に移行する際に発生する問題について説明します。
例
この例は、IAR Embedded Workbench for 8051バージョンV7.x(またはそれ以降)を使用して書かれています。
この例では、ビット変数とsfr変数の使い方と、Keil固有の関数である_push_()と_pop_()を置き換える方法が示されています。
よくある質問は...
...Keilのsbit構文の置き換え方についてのものですが、それに対する回答は、「IARのヘッダファイルを使用するだけ」です。このヘッダファイルで、char型とビットフィールドの両方を含む匿名のSFR共有体を使用します。
例1
#include <stdbool.h>
__no_init bool __bit mybit;
#define BIT __no_init bool __bit
BIT mybit2;
void main(void)
{
mybit = 1;
mybit2 = 1;
}
例2
__sfr __no_init volatile unsigned int test_int @0x92;
__sfr __no_init volatile unsigned char test_char @0x94;
#define SFR __sfr __no_init volatile
SFR unsigned int test_int2 @0x96;
SFR unsigned char test_char2 @0x98;
void main(void)
{
test_int = 0x1122;
test_char = 0x33;
test_int2 = 0x4455;
test_char2 = 0x66;
}
例3
#define _push_(X) { char __tmp; __tmp=X;
#define _pop_(X) X=__tmp;}
全ての製品名は、それぞれの所有者の商標または登録商標です。