nsl2004 писал(а):Выходит Bascom скорее мертв, чем жив?
С Баскомом-то всё в порядке, проблема явно в вашем конкретном случае (у меня этот пример нормально работает "в железе")
nsl2004 писал(а):Выходит Bascom скорее мертв, чем жив?
Секретный кот писал(а):nsl2004 писал(а):Выходит Bascom скорее мертв, чем жив?
С Баскомом-то всё в порядке, проблема явно в вашем конкретном случае (у меня этот пример нормально работает "в железе")
Секретный кот писал(а):Я не знаю, что значит "по-разному", у меня в железе показывает правильный номер ключа.
nsl2004 писал(а):Секретный кот писал(а):nsl2004 писал(а):Выходит Bascom скорее мертв, чем жив?
С Баскомом-то всё в порядке, проблема явно в вашем конкретном случае (у меня этот пример нормально работает "в железе")
Работать то он работает, но почему по разному?
VladI+ писал(а):Верят слепо в PROTEUS ,как в какую то догму.
Если не работает в PROTEUSe- значит вообще не работает!
В первой русскоязычной публикации А. МАКСИМОВ предупреждал (Журнал Радио 05/2005)
"Следует предостеречь разработчиков от слепого доверия к результатам компьютерного моделирования и отладки.Они верны лишь в той мере,в которой свойства использованных моделей компонентов совпадают с реальностью...
Поэтому,компьютерное моделирование вовсе не отменяет необходимости знания принципов и особенностей работы тех или иных узлов и проверки полученных результатов на реальном устройстве."
nsl2004 писал(а):Какой пример из двух приведенных мной работает нормально?
nsl2004 писал(а):С этим никто не спорит. Но ответ хотелось бы получить по существу вопроса, а не в принципе о глобальном. Что красается Proteusa и других симуляторов - есть хорошее выражение "... ты просто не умеешь их готовить..."
А суть вопроса - почему при одинаковых условиях два кода предназначеных для чтения сериала 1-wire устройств работают по разному. Подробности в моем посте выше.
Код: Выделить всё
Dim Reg_no(8) As Byte
Dim Ar(8) As Byte
.......
' Первый вариант, серийник опраеляется нормально
1wreset 'reset the device
Waitms 500
W = 1wirecount()
Print W ; " " ; "1-wire device"
Reg_no(1) = 1wsearchfirst(portd , 5)
For I = 1 To 8
Print Hex(reg_no(i));
Next
Print " " ; "SERIAL NUMBER" 'print the number
' Второй вариант, тоже определяется нормально
1wreset
Waitms 500
' 1wwrite &HF0
1wwrite &H33
Ar(1) = 1wread(8)
' Print "Number";
For I = 15 To 22
Print Hex(ar(i));
Next
Print
Код: Выделить всё
; uses R19,R22,R23,R24,R25,R30,R31
; ar(1) = 1wsearchFirst(port,pin)
; ar(1) = 1wsearchNext(port,pin)
_1wire_Search_First:
Clr r19 ; очистить регистр
* Sts {___1wlast_discrepancy},R19 ; 1wlast_discrepancy = 0 ; что то загружаем в COЗУ начиная с 0 адреса
; Ldi R19,128 ; устанавливаем MS bit , знаем что вызываем Первую функцию????
* Sts {___1w_bitstorage},R19 ; clear all used bits
Si-Soft писал(а):nsl2004 Я не понимаю зачем так замарачиваться, ведь один код работает, что вам еще нужно.