Работа с указателями

 
0
 
C++
ava
zuuuuk | 18.01.2008, 21:29

 ! 
archimed7592
Не забываем пользоваться кнопкой "Код" или тэгами [code=xxx][/code]
Помогите разобрать код.

#define DATA 0x0
#define STATUS 0x4  
#define CONTROL 0x8
#define SCALER 0xC

#define ENABLE_RX 0x1
#define ENABLE_TX 0x2
#define RX_INT 0x4
#define TX_INT 0x8

volatile int *ureg = (int *) 0x80000100;
void uart_init(void)
{
   ureg[CONTROL/4] = ENABLE_RX | ENABLE_TX | RX_INT; // 0x2 rxen,txen;int,par: dis  ;483
   ureg[SCALER/4] = 0x35;//???          115200 ==   0x15
}


1)Прошу вас пояснить этот код.
2) почему ureg вдруг стал массивом.-> ureg[CONTROL/4]
3)всетаки с каким адресом он работает?

благодарю за помощь..
Ответы (6)
ava
JackYF | 18.01.2008, 21:37 #
Цитата(zuuuuk @  18.1.2008,  20:29 findReferencedText)
почему ureg вдруг стал массивом

ureg - это переменная-указатель.
Цитата(zuuuuk @  18.1.2008,  20:29 findReferencedText)
CONTROL/4

смещение по указателю
ava
zuuuuk | 18.01.2008, 21:44 #
Можешь уточнить:
-смещение по указателю, на сколько
-у почему в квадратных скобках []. он же небыл обявлен как массив.
-может есть ресурс, где можно об этом почитать.
ava
Fazil6 | 18.01.2008, 22:02 #
Цитата(zuuuuk @  18.1.2008,  20:44 findReferencedText)
-может есть ресурс, где можно об этом почитать.

любая книжка по C\C++
ava
zuuuuk | 18.01.2008, 22:29 #
Цитата(Fazil6 @ 18.1.2008,  20:02)
Цитата(zuuuuk @  18.1.2008,  20:44 \\"findReferencedText\\")
-может есть ресурс, где можно об этом почитать.


любая книжка по C\C++

у меня 2 книги по C. под рукой.
подобного смещения ureg[CONTROL/4] нигде не описывается.
-я правильно понемаю, что он смещается просто на 0х2 относительно 0x80000100


ava
JackYF | 18.01.2008, 22:48 #
Цитата(zuuuuk @  18.1.2008,  21:29 findReferencedText)
то он смещается просто на 0х2 относительно 0x80000100

да.

Цитата(zuuuuk @  18.1.2008,  21:29 findReferencedText)
подобного смещения ureg[CONTROL/4] нигде не описывается.

либо плохо ищешь, либо книжки можно выбросить. Это база.
ava
W4FhLF | 18.01.2008, 23:04 #
Цитата(zuuuuk @  18.1.2008,  22:29 findReferencedText)
-я правильно понемаю, что он смещается просто на 0х2 относительно 0x80000100


На 2 чего? Он смещается на 8 байт или на 2 элемента в массиве int'ов, размер int - 4 байта. 
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  JackYF   Fazil6   W4FhLF   zuuuuk
advanced
Отправить