Понимание этого встроенного кода C - PullRequest
1 голос
/ 08 июля 2011

Я пытаюсь понять этот встроенный код c. Я думаю, это означает, что он соединяет биты порта с каким-либо регистром в шине. Поправьте меня если я ошибаюсь. И любые изменения, которые мы вносим в порты, будут отражены в регистрах шин. Вот фрагмент кода. Спасибо.

/*--------------------------------------------------------------------------
Local Variables
--------------------------------------------------------------------------*/
// Port bits assigned to Amba Peripheral Bus (APB)
// P0^7..P0^0               // output=reg_addr, input=data_in (APB prdata)
sbit APB_SEL = P1^7;        // select a bus transaction
sbit APB_EN  = P1^6;        // enable/activate a component 0 = disable, 1 = enable

Ответы [ 2 ]

9 голосов
/ 08 июля 2011

Код определяет битовые позиции для чтения из регистров. sbit определяет бит в регистре специальной функции (SFR).

sbit APB_SEL = P1^7;

Здесь P1 - это ранее определенная SFR. Строка определяет APB_SEL как бит 7 (нумерация с нуля) P1.

Эта ссылка содержит дополнительные сведения о синтаксисе.

0 голосов
/ 10 августа 2015

Тип sbit определяет бит в регистре специальной функции (SFR).Он используется одним из следующих способов:

sbit name = sfr-name ^ bit-position;
sbit name = sfr-address ^ bit-position;
sbit name = sbit-address;

Где

name - имя бита SFR.

sfr-name - это имя предварительно определенного SFR.

битовая позиция - этопозиция бита в SFR.

sfr-адрес - это адрес SFR.

сбит-адрес - это адрес бита SFR.

В типичных приложениях 8051 часто требуется доступ к отдельным битам в SFR.Тип sbit обеспечивает доступ к SFR с битовой адресацией и другим объектам с битовой адресацией.Например:

сбит EA = 0xAF;

Это объявление определяет EA как бит SFR по адресу 0xAF.На 8051 это бит разрешения для всех битов в регистре разрешения прерываний.

...