Блин еще часы ds1307 идти не хотели заразы
Блин еще часы ds1307 идти не хотели заразы
Код: Выделить всё
Flag_init = 1 ' выставляем флаг означающий подготовку датчика к работе, флаг обработается в прерывании
Waitms 700 ' ждем время пока датчик там у себя подготовит данные
Flag_read = 1 'готовим датчик для отправки
Waitms 50
Disable Interrupts ' ...и собственно считываем данные причем с отключенными прерываниями - иначе никак
T1 = 1wread()
T2 = 1wread()
Enable Interrupts
......
' это обработка флагов в прерывании
Reset Portd.4 : Reset Portd.5 гашу цифры индикатора, и пока не горит работаю с датчиком.
If Flag_init = 1 Then 'обработка флага инициализации
1wreset
1wwrite &HCC
1wwrite &H44
Flag_init = 0
End If
If Flag_read = 1 Then 'оюработка флага на чтение
1wreset
1wwrite &HCC
1wwrite &HBE
Flag_read = 0
End If
можно, но будет и подмигивать раз в минуту, всеравно же проблема не уйдет? только период растянется. Пока мне непонятен один момент, почему 1wread() помещенный в прерывание выдает ошибкуосторожно! леоныч!!! писал(а):Можно принимать данные раз в минуту...

Вам надо отслеживать есть ли напряжение в какой то момент или нет?Vet-RX писал(а):Как сделать так чтобы можно было отследить это время и включить или отключить нагрузку?
Код: Выделить всё
Dim Ma As Byte ‘Переменная минут включения будильника
Dim Ha As Byte ‘Переменная часов включения будильника
Dim Ma2 As Byte ‘Переменная минут выключения будильника
Dim Ha2 As Byte ‘Переменная часов выключения будильника
Dim alarm_set As Byte ‘Переменная для будильника
Dim alarm_on_off As Byte ‘Переменная статуса будильника
READEEPROM alarm_on_off, 0
If alarm_on_off=1 Then Set Portd.1 ‘включили будильник если в переменная alarm_on_off=1
READEEPROM Ha, 2
READEEPROM Ha2, 3
READEEPROM Ma, 4
READEEPROM Ma2, 5
'alarm_set = 0 ‘будильник выкл.
alarm_set = 1 ‘будильник вкл.
If Ha >= _hour And Ma >= _min And Portd.1=0 And alarm_set = 1 Then
Set Portd.1 ‘включили будильник
alarm_on_off=1
Writeeeprom alarm_on_off, 0 ‘запомнили будильник включен
end If
If Ha2 = _hour And Ma2 = _min And Portd.1=1 And alarm_set = 1 Then
Reset Portd.1 ‘выключили будильник
alarm_on_off=0
Writeeeprom alarm_on_off, 0 ‘запомнили будильник выключен
end If
Do
Loop
Endне очень понятно для чего отслеживать, что вы дальше мечтаете сделать с эти событием/несобытием. Пусть будет введена переменная Счет_Стартов , которая будет увеличиваться при каждой коммутации нагрузки и сохраняться в энергонезависимой памяти, тогда даже спустя месяц можно будет прийти и посмотреть сколько раз не было питания в 8.25.Vet-RX писал(а):Но вот как отследить если не было питания?
очень много непонятно, в чем геморрой условия - разъясните подробней.По условию немного много гемороя, и не всегда условие будет правильное.
Код: Выделить всё
Keyboard_data:
Data "1" , "4" , "7" , "*" , "2" , "5" , "8" , "0"
' 0 1 2 3 4 5 6 7
Data "3" , "6" , "9" , "#" , "A" , "B" , "C" , "D"
' 8 9 10 11 12 13 14 15