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

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





ння з підпрограми

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

При виконанні цієї підпрограми відбувається тестування присутності сигналу (+5 В) на лінії RA2 порту A. Якщо на лінію надходить напруга (Кнопка натиснута) - виконується команда переходу в основну програму на відповідну мітку (main2). В іншому випадку (Кнопка не натискати) перехід здійснюється на іншу мітку основної програми (main2). br/>

Підпрограма передачі transfer

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


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

transfer; підпрограма передачі імпульсів

movlw d'5 '; поміщаємо значення "5" для NUMIMP в акумулятор

movwf NUMIMP; поміщаємо значення з акумулятора в NUMIMP

; ---------------------------------------------- ------- передача сигналу

tran1 bsf PORTA, 0; встановлюємо в 1 лінію RA0 порту А

movlw d'249 '; поміщаємо значення "249" для таймера в акумулятор

movwf TMR0; поміщаємо значення з акумулятора в таймер

bcf INTCON, TOIF; встановлюємо в 0 прапор переривання по переповнення таймера

tran2 btfss INTCON, TOIF; перевіряємо прапор переривання по переповнення таймера

goto tran2; якщо прапор дорівнює 0 (лічильник не переповнений)-виконуємо перевірку

; якщо прапор дорівнює 1 (лічильник переповнений) -

; ---------------------------------------------- ------- затримка сигналу

bcf PORTA, 0; встановлюємо в 0 лінію RA0 порту А

movlw d'251 '; поміщаємо значення "251" для таймера в акумулятор

movwf TMR0; поміщаємо значення з акумулятора в таймер

bcf INTCON, TOIF; встановлюємо в 0 прапор переривання по переповнення таймера

tran3 btfss INTCON, TOIF; перевіряємо прапор переривання по переповнення таймера

goto tran3; якщо прапор дорівнює 0 (лічильник не переповнений)-виконуємо перевірку

, якщо прапор дорівнює 1 (лічильник переповнений) -

; ---------------------------------------------- ------- вважаємо імпульси

decfsz NUMIMP, 1; зменшуємо зачение NUMIMP на "1" якщо NUMIMP НЕ дорівнює "0"

; (передано <5імпульсов) -

goto tran1; переходимо в початок підпрограми на tran1 якщо NUMIMP дорівнює "0"

; ---------------------------------------------- ------- (передано 5 імпульсів) -

movlw d'3 '; поміщаємо значення "3" для NUMIMP в акумулятор

movwf NUMIMP; поміщаємо значення з акумулятора в NUMIMP

return; повернення з підпрограми

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


Ця підпрограма виводить на лінію RA0 порту А мікроконтролера +5 імпульсів частотою 40 кГц. Враховуючи, що ми не підключаємо предделітель для таймера-лічильника TMR0 і в схемі використовується керамічний резонатор частотою 4 МГц маємо тактову частоту мікроконтролера рівну 1 МГц, тобто одна команда виконується за 1 мкс. Отже один імпульс частотою 40 кГц має тривалість 1/40000 = 25 мкс. Тобто ми повинні сформувати один імпульс за 25 мкс. Блок-схема даної підпрограми представлена ​​на рис. 11. Значення для таймера підібрані таким чином, щоб сформувати імпульс на лінії тривалістю близько 25 мкс. У кінці підпрограми встановлюється нове значення для змінної NUMIMP, тому що воно буде потрібно для роботи іншої підпрограми.


В 

Рис. 11. Блок-схема підпрограми transfer.


Підпрограма очікування waiting

В 

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

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

waiting; підпрограма очікування відбитого сигналу

; ---------------------------------------------- ------- затримка початку прийому сигналу

movlw d'151 '; поміщаємо значення "151" для таймера в акумулятор

movwf TMR0; поміщаємо значення з акумулятора в таймер

bcf INTCON, TOIF; встановлюємо в 0 прапор переривання по переповнення таймера

wait1 btfss INTCON, TOIF; перевіряємо прапор переривання по переповнення таймера

goto wait1; якщо прапор дорівнює 0 (лічильник не переповнений)-виконуємо перевірку

; якщо прапор дорівнює 1 (лічильник переповнений) -

; ---------------------------------------------- ------- починаємо рахунок часу


очікування прийоми (по 100 мкс)

wait3 movlw d'161 '; поміщаємо значення "161" для таймера в акумулятор

movwf TMR0; поміщаємо значення з акумулятора в таймер

bcf INTCON, TOIF; встановлюємо в 0 прапор переривання по переповнення таймера

wait2 btfsc PORTA, 1; перевіряємо наявність сигналу на лінії RA1 порту А

goto wait4; якщо сигнал є-переходимо на мітку wait4

якщо сигналу ні-продовжуємо рахунок часу

btfs...


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





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

  • Реферат на тему: Збутова діяльність ВАТ &Прапор індустріалізації&
  • Реферат на тему: Державний прапор Російської імперії (проблема співвідношення кольорів в рос ...
  • Реферат на тему: Бойовий Прапор військової частини - символ військової частини, доблесті і с ...
  • Реферат на тему: Бухгалтерська (фінансова) звітність на прикладі ГУП ОПХ "Прапор Жовтня ...
  • Реферат на тему: Прогноз банкрутства та основні напрямки поліпшення фінансового стану СПК &q ...