Устройство ультразвукового измерения дальности
Работа устройства ультразвукового измерения дальности. Синтез функциональной схемы микропроцессорной системы на основе анализа исходных данных. Программа разбита на отдельные подпрограммы, которые взаимодействуют друг с другом согласно схеме программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 01.07.2008 |
Размер файла | 445,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
goto wait4 ;если сигнал есть-переходим на метку wait4
если сигнала нет-продолжаем счет времени
btfss INTCON, TOIF ;проверяем флаг прерывания по переполнению таймера
goto wait2 если флаг равен 0 (счетчик не
;-----------------------------------------------------переполнен)-выполняем проверку
decfsz TIMER1, 1 ;если флаг равен 1 (счетчик переполнен)-уменьшаем TIMER1 на 1
goto wait3 ;если TIMER1 не равен "0"
;-----------------------------------------------------продолжаем ожидание если TIMER1 равен "0"-
movlw d'100' ;помещаем значение "100" для TIMER1 в аккумулятор
movwf TIMER1 ;помещаем значение из аккумулятора в TIMER1
decfsz TIMER2, 1 ;уменьшаем значение TIMER2 на 1
goto wait3 ;если TIMER2 не равен "0"
;-----------------------------------------------------продолжаем ожидание
если TIMER2 равен "0" (сигнал уже не вернется)-заполняем ;значения DIGIT1..3
movlw d'9' ;помещаем значение "9" для переменной DIGIT1 в аккумулятор
movwf DIGIT1 ;помещаем значение из аккумулятора в DIGIT1
movlw d'9' ;помещаем значение "9" для переменной DIGIT2 в аккумулятор
movwf DIGIT2 ;помещаем значение из аккумулятора в DIGIT2
movlw d'9' ;помещаем значение "9" для переменной ;DIGIT3 в аккумулятор
movwf DIGIT3 ;помещаем значение из аккумулятора в DIGIT3
;---------------------------------------------------------------------------------------------------------
goto main1 ;возврат из подпрограммы (сигнала нет)
wait4 goto main4 ;возврат из подпрограммы (сигнал есть)
;==============================================================
reception ;подпрограмма приема отраженного сигнала
;---------------------------------------------------------------------------------------------------------
ожидание окончания сигнала
recp1 btfsс PORTA, 1 ;проверяем наличие сигнала на линии RA1 порта А
goto recp1 ;если сигнала есть-продолжаем ожидание
;-----------------------------------------------------если сигнала нет-начинаем проверку
recp6 movlw d'251' ;помещаем значение "251" для таймера в аккумулятор
movwf TMR0 ;помещаем значение из аккумулятора в таймер
bcf INTCON, TOIF ;устанавливаем в 0 флаг прерывания по переполнению таймера
recp1 btfss INTCON, TOIF ;проверяем флаг переполнения таймера
если таймер не переполнен-
btfsc PORTA, 1 ;проверяем отсутствие сигнала на линииRA1 порта А
если таймер переполнен или есть
goto recp2 ;сигнал-идем на метку recp2
;если таймер не переполнен и нет
goto recp1 ;сигнала-идем на метку recp1
;-----------------------------------------------------проверяем флаг переполнения таймера
recp2 btfss INTCON, TOIF ;если таймер не переполнен-
goto recp3 ;сигнал не наш-идем на метку recp3
;---------------------------------------------------------------------------------------------------------
movlw d'252' ;помещаем значение "252" для таймера в аккумулятор
movwf TMR0 помещаем значение из аккумулятора в таймер
bcf INTCON, TOIF ;устанавливаем в 0 флаг прерывания по переполнению таймера
recp4 btfss INTCON, TOIF ;проверяем флаг переполнения таймера если таймер не переполнен-
btfss PORTA, 1 ;проверяем наличие сигнала на линии RA1 порта А
если таймер переполнен или нет
goto recp5 ;сигнала-идем на метку recp5
;если таймер не переполнен и есть
goto recp4 ;сигнал-идем на метку recp4
;-----------------------------------------------------проверяем флаг переполнения таймера
recp5 btfss INTCON, TOIF ;если таймер не переполнен-
goto recp3 сигнал не наш-идем на метку recp3
;---------------------------------------------------------------------------------------------------------
decfsz NUMIMP, 1 ;уменьшаем значение NUMIMP на "1"
goto recp6 ;если NUMIMP не равен "0"-продолжаем проверку
goto main5 ;если NUMIMP равен "0"-возврат из подпрограммы
recp3 goto main3 ;продолжение ожидания сигнала
;==============================================================
calculation ;подпрограмма вычисления расстояния
;инвертируем значения TIMER1 и
;-----------------------------------------------------TIMER2
movf TIMER1,0 ;записываем значение переменной TIMER1 в аккумулятор
clrf TIMER1 ;обнуляем значение TIMER1
sublw d'100' ;из числа 100 вычитаем значение аккумулятора
movwf TIMER1 ;записываем полученное значение в переменную TIMER1
movf TIMER2,0 ;записываем значение переменной TIMER2 в аккумулятор
clrf TIMER2 ;обнуляем значение TIMER2
sublw d'100' ;из числа 100 вычитаем значение аккумулятора
movwf TIMER2 ;записываем полученное значение в переменную TIMER2
;-----------------------------------------------------устанавливаем значения для LAPSE и DIGIT1..3
clrf LAPSE ;обнуляем значение LAPSE
movlw d'57' ;записываем в аккумулятор значение "57"
movwf LAPSE ;записываем значение аккумулятора в переменную LAPSE
clrf DIGIT1 обнуляем значение DIGIT1
clrf DIGIT2 ;обнуляем значение DIGIT2
clrf DIGIT3 ;обнуляем значение DIGIT3
;-----------------------------------------------------записываем в аккумулятор вычитаемое
calc3 movlw d'6' ;"6"
subwf TIMER1, 1 ;вычитаем из переменной TIMER1 значение аккумулятора
проверяем флаги регистра STATUS
btfss STATUS, C ;флаг Z-нулевого результата
btfsc STATUS, Z ;и флаг C-переноса
goto calc4 ;если флаги Z и C не равны 0
goto calc1 ;если Z=0 и C=0 значит результат отрицательный
;-----------------------------------------------------меняем значения DIGIT1…3 и LAPSE
calc4 incf DIGIT1, 1 ;увеличиваем переменную DIGIT1 на "1"
movlw d'10' ;записываем в аккумулятор значение "10"
subwf DIGIT1, 0 ;вычитаем значение аккумулятора из переменной DIGIT1
btfss STATUS, Z ;проверяем результат на "0"
goto calc2 ;если результат не "0" идем на метку
;-----------------------------------------------------calc2
decf DIGIT1, 1 ;если результат равен "0" уменьшаем переменную DIGIT1 на "1"
incf DIGIT2, 1 ;увеличиваем переменную DIGIT2 на "1" (переносим разряд)
movlw d'10' ;записываем в аккумулятор значение "10"
subwf DIGIT2, 0 ;вычитаем значение аккумулятора из переменной DIGIT2
btfss STATUS, Z ;проверяем результат на "0"
goto calc2 ;если результат не "0" идем на метку
;-----------------------------------------------------calc2
decf DIGIT2, 1 ;если результат равен "0" уменьшаем переменную DIGIT2 на "1"
incf DIGIT3, 1 ;увеличиваем переменную DIGIT3 на "1" (переносим разряд)
movlw d'10' ;записываем в аккумулятор значение "10"
subwf DIGIT3, 0 ;вычитаем значение аккумулятора из переменной DIGIT3
btfss STATUS, Z ;проверяем результат на "0"
goto calc2 ;если результат не "0" идем на метку calc2
decf DIGIT3, 1 ;если результат равен "0" уменьшаем переменную DIGIT3 на "1"
goto calc5 выходим из подпрограммы т.к. достигнуто значение 99,9
;-----------------------------------------------------корректируем погрешность перевода
calc2 decfz LAPSE, 1 ;уменьшаем значение LAPSE на 1
goto calc3 ;если переменная LAPSE не равна "0"-идем на метку calc3
movlw d'57' ;записываем в аккумулятор значение "57"
movwf LAPSE ;записываем значение аккумулятора в переменную LAPSE
movlw d'2' ;записываем в аккумулятор значение "2"
addwf TIMER1, 1 ;прибавляем к переменной TIMER1 значение аккумулятора
goto calc3 ;идем на метку calc3
;-----------------------------------------------------корректируем переменные TIMER1 и TIMER2
calc1 addwf TIMER1, 1 ;прибавляем к переменной TIMER1 значение аккумулятора
movlw d'100' записываем в аккумулятор значение "100"
addwf TIMER1, 1 ;прибавляем к переменной TIMER1 значение аккумулятора
decf TIMER2 уменьшаем значение переменной TIMER2 на "1"
проверяем флаги регистра STATUS
btfss STATUS, C ;флаг C-переноса
btfsc STATUS, Z ;и флаг Z-нулевого результата
goto calc4 ;если результат не отрицательный-;продолжаем
если Z=0 и C=0 значит результат отрицательный-
;---------------------------------------------------------------------------------------------------------calc5 return возврат из подпрограммы
;==============================================================
end
;==============================================================
Подобные документы
Анализ вариантов проектных решений и выбор на его основе оптимального решения. Синтез функциональной схемы микропроцессорной системы на основе анализа исходных данных. Процесс разработки аппаратного и программного обеспечения микропроцессорной системы.
курсовая работа [469,1 K], добавлен 20.05.2014Назначение и устройство микропроцессорной системы контроля. Описание функциональной схемы микропроцессорной системы контроля. Расчет статической характеристики канала измерения. Разработка алгоритма функционирования микропроцессорной системы контроля.
курсовая работа [42,0 K], добавлен 30.08.2010Проектирование устройства контроля температуры в холодильных установках. Устройство измеряет температуру с помощью схемы измерения температуры. Значение температуры представлены в 8-битном формате. Создание компьютерной программы для устройства.
курсовая работа [29,5 K], добавлен 22.02.2008Линеаризация (моделирование) на основе исходных данных функции преобразования средства измерения (СИ) и расчет погрешностей линеаризации. Чувствительность СИ и ее предельная нестабильность. Определение относительной и абсолютной погрешностей нелинейности.
курсовая работа [178,3 K], добавлен 14.08.2012Разработка функциональной и принципиальной схемы прибора, ее структура и элементы. Источник тока, управляемый напряжением, схема подключения кнопок. Разработка основной программы и применяемые подпрограммы, оценка эффективности проектируемой системы.
курсовая работа [401,3 K], добавлен 14.03.2015Распределение функций между аппаратной и программной частями микропроцессорной системы. Выбор микроконтроллера, разработка и описание структурной, функциональной и принципиальной схемы. Выбор среды программирования, схема алгоритма и листинг программы.
курсовая работа [304,4 K], добавлен 17.08.2013Разработка структурной схемы и алгоритм функционирования исследуемой микропроцессорной системы (МПС). Модель исследуемой МПС в виде системы массового обслуживания. Листинг программы моделирования на языке GPSS, результаты имитационных экспериментов.
курсовая работа [193,3 K], добавлен 25.11.2013Разработка функциональной схемы микропроцессорной системы управления насосным агрегатом. Архитектура последовательных шин передачи данных RS232 и ISP. Обоснование выбора элементарной базы микропроцессорной системы: контроллера и приемопередатчика.
курсовая работа [1,6 M], добавлен 10.01.2012Характеристика устройства и технологических данных промышленного робота СМ40Ц. Описание микропроцессорного комплекта серии U83-K1883, системы его команд, микросхемы К572ПВ4, функциональной, принципиальной схем и алгоритма работы программы управления.
курсовая работа [5,8 M], добавлен 02.06.2010Сравнительный анализ существующих приборов. Разработка функциональной схемы устройства. Выбор и статистический расчет элементов, входящих в систему: датчика, источник тока, усилителя, микроконтроллера, блок питания. Блок-схема управляющей программы.
курсовая работа [769,9 K], добавлен 12.01.2015