bit, sfr 및 push/pop 내장함수 사용방법

기술노트 40085

아키텍처:

8051

컴포넌트:

compiler

업데이트:

2021-05-04 오전 8:06

소개

본 기술 노트는 Keil tools에서 IAR Embedded Workbench for 8051로 마이그레이션한 몇 사용자들에게 발생하는 몇 가지 문제를 다룹니다.

예제

예제는 IAR Embedded Workbench for 8051 버전 V7.x (혹은 상위 버전)으로 작성되었습니다.

다음의 예제는 bit 변수와 sfr 변수를 사용하는 방법과 Keil 내장함수 _push_(), _pop_()를 대체하는 방법을 보입니다.

일반적인 질문...

...은 Keil sbit 구문을 대체할 수 있는 방법에 대해서입니다. 이에 대해 그저 우리가 제공하는 헤더파일을 사용하면 됩니다. 그 안에는 char형과 bitfield를 가진 익명 공용체 SFR (anonymous SFR unions)를 사용하였습니다.

예제 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;}

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.