Курсовая работа: Программирование микроконтроллеров
Рис.2.2 Простая схема подключения датчика на основе геркона
На вход микроконтроллера через резистор R1 подается напряжение от источника питания +5 В. Микросхема воспринимает это напряжение как сигнал логической единицы. При срабатывании датчика контакты замыкаются и соединяют вывод микроконтроллера с общим проводом. В результате напряжение на входе Р1.0 падает до нуля. В следствии микросхема воспринимает входной уровень сигнала как логический ноль. Резистор R1 при этом служит токоограничивающим элементом, предотвращая короткое замыкание между шиной питания и общим проводом.
Рассмотрим программу для обслуживания вышеупомянутого датчика (Листинг 2.3.), которая, постоянно опрашивает датчик и в зависимости от состояния запускает одну из двух специальных процедур.
1 2 3 4 5 6 7 |
; Программа обработки сигнала с датчика m1: movp1.0,#1 ; Записываем 1 в соответствующий разряд порта movc,p1.0 ; Читаем состояние датчика в битовый аккумулятор jcm2 ; Если контакты датчика разомкнуты, перейти к m2 callproc1 ;Вызов процедуры обработки нажатия контакта jmpm1 ; Возврат к началу (следующий цикл считывания) m2: callproc1; Вызов процедуры обработки размыкания контакта jmpm1 ; Возврат к началу (следующий цикл считывания) |
Листинг 2.3.
Здесь явно видно, что программа записывает в линию Р1.0 сигнал логической единицы (строка 1). Это необходимо для того, чтобы данная линия могла работать на ввод информации.
Следующая команда считывает бит информации, поступающей от датчика, и помещает ее в регистр признака переноса (строка 2). В микропроцессорной технике принято ячейку признака переноса обозначать как CY . Ячейка CY используется как аккумулятор для битовых операций. Если в момент считывания сигнала контакты датчика были разомкнуты, то в ячейке CY окажется логическая единица. Если контакты замкнуты, то там будет логический ноль.
Оператор условного переходаjc осуществляет оценку содержимого CY (строка 3). Если в CY логический ноль, то управление передается на меткуm2, и выполняется команда callргос2 (строка 6). В противном случае передача управления не происходит и выполняется командаcall proc1 (строка 4). Оператор call - это вызов подпрограммы. Поэтому, в зависимости от состояния датчика вызывается одна из двух подпрограмм: proc1 или ргос2.
Раздел 3. Практическая реализация программы на микроконтроллере
Задача. Построить схему на микроконтроллере, в моем случае это микроконтроллер АТ89С2051 фирмы Atmel,который в зависимости от положения 4 переключателей зажигал бы 6 светодиодов (лампочек).
Решение: для реализации построил простейшую схему светодиодного индикатора (Рис.3.1.), которое используется не только в моем примере, а и в любом устройстве в качестве светового индикатора.
Рис.3.1 Простейшая схема светодиодного индикатора
Использовав схемы вышеупомянутых схем (Рис.2.1.,2.2.,3.1.), построил схему согласно поставленной задачи. Код программы написан на языке ассемблера для микроконтроллера АТ89С2051 (Cross-Assembler8051, Version1.2h).
Как видно из схемы порт Р1 работает как порт ввода. Шесть младших P3 работают на вывод. Возможен и обратный вариант (Р1 на вывод, Р3 на ввод).