Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Пристрій ультразвукового вимірювання дальності

Реферат Пристрій ультразвукового вимірювання дальності





чекаємо закінчення сигналу. Потім виробляємо тестування відсутності сигналу протягом певного часу, якщо до закінчення даного проміжку часу сигнал з'явився, то робимо висновок, що прийнятий не наш сигнал і виходимо з підпрограми і продовжуємо очікування правильного сигналу в підпрограмі waiting. Після цього проводимо тестування наявності сигналу на Протягом певного часу, якщо до закінчення даного проміжку часу сигнал пропав, то робимо висновок, що прийнятий не наш сигнал і виходимо з підпрограми і продовжуємо очікування правильного сигналу в підпрограмі waiting. Якщо ж протягом певного часу сигналу не було, а потім на протязі певного часу сигнал був, то робимо висновок, що був успішно проведений прийом одного імпульсу нашого сигналу, зменшуємо лічильник прийнятих імпульсів на 1 і повертаються на мітку recp6 розглянутої підпрограми і проводимо всі дії з прийому імпульсу сигналу ще раз. Прийом імпульсів проводиться до тих пір поки лічильник імпульсів NUMIMP стане дорівнює нулю, і ми можемо вважати, що взяли три імпульсу нашого сигналу. Після цього переходимо в підпрограму calculation. Робота підпрограми більш зрозуміла з наведеної блок-схеми.

В 

Рис. 13. Блок-схема підпрограми reception. br/>

Підпрограма обчислення calculation

Даний блок відповідає наведеній нижче частини програми.


; ============================================== ================

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


Назад | сторінка 9 з 14 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Емпіризм і раціоналізм філософії Нового часу. Значення чуттєвого та раціон ...
  • Реферат на тему: Створення програми для обчислення значення функції
  • Реферат на тему: &Смутні часи& в історії Росії та значення даного етапу
  • Реферат на тему: Поняття алгоритму. Обчислення значення функції
  • Реферат на тему: Пам'ять та її значення