8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 86 87 88 89 90 91 92 ... 105

Procedure Erase all; (Стирание всех ячеек памяти var

i:byte; begin Start;

load data(0)

запись во все ячейки 1.*)

(•Генерация условия начала.*) (•Загрузка первого бита кода операции 0. (•Загрузка второго бита кода операции 0. (•Загрузка 1 и 0. •)

load data(0); load data(l); load data(0);

for i;=1 to 6 do load data(0); write data port(P add ress,0+0+0); delay(l);

write Jata port(P address, 0+2+0); delay(1);

repeat until read status port(P address) and 1=1; («Ожидание состояния готовности.*) write data port(P address,0+0+0); (*Select=0 для прекращения выполнения операции.*)

(•Загрузка шести холостых бит адреса.*) (•Select=0. •)

(*Select=1 для проверки состояния.*)

end;

О

(•Генерация условия начала.*) (•Загрузка первого бита кода операции 0. (♦Загрузка второго бита кода операции 0. (•Загрузка 0 и 1. •)

Procedure write all(byte low, byte high:byte); (•Запись во все ячейки памяти byte high и byte low. var

i:byte; begin

Start;

load data(0); load data(0); load data(0); load data(D;

for i:=1 to 6 do load data(0); («Загрузка шести холостых бит адреса.*) (•Загрузка byte high, сначала старший бит.«)

for i:=8 downto 1 do load data(round((byte high and bit weight(i))/bit weight(i))); («Загрузка byte low, сначала старший бит.*)

for i;=8 downto 1 do load data(round((byte low and bit weight(i))/bit weight(i))) ; writeJata port(P address, 0+0+0); write data port(P address, 0+2+0); repeat until read status port(P address) and 1=1; write data port(P address, 0+0+0): end;

Procedure WriteR0M(address,byte low, byte high:byte);

(«Запись byte high и bytelow в две восьмиразрядные ячейки памяти.*)

var

1:byte; begin

Start;

load data(0); load data(1); (•Загрузка адреса.•) for i:=8 downto 1 do begin

load data(round(address and bit weight(i)/bit weight(i))); end; («Загрузка адреса 0.*); («Загрузка byte high, сначала старший бит,*)

for i:=8 downto 1 do load data(round((byte high and bit weight(i))/bit weight(i)));

(«Генерация условия начала.*) («Загрузка первого бита кода операции 0. («Загрузка второго бита кода операции 1.


(•Загрузка byte low,сначала старший бит.*)

for i:=8 downto 1 do load data(round((byte low and bit weight(i))/bit weight(i))); write data port(P address, 0+0+0); write data port(P address, 0+2+0); repeat until read status port(P address) and 1=1; write data port(P address, 0+0+0); end;

Function readR0M(address,x:byte):byte;

(•Считывание двух байтов из 128 ячеек памяти. х=0 считывает младший байт, х=1 - старший байт.*) var

1,high.byte,low byte,dummy:byte; begin

start;(«Генерация условия начала.*)

load data(l);(«Загрузка кода операции 1.*)

load data(0);(«Загрузка кода операции 0.*)

(«Загрузка адреса.*) for i:=8 downto 1 do begin

load data(round(address and bit weight(i)/bit weight(i)));

end;

(«Загрузка адреса 0. *);

dummy:=0;(«Начало считывания старшего байта.*)

for i:=8 downto 1 do begin

write data port(P address,0+2); delay(1); (*Clock=0.Selects.«) write data port(P address,1+2); delay(1); (*Clock=1.Select=1.*) dummy=dummy+read status port(P address) and 1*bit weight(i);

(•Считывание бита данных, сначала старший бит.*) write data port(P address,0+2);

end;

high byte:=dummy;

dummy:=0;(*Начало считывания младшего байта,*)

for i:=8 downto 1 do begin

wnte data port( P add ress, 0+2); delay(1); write data port(P address,1+2); delay(1); dummy:=dummy+read status port(P address) and 1*bit weight(i); write data port(P address,0+2);

end;

low byte:=dummy;

(«Установка значения данных.*) if x=0 then readR0M:=low byte; if x=1 then readROM:=high byte;

end;

Procedure Program R0M; («Тестовая программа.*) var

strx;string[250]; i:byte; begin

writeln(This is the message originally stored in the EPR0M); writeln;


for i:=1 to 125 do begin

write(chr(readR0M(i,O)),chr(readR0M(i,1)));

end;

writeln;

write(Press RETURN to continue...); readln; for i:=1 to 250 do strx[i):=

writeln(Input the message which will be programmed into the eeprom: ); readln(strx);

for i:=1 to 125 do wnteR0M(i,ord(strx[2.i-1]),ord(strx[2«i])); writeln(The EEPROM has been programmed ); writeln(This is the message stored in the EPROM now); for i:=1 to 125 do begin

write(chr(readROM(i,0)),chr(readROM(i. 1)));

end; readln;

end;

(«Главная программа.*) begin

Centronic address;

init;

erase(true); program rom; end.

7.3.2. EEPROM с шиной l2C

Микросхема 24LC16B (Microchip, аналог X24C16P, Xicor, RS125-1401) - это EEPROM объемом 16 Кбит с шиной 12С (см. главу 4). Микросхема выполняет функции ведомого устройства. Память организована как 2048 ячеек по 8 разрядов каждая; ячейки можно стирать и снова записывать в них информацию до 1 млн раз. Напряжение источника питания от 2,5 до 5 В, потребляемый ток 1 мА в активном режиме и 10 мкА в режиме ожидания.

Выводы АО, А1 и А2 не используются. Вход WP обеспечивает защиту от записи (высоким уровнем). Обычно для разрешения записи он соединяется с «землей». SCL и SDA - это линии тактового сигнала и данных 12С (рис. 7.12).

Данные записываются и считываются по шине 12С. Операция записи имеет два режима: побайтовой и постраничной записи. В первом случае в ячейку памяти записывается один байт, во втором - в модуль записывается 256 байт за одно обращение. При чтении доступны режим чтения текущего адреса и случайный режим чтения.

После прохождения условия «СТАРТ» в микросхему заносится восьмиразрядный ведомый адрес от ведущего передатчика. Биты адреса (начиная со старшего) равны: 1, 0, 1, 0, В2, В1, ВО и R/W. Биты с 7 по 4 - это постоянный адрес микросхемы, биты В2, В1 и ВО определяют один из четырех блоков памяти, а бит R/W устанавливает, какая операция будет проводиться: для операции чтения R/W = 1, для операции записи R/W = 0. После передачи ведомого адреса в микросхему



0 ... 86 87 88 89 90 91 92 ... 105