Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

; *************

; * ФУНКЦИЯ: Передает 1-байтное значение ведомому 1-Wire *

; * РЕСУРСЫ: Макрокоманда Delay_us, формирующая задержку N мкс *

; * ВХОД: Передаваемй байт в DATA_OUT *

; * ВЫХОД: DATA_OUT обнуляется; W, STATUS изменяются *

; *************

WRITE_1W movlw 8; Количество проходов цикла

                 movwf COUNT

W_LOOP    bcf INDF,DAT; Спадающий фронт — СТАРТ

                 Delay_us 1; Ждем 1 мкс

                 rrf DATA_OUT,f; Выдвигаем байт через перенос

                 btfsc STATUS,С; Бит равен 1?

                 bsf INDF,DAT; ЕСЛИ да, ТО выставляем ВЫСОКИЙ уровень

                 Delay_us d’60’; Удерживаем в течение 60 мкс

                 bsf INDF,DAT; Высвобождаем линию

                 Delay_us 1; Ждем 1 мкс

                 decfsz COUNT,f; Повторяем восемь раз

                    goto W_LOOP

                 return

; ******************

; * ФУНКЦИЯ: Принимает 1-байтное значение от ведомого 1-Wire *

; * РЕСУРСЫ: Макрокоманда Delay_us, формирующая задержку N мкс *

; * ВХОД: Нет *

; * ВЫХОД: Принятый байт в DATA_IN; W, STATUS изменяются *

; ******************

READ_1W movlw 8; Количество проходов цикла

                movwf COUNT

R_LOOP bcf INDF,DAT; Спадающий фронт — СТАРТ

             Delay_us 1; Ждем 1 мкс

             bsf INDF,DAT; Высвобождаем линию

             Delay_us 8; Ждем 8 мкс, чтобы дать возможность ведомому выставить данные

             bcf STATUS,С; Сбрасываем флаг переноса

             bcfsc INDF,DAT; Проверяем состояние входа

             bsf STATUS,С; ЕСЛИ 1, TO устанавливаем флаг переноса

             rrf DATA_IN,f; Задвигаем бит в регистр

             Delay_us d’48’; Ждем до конца слота

                 goto R_LOOP

             decfsz COUNT,f ; Повторяем восемь раз

             return

; ********************

; * ФУНКЦИЯ: Сбрасывает ведомого 1-Wire *

; *********************

RESET_1W bcf INDF,DAT; Выставляем НИЗКИЙ уровень

                 Delay_us d’140’; Ждем 480…960 мкс

                 Delay_us d’140’; С помощью макрокоманды можно получить

                 Delay_us d’140’; величину задержки (3*0.2)*255, только

                 Delay_us d’80’; если процессор работает на 20 МГц

                 bsf INDF,DAT; Высвобождаем линию

                 Delay_us d’60’; Ведомый выставляет НИЗКИЙ уровень через 15…60 мкс

                 RESET_LOOP

                 btfss INDF,DAT; А затем высвобождает линию

                    goto R_LOOP; Ждем, пока на линии не появится ВЫСОКИЙ уровень

                 return;

Вопросы для самопроверки

12.1. Перепишите Программу 11.5 со стр. 351, но с использованием модуля SPI, показанного на Рис. 12.4. Подсказка: вместо проверки итоговых 1-байтных значений более эффективным решением может стать побитовая проверка вдвигаемого значения.

12.2. Покажите, как можно подключить четыре АЦП МАХ518 (см. Рис. 12.16) к одной шине I2С и как можно загрузить значение 1-го канала третьего АЦП.

12.3. Обмен по шине 1-Wire начинается с формирования ведущим импульса сброса, при котором ведущий выставляет на линию НИЗКИЙ уровень на время 480…960 мкс, после чего линия высвобождается. В ответ на это ведомый выставляет на линию НИЗКИЙ уровень с задержкой не более 60 мкс. Это состояние удерживается на линии в течение 60…240 мкс, после чего ведомый высвобождает линию. Напишите подпрограмму, выполняющую описанные действия. Предполагается, что в вашем распоряжении имеются ресурсы Программы 12.20.

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки