Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil Си DPTR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Fape
Подскажите пожалуста как определить указатель что бы он указывал на определенный байт в XRAM
вобщем как на Си написать аналог команды MOVX @DPTR, A smile.gif
Палыч
Вы желаете заносить/читать определенный байт внешнего ОЗУ? Тогда это можно сделать так:
unsigned char xdata Ch _at_ 0x8000; /* Переменная Ch - располагается во внешнем ОЗУ по адресу 8000h */
Ch= 123; /* Занести значение */
X= Ch; /* Использовать (читать) значение */

P.S. Можно и через указатель:
unsigned char xdata *pCh= 0x8000;
*pCh= 123;
X= *pCh;
редактор
Вообщето все в доках есть.Но уж если лень искать.
Вариант 1
объявить переменную в памяти XDATA с привязкой к адресу
XDATA char i _at_ 0x0A;
...
i = 1;
Вариант 2
объявить указатель на XDATA
char xdata *ptr;
ptr = 0x0A;
*ptr = 1;
Fape
нет мне нужен именно указатель что бы можно было заполнаять памят последовательно

вот скажем при таком обявлении

unsigned char * xdata p;

p = 0; // указатель на нулевую ячейку XRAM ?

*p = Data; // присвоение ячейки xram значения ?

p++; // укзатель на следущую ячейку ?
Палыч
Цитата(Fape @ Jun 19 2008, 11:58) *
нет мне нужен именно указатель что бы можно было заполнаять памят последовательно ...вот скажем при таком обявлении
Да. Ой! Нет! Вот так:
unsigned char xdata *p;
Fape
ага smile.gif спасибо за консультацию
toweroff
Можно копнуть в сторону absacc.h

Код
#include    <absacc.h>

...


void main()
{
  unsigned int i;
  unsigned char c;

  ...

  XBYTE[0x2F16] = c;
  c = XBYTE[0x34FF];

  XWORD[0x127D] = i;
  i = XWORD[i];


}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.