Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SDCC и __sbit
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Spider
Всем привет!

Помогите понять как работает __sbit в SDCC.
К примеру код из Keil:
Код
sfr FSR              = 0xF8;
/*  FSR  */
sbit  MCDIS        = FSR^7;
sbit  STP          = FSR^6;
sbit  WEN          = FSR^5;
sbit  RDYN         = FSR^4;
sbit  INFEN        = FSR^3;
sbit  RDIS         = FSR^2;
sbit  RDEND        = FSR^1;
sbit  WPEN         = FSR^0;

Как я понимаю в SDCC я должен описать что-то типа:
Код
__sfr _-at 0xF8 FSR;
__sbit __at 0xF8 WPEN;
__sbit __at 0xF9 RDEND;
__sbit __at 0xFA RDIS;

и так далее. правильно?
А тогда как быть, к примеру, с регистром sfr FPCR = 0xF9; ? Ведь к примеру sbit NUPP = FPCR^0; будет всё тем же __sbit __at 0xF9 NUPP;, что не отличается от __sbit __at 0xF9 RDEND;?
Не понимаю ничего crying.gif
Kolia
Ищите таблицу Special Function Register (SFR) Memory Map на свой контроллер и подставляйте нужные адресса, при использовании sbit обращение будет идти с битовой области памяти bdata

A. Fig Lee
Цитата(Alexey Belyaev @ May 16 2015, 03:00) *
А тогда как быть, к примеру, с регистром sfr FPCR = 0xF9; ? Ведь к примеру sbit NUPP = FPCR^0; будет всё тем же __sbit __at 0xF9 NUPP;, что не отличается от __sbit __at 0xF9 RDEND;?
Не понимаю ничего crying.gif


Обращение к битам есть только у регистров, чьи аддресса кратны 8:
0xF0, 0xF8 ...
0xF9 не умеет обращатся к битам
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.