Spider 0 16 мая, 2015 Опубликовано 16 мая, 2015 · Жалоба Всем привет! Помогите понять как работает __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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kolia 0 15 июля, 2015 Опубликовано 15 июля, 2015 · Жалоба Ищите таблицу Special Function Register (SFR) Memory Map на свой контроллер и подставляйте нужные адресса, при использовании sbit обращение будет идти с битовой области памяти bdata Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 15 июля, 2015 Опубликовано 15 июля, 2015 · Жалоба А тогда как быть, к примеру, с регистром sfr FPCR = 0xF9; ? Ведь к примеру sbit NUPP = FPCR^0; будет всё тем же __sbit __at 0xF9 NUPP;, что не отличается от __sbit __at 0xF9 RDEND;? Не понимаю ничего :crying: Обращение к битам есть только у регистров, чьи аддресса кратны 8: 0xF0, 0xF8 ... 0xF9 не умеет обращатся к битам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться