vovavova писал(а): С системами счисления знаком, конечно. Я пишу программы не очень сложные, только на бейсике. Так что с программированием немножко знаком, так сказать.
Ну вот, а пишете о дремучем лесе
Ассемблер освоить проще, да и С после бейсика уже не будет казаться таким сложным.
Что касаемо пауз в программе. Давайте разберем, пауза в 1 секунду, для этого надо вызвать подпрограмму, формирующую паузу в 100 мс десять раз :
- Код: Выделить всё
PAUSE1s movlw 0x0A
movwf Temp3 ;В переменную Temp3 помещается число 0х0А, то-есть 10
call PAUSE100ms ;Вызывается подпрограмма, которая будет выполняться строго 100 мс
decfsz Temp3,1 ;Переменная Temp уменьшается на единицу, Temp=Temp-1
goto $-2 ;Эта строка выполняется только если Temp не равен нулю - переход вверх на две строки, call
return ;Если Temp=0, то выдержка завершена, выход из подпрограммы PAUSE1s
Аналогично и в подпрограмме паузы на 100 мс. Использование нескольких вложенных друг в друга циклов связано с тем, что одна переменная может иметь значения от 0 до 255 (То есть один цикл можно выполнить 256 раз) и этого мало для больших задержек. Конечно, если меньшие задержки в программе нигде не используются, то все это можно соединить в одну подпрограмму. А 100 мс мне тоже где-то нужны были отдельно. В С можно было просто написать _delay_ms 1000; , что означает запуск стандартной подпрограммы, которая устроена аналогично с помощью циклов.
В PICах есть еще такая штука, что выполнение одной команды занимает 4 такта, то-есть команда NOR при 4МГц выполняется 1 мкс. (А в AVR операция занимает 1 такт.) Выходит, что если в программе написать NOR 1000 раз, заняв половину памяти, то это займет всего-то 1 мс.
Вы написали, что легче писать программы для МК на С, то есть, можно использовать язык высоко уровня, не обязательно ASM ??? Скажите: есть ли, в таком случаи, какой-то редактор написания программ под МК на обычном бейсике???
К сожалению с Бейсиком я знаком совсем немного, насколько я понимаю Бейсик имеет много разных похожих вариантов, помню у меня даже была на старом телефоне программа на Яве, где можно было писать программы на упрощенном бейсике, которые компилировались в яву, собственно для запуска на этом самом телефоне. Было забавно. Для МК вроде существуют коммерческие среды разработки на Бейсике, но это экзотика. Производители чипов дают бесплатные программы только для С и ассемблера.
Для разработки нужна программа, где можно написать текст на С или Ассемблере, выполнить какую-то простую отладку, скажем просчитать время выполнения, и получить файл hex для прошивки. Для AVR это фирменные Atmel Studio, для PIC это MPLAB IDE, или иные варианты редакторов-компиляторов сторонних разработчиков. Помню даже видел какой-то визуальный редактор, про него и в Радио были заметки, там картинку из блоков составлять, но лучше не ищите это чудо.
Вы написали, что CRC - это алгоритм вычисления контрольной суммы, так сказать, для проверки верности переданных данных. Получается, что 8 переданных байтов вычисляются по алгоритму CRC и результат должен совпасть с 9 байтом переданных данных. Вот тут интересное замечание: а если ошибка попадет как раз на 9-й байт??? Ведь где гарантия, что 9-й байт всегда будет передаваться безошибочно??!! Вот что тогда???
Смотрите внимательнее, датчик после команды чтения может выдать 9 байт, 8 информационных и 1 последний это CRC, которую он сам вычислил при передаче этих 8 байтов.
Мы, принимая тоже вычисляем CRC этих 8 байтов. А потом приняв 9 байт с версией CRC датчика сравниваем со своим подсчетом. То есть, если контрольная сумма, вычисленная нами и датчиком не сходится, то была где-то ошибка, может в первых 8 байтах, а может и в контрольном 9, где именно не известно. Возможно, что температура в первых 2 байтах была принята без ошибок, а ошибка возникла позднее, но это не важно, результат один, раз была ошибка, значит лучше повторить чтение с самого начала, чтобы однажды на дисплее не мелькнули каракули. Для термометра это может и не страшно, через несколько секунд данные обновятся, но термостат может выполнить не нужное действие из-за ошибки. Да и производитель датчика рекомендует не игнорировать эту функцию.
Ранее Вы писали о программе Proteus, это программа для построения схемы, ее виртуального запуска, и полуавтоматического создания чертежей платы. Про 3-D картинку собранной платы и формирование спец. файлов для передачи на промышленные ЧПУ станки для изготовления плат я уже молчу. Советую заиметь, правда тяжелая, под гигабайт места занимает на диске, ну и ... понятно, что бесплатно производитель ее не раздает. В ней я и проверил работу программы, пробуйте, если надо по мелочи дополню что-то, там еще можно минус сдвигать вправо при однозначной температуре.
Так что чем могу помогу, удачи Вам!