otest писал(а):Что за набор файлов в папке проекта? Чем он запускается ?
Это проект
MPLAB X Извините - это я правда не подумал про различие с Х и без Х т.к. в программе без Х я не работал. MPLAB X.
NStorm писал(а):Не по факту, а в протеусе.
Не только, на окне уже год висит термометр на 18B20 - работает без сбоев - там та же программа и 750 микросекунд. На макетке тоже работает. Может в даташите ошибка?
NStorm писал(а):PORTDQ equ PORTA
TRISDQ equ TRISA
Я не сам, конечно, из головы выдумывал код - а по шпаргалкам и подсказкам в интернете - но не ctrl V+ctrl C, а все вдумчиво и руками написано - где-то встретил что если присваивать имя порту и номеру порта - то потом проще менять код для разных МК, например pic16f676 PORTC, pic16f628А PORTB, и также с ножкой вывода.
Про отрицательные значения в термометре написан такой код:
Opredelenie_Znaka
clrf Ind_Znak;0
movf Temp,0
btfss Temp,7
return
incf Ind_Znak,1
comf Temp,0
addlw .1
return
Но мне он тут не нужен, т.к. если от датчика получено отрицательное значение - то программа ветвится по goto на включение ножки 5 и далее на начало программы.
Добавлено after 11 minutes 9 seconds:T4 equ b'00000100'; 0x04
T6 equ b'11111001'; 0xF9
Это что ?
Это моя задумка реализации условия больше/меньше
цифры 4 и 249 записываются в 2 регистра общего назначения.
Если из чисел от 0 до 3-х вычесть число 4 - тобудет займ в регистре STATUS - так мы отследим, что число температуры находится от 0 до 4.
Далее т.к. в 8-битном регистре максимальное число это 255
То если прибавить число 249 и число больше 6 (от 7 до 255) то в регистре STATUS можно отследить перенос теми же флагами, что и с займом.
Нашел ошибки в своем коде - вот исправленный вариант - но пока еще не работает:
bcf STATUS,C
bcf STATUS,DC
bcf STATUS,Z
MOVF T4,0
SUBWF Temp,0 ;vichitanie is Temp-4=?
BTFSC STATUS,Z ; 0?
goto VKL ; esli 0 to vkl
BTFSC STATUS,DC ;proveriaem zaim desyatok
goto VKL ;bil zaim to vkl
BTFSC STATUS,C ;proveriaem zaim edinic
goto VKL ;bil zaim to vkl
MOVF Temp,0 ;W=temp
bcf STATUS,C
bcf STATUS,DC
bcf STATUS,Z
ADDWF T6,0 ;slozenie temp i 6
BTFSC STATUS,Z ; 0?
goto VIKL ; esli 0 to vikl
BTFSC STATUS,DC ;proveriaem zaim desyatok
goto VIKL ;bil zaim to vikl
BTFSC STATUS,C ;proveriaem zaim edinic
goto VIKL ;bil zaim to vkl
Где, Temp - значение температуры от датчика
Добавлено after 48 minutes 19 seconds:STATUS,5 - нужно применять однозначные имена флагов C,Z,RP и т.д.
С DC и Z - флаги переноса/заема, десятичного переноса/заема и нулевого результата, 0, 1 и 2
RP5 и RP6 флаги выбора банка 0,1,2,3 (у pic16f628 4 банка)
Имеете ввиду в шапке присваивать значения:
С equ 0
DC equ 1
Z equ 2
RP0 equ 5
RP1 equ 6 и дальше использовать имена для наглядности?
Последний раз редактировалось
profradio Ср дек 02, 2020 13:35:21, всего редактировалось 1 раз.