Ребята, благодарю за ответы! Я не студент - просто как-то затронула тема программирования МК - втянулся, посмотрел, почитал, поизучал асм, сделал термометр в квартиру на pic16f676 c динамическим индикатором, потом купил ардуинок - поизучал си - понял, что си облегчает жизнь, особенно на ардуинках:) Ну в общем не специалист - так, поверхностно нахватался:) Занимаюсь ради интереса.
Про выложенный код асм - да, вспомнил - я начал писать программу, но столкнулся с трудностью - как сделать условие больше >CONST< меньше на асм и не дописал - решил делать на си - но не заработало и я бросил. Замечание про "__delay_us(750); заменить на Код: __delay_ms(750);" верно, но по факту работает и с задержной в 750 микросекунд.
Я тут тоже времени не терял - нашел у себя в закромах МК PIC16F628A и решил для него писать код на асм - т.к. на асм меньше вероятность допустить неявных ошибок.
На сегодня код такой -
Это проект в MPLAB v3.65
Комментарии, написанные на кириллице превращаются в знаки вопроса - теперь стараюсь писать на латинице.
Пока код примитивный - считывание двухбайтного числа с DS18B20 - затем отбрасывание полубайтов знака и дробной части и склейка с переворотом восьмибитного значения с левым битом знака и проверка на наличие знака минус - это вкл, далее проверка 6,5,4,3 бита на наличие 1 - это выкл.
Проверяю в протеусе - пока работает так: когда температура ниже нуля - 5-я нога порта В включает нагрузку/нагреватель (высокий уровень), а когда температура выше 8 градусов - выключает (гистерезис такой в 8 градусов).
Но мне нужно вкл 4 градуса выкл 6 градусов.
Для этого написал такой кусок кода:
;movf Temp,0 ;W=temp
;bcf STATUS,0
;bcf STATUS,1
;bcf STATUS,2
;SUBWF T4,0 ;vichitanie is W-4=?
;BTFSC STATUS,2 ; 0?
;goto VKL ; esli 0 to vkl
;BTFSC STATUS,1 ;proveriaem zaim desyatok
;goto VKL ;bil zaim to vkl
;BTFSC STATUS,0 ;proveriaem zaim edinic
;goto VKL ;bil zaim to vkl
;movf Temp,0 ;W=temp
;bcf STATUS,0
;bcf STATUS,1
;bcf STATUS,2
;ADDWF T6,0 ;slozenie temp i 6
;BTFSC STATUS,2 ; 0?
;goto VIKL ; esli 0 to vikl
;BTFSC STATUS,1 ;proveriaem zaim desyatok
;goto VIKL ;bil zaim to vikl
;BTFSC STATUS,0 ;proveriaem zaim edinic
;goto VIKL ;bil zaim to vikl
Где T4 = b'00000100'
А Т6 = 255 - 6 = 249 b'11111001'
Но этот код пока не работает - вот разбираюсь, почему.
Файл в протеусе:
По поводу схемы - вот схема в SL-out
И схема принципа подключения нагрузки:
Про уже готовые проекты - можно взять готовый или проще купить в радиомагазине готовое устройство - для меня дело в интересе - хочу сделать максимально простую схему без дисплеев, индикаторов, кнопок и другого усложнения - значение температуры срабатывания зашивается и хранится в самом МК.