вот еще нашел где-то в нете как раз на РВР:
id var byte
id0 var byte
Id1 var byte
Id2 var byte
Id3 var byte
Id4 var byte
Addr var byte
Addr1 var byte
Addr2 var byte
Addr3 var byte
Addr4 var byte
pause 100
Cont con %10100000
id0=$0000000
id1=$0000000
id2=$0000000
id3=$0000000
id4=$0000000
Addr = 0
i2cread porta.0, porta.1,cont,addr2,id1[1]
Addr = 1
i2cread porta.0, porta.1,cont,addr2,id1[2]
Addr = 2
i2cread porta.0, porta.1,cont,addr2,id1[3]
Addr = 3
i2cread porta.0, porta.1,cont,addr2,id1[4]
Addr = 4
i2cread porta.0, porta.1,cont,addr2,id1[5]
Addr = 5
i2cread porta.0, porta.1,cont,addr2,id1[6] Addr = 6
i2cread porta.0, porta.1,cont,addr2,id2[1]
Addr = 7
i2cread porta.0, porta.1,cont,addr2,id2[2]
Addr = 8
i2cread porta.0, porta.1,cont,addr2,id2[3]
Addr = 9
i2cread porta.0, porta.1,cont,addr2,id2[4]
Addr = 10
i2cread porta.0, porta.1,cont,addr2,id2[5]
Addr = 11
i2cread porta.0, porta.1,cont,addr2,id2[6]
Addr = 12
i2cread porta.0, porta.1,cont,addr2,id3[1]
Addr = 13
i2cread porta.0, porta.1,cont,addr2,id3[2]
Addr = 14
i2cread porta.0, porta.1,cont,addr2,id3[3]
Addr = 15
i2cread porta.0, porta.1,cont,addr2,id3[4]
Addr = 16
i2cread porta.0, porta.1,cont,addr2,id3[5]
Addr = 17
i2cread porta.0, porta.1,cont,addr2,id3[6]
Addr = 18
i2cread porta.0, porta.1,cont,addr2,id4[1]
Addr = 19
i2cread porta.0, porta.1,cont,addr2,id4[2]
Addr = 20
i2cread porta.0, porta.1,cont,addr2,id4[3]
Addr = 21
i2cread porta.0, porta.1,cont,addr2,id4[4]
Addr = 22
i2cread porta.0, porta.1,cont,addr2,id4[5]
Addr = 23
i2cread porta.0, porta.1,cont,addr2,id4[6]
Pause 500 ********************************************************************************
*********
DQ VAR PortB.1 'Переменная для удобства
Offsig: ' Посли включения сигнализация выключена , объект не на охране , если хочешь наоборот - поменяй подпрограммы offsig и onsig местами в коде бесика
Start_Convert
OWOUT DQ, 1, [$33] ' Issue Read ROM command
D_Loop:
OWIN DQ, 0, [STR ID\8] **************************Вот здесь проверь плиз******************************
If id = id1 then onaccept ' проверки ключа
If id = id2 then onaccept
If id = id3 then onaccept
If id = id4 then onaccept
If porta.2=0 then firealarm1 ' проверка пожарного шлейфа
Goto offsig ' если ключи не подходят - зацикливаемся
onsig: ' подпрограмма сигналки на охране
OWIN DQ, 0, [STR ID\8]
If id = id1 then offaccept ' приоверки ключей
If id = id2 then offaccept
If id = id3 then offaccept
If id = id4 then offaccept
If porta.2=0 then firealarm ' см. выше
If porta.3=0 then alarm ' проверка охранного шлейфа
Goto onsig ' зацикливаем
Firealarm1: ' п.п. пожарной тревоги
Dtmfout portb.0,[13,14,15]
Sound PORTB.7,[100,10,50,10]
'Орем короткое время примерно 1 секунду , допиши саунд на порт б 1
Pause 300
'Sound (хз как . дописать)
'Орем короткое время примерно 1 секунду
Pause 300
Sound PORTB.7,[100,10,50,10]
'Орем короткое время примерно 1 секунду
Goto offsig
Firealarm: ' вторая прога пож тревоги (надо так )
Dtmfout portb.0 ,[10,9,8]
'Sound (хз как . дописать)
' Орем короткое время примерно 1 секунду
Pause 300
' Sound (хз как . дописать)
'Орем короткое время примерно 1 секунду
Pause 300
'Sound (хз как . дописать)
'Орем короткое время примерно 1 секунду
Goto onsig
Alarm:
Dtmfout portb.0 ,[12,11,10]
'Sound (хз как . дописать)
' Орем долгое время примерно 3 секунды
Goto onsig
Onaccept:
Dtmfout portb.0 ,[1]
Goto onsig
Offaccept:
Dtmfout portb.0 ,[2]
Goto offsig
led:
high portb.7
pause 1000
low portb.7
pause 100
high portb.7
pause 1000
low portb.7
goto led
Большая просьба к BASICPIC найти и выложить замок на IBUTON , уж очень интересно.