Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Работа с указателями


Автор: zuuuuk 18.1.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)всетаки с каким адресом он работает?

благодарю за помощь..

Автор: JackYF 18.1.2008, 21:37
Цитата(zuuuuk @  18.1.2008,  20:29 Найти цитируемый пост)
почему ureg вдруг стал массивом

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

смещение по указателю

Автор: zuuuuk 18.1.2008, 21:44
Можешь уточнить:
-смещение по указателю, на сколько
-у почему в квадратных скобках []. он же небыл обявлен как массив.
-может есть ресурс, где можно об этом почитать.

Автор: Fazil6 18.1.2008, 22:02
Цитата(zuuuuk @  18.1.2008,  20:44 Найти цитируемый пост)
-может есть ресурс, где можно об этом почитать.

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

Автор: zuuuuk 18.1.2008, 22:29
Цитата(Fazil6 @ 18.1.2008,  20:02)
Цитата(zuuuuk @  18.1.2008,  20:44 Найти цитируемый пост)
-может есть ресурс, где можно об этом почитать.

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

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



Автор: JackYF 18.1.2008, 22:48
Цитата(zuuuuk @  18.1.2008,  21:29 Найти цитируемый пост)
то он смещается просто на 0х2 относительно 0x80000100

да.

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

либо плохо ищешь, либо книжки можно выбросить. Это база.

Автор: W4FhLF 18.1.2008, 23:04
Цитата(zuuuuk @  18.1.2008,  22:29 Найти цитируемый пост)
-я правильно понемаю, что он смещается просто на 0х2 относительно 0x80000100


На 2 чего? Он смещается на 8 байт или на 2 элемента в массиве int'ов, размер int - 4 байта. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)