термометр на pic16f876 и DS18B20
- Сообщения: 6
- Зарегистрирован: Вт фев 09, 2016 20:42:40
доброго времени суток Попытался написать программу термометра ( в написании программ не шибко силен) где ошибка не могу понять Смоделировал схему в протеусе По идее в регистрах T_L и T_H должен лежать результат преобразования температуры а по факту находятся числа 255 и в T_L и T_H Вот фрагмент прграммы
- Реклама
Ну дак включите в нём пошаговуюю отладку, подцепите осциллограф, погуляйте по коду в отладке. И всё выяснится, где ошиблись.MORE400 писал(а):Смоделировал схему в протеусе
- Сообщения: 7853
- Зарегистрирован: Ср фев 11, 2009 20:35:58
- Сообщения: 6
- Зарегистрирован: Вт фев 09, 2016 20:42:40
- Сообщения: 7853
- Зарегистрирован: Ср фев 11, 2009 20:35:58
Ну а где схема , протеус ? Партизан ?
#define PORTDAL PORTB,0 ; регистр данных порта ДАЛЛАСА
#define LINE PORTB,0 ; линия порта ДАЛЛАСА
#define DALLAS PORTB,0 ; шина связи с ДАЛЛАСОМ
Это как надо понимать ? Три функции у одного пина ?
--------------------------------
_LINE_0 macro
_BANK_1
bcf TRISB,0
_BANK_0
bcf PORTB,0
endm
_LINE_1 macro
_BANK_1
bsf TRISB,0
_BANK_0
bsf PORTB,0
endm
Это макросы управления регистром TRISB. они не дают изменения выхода порта.
Поэтому порт ни чего не передаёт
bit_1 ; передачa бита с уровнем "1"
_LINE_0
_LINE_1
call Del_60 ; задержка60мкс.
goto p_b1
#define PORTDAL PORTB,0 ; регистр данных порта ДАЛЛАСА
#define LINE PORTB,0 ; линия порта ДАЛЛАСА
#define DALLAS PORTB,0 ; шина связи с ДАЛЛАСОМ
Это как надо понимать ? Три функции у одного пина ?
--------------------------------
_LINE_0 macro
_BANK_1
bcf TRISB,0
_BANK_0
bcf PORTB,0
endm
_LINE_1 macro
_BANK_1
bsf TRISB,0
_BANK_0
bsf PORTB,0
endm
Это макросы управления регистром TRISB. они не дают изменения выхода порта.
Поэтому порт ни чего не передаёт
bit_1 ; передачa бита с уровнем "1"
_LINE_0
_LINE_1
call Del_60 ; задержка60мкс.
goto p_b1
- Реклама
- Сообщения: 6
- Зарегистрирован: Вт фев 09, 2016 20:42:40
- Сообщения: 6
- Зарегистрирован: Вт фев 09, 2016 20:42:40
"чтото не то" - это что ? Что за фразы такие таинственные ?
У Вас в руках, хоть какое, но средство отладки - протеус. В чём проблема, до сих пор не могу понять ?
Подключили .cof файл и пошагали...
У Вас в руках, хоть какое, но средство отладки - протеус. В чём проблема, до сих пор не могу понять ?
Подключили .cof файл и пошагали...
- Сообщения: 7853
- Зарегистрирован: Ср фев 11, 2009 20:35:58
prm_bait_1 _BANK_1
bcf TRISB,0
_BANK_0
bcf PORTB,0 ;_LINE_0 ; Формирование на линии уровня 0.
_BANK_1
bsf TRISB,0
_BANK_0
bsf PORTB,0 ;_LINE_1 ; Формирование на линии уровня 1.
=======
Поставь здесь коменты.
Ты что издеваешся?
АСМ отдельно DSN отдельно. Сложи всё в проект .
bcf TRISB,0
_BANK_0
bcf PORTB,0 ;_LINE_0 ; Формирование на линии уровня 0.
_BANK_1
bsf TRISB,0
_BANK_0
bsf PORTB,0 ;_LINE_1 ; Формирование на линии уровня 1.
=======
Поставь здесь коменты.
Ты что издеваешся?
АСМ отдельно DSN отдельно. Сложи всё в проект .
Код: Выделить всё
btfss STATUS,C
goto bit_0 ; передачa 0.
goto bit_1 ; передачa 1.
Говорю же человеку, уже 3-ий раз, пройдись отладкой, сразу все косяки всплывут. Дак нет, мы упрямимся, файлами нас забрасываем... Ищите мол ошибку за меня...
Хотя подобные ошибки в протезе ищутся на ура. Нужно просто пошагать и посмотреть что творится на линии.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Собственно 1wire шину так и реализовали - пин с OD, в PORT 0 и дергали TRIS . Что тебя смущает?otest писал(а): Это макросы управления регистром TRISB. они не дают изменения выхода порта.
Поэтому порт ни чего не передает
Нормальные макросы были. Проблема не в них. Верните их обратно.
Можно их вообще в один собрать :Использование :
Один из косяков я показал выше, исправляйте.
Можно их вообще в один собрать :
Код: Выделить всё
_LINE_ macro val
banksel TRISB
bcf TRISB, val
banksel PORTB
bcf PORTB, val
endm
Код: Выделить всё
_LINE_ 0 ; В линию 0
_LINE_ 1 ; В линию 1
Блин, 5 минут - подцепить протеус к МПЛАБу и пошагать.
Получил температуру = 85 'C, что не удивительно.
Разбирайтесь...
Спойлер
Разбирайтесь...
- Сообщения: 6
- Зарегистрирован: Вт фев 09, 2016 20:42:40
я понял в каком направлении копать У меня нет конвертации температуры В далласе лежит температурв 85 и в T_L b T_H по 255 что контроллер и читает Думаю разберусь


