Читайте также: |
|
Входные параметры функции:
seg – указывает сектор флзш-памяти и может принимать такие же значения, что и функция FlashErase.
offset - задает смещение внутри сектора. Может принимать значения от 0 до 65535.
data – определяет записываемый байт (от 0 до 255).
При успешной записи функция возвращает 0.
Как было сказано, значение бита флэш-памяти может быть изменен только от 1 на 0. Таким образом, если значение байта равен 0xFF, то можно записать в этот байт любые данные. Однако, если значение байт а равен 0х01, то вы можете изменить его только на 0х00.
Функция FlashWrite не контролирует запись. Но если вы изменяете бит от 0 на 1, то эта функция возвращает ошибку TimeOut (-5). После вызова функции FlashErase вы опять можете записывать любые данные.
Чтение данных из флэш-памяти
Для чтения данных из флэш-памяти следует вызывать функцию:
int FlashRead (unsigned int seg, unsigned int offset)
Первый параметр указывает номер сегмента, а второй параметр смещение внутри сегмента. Функция возвращает значение указанного байта.
Для прямой адресации байта (Сегмент:Смещение) можно использовать дальний указатель адреса ячейки памяти. Для этого следует использовать макроподстановку MK_FP. Например,
char far *ByteData, databyte;
int far *IntData, dataint;
long far *LongData, datalong;
ByteData=(char far *)MK_FP(segment, offset);
databyte=*ByteData;
IntData=(int far *)MK_FP(segment, offset);
dataint=*IntData;
LongData=(long far *)MK_FP(segment, offset);
datalong=*LongData;
Пример. Запись числа типа integer на флэш-память на сегмент D000 со смещением 0х1234.
int data = 0xAA55, data2;
char *dataptr;
int *dataptr2;
dataptr = (char*) &data;
//Записываем побайтно
FlashWrite(0xd000, 0x1234, *dataptr++);
FlashWrite(0xd000, 0х1235, *dataptr);
//Чтение данных из флэш памяти
dataptr = (char*) &data2;
*dataptr = FlashRead (0xd000, 0x1234);
*(dataptr+1) = FlashRead(0xd000, 0x1235);
//Чтение данных путем прямой адресации
dataptr2 = (int far*) _MK_FP(0xd000, 01234);
data2 = *dataptr2;
Дата добавления: 2015-08-03; просмотров: 55 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Void main(void) | | | января 1995г. |