p>
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 значить результат негативний-
return; повернення з підпрограми
; ============================================== ================
Блок-схема даної підпрограми представлена ​​на рис. 14. Пояснимо деякі моменти. Приймаючи швидкість звуку рівної 331,4 м/с, маємо 331,4 * 1000/1000000 мм/мкс або 0,3314 мм/мкс. Т.к. за умовою завдання точність вимірювань становить 0,1 м, а виміряне нами час становить подвійну величину, то логічно вести підрахунок проміжками часу за яке ультразвук проходить 0,2 м. Тобто 200/0, 3314 = 603,5 = (600 +3,5) мкс. Кожні 600 мкс у нас накопичується похибка в 3,5 мкс. 57 * 3,5 = 199,5 ≈ 200. Тобто кожен проміжок часу 57 * 600 мкс у нас виникає похибка в 200 мкс. Хоча вона і складає 1/3 від заданої точності ми, все одно будемо її враховувати. Принцип роботи підпрограми ясний з блок-схеми.
В
Рис. 14. Блок-схема підпрограми calculation.
Висновок
У процесі виконання курсового проекту, було спроектовано пристрій ультразвукового вимірювання дальності. У пояснювальній записці представлено докладний опис схеми пристрою, опис програмного забезпечення.
У додатку представлена ​​принципова схема розробленого пристрою і наведено лістинг програми.
У ході виконання курсового проекту були вирішені наступні завдання:
В· синтез і розробка принципової схеми пристрою;
В· розробка програмного забезпечення;
В· розробка конструкторської документації проекту (пояснювальна записка).
Бібліографічний список
1. В. С. Яценків В«Мікроконтролери Microchip. Практичне керівництво В». p> 2. Документація до контролерів фірми Microchip.
Програми
; ============================================== ================
програма для ультразвукового далекоміра
; ============================================== ================
список директив
list P = 16C84; директива визначає тип процесора
# include ; файл, описує специфічні змінні, відповідні процесору
_config b'00000000000001 '; слово конфігурації CPU
; ============================================== ================
опис використовуваних змінних (призначення адрес ячеекдля зберігання змінних)
NUMIMP equ 0x0C; робоча змінна для підрахунку числа імпульсів
TIMER1 equ 0x0D; робоча змінна для підрахунку часу 1
TIMER2 equ 0x0E; робоча змінна для підрахунку часу 2
LAPSE equ 0x0F; робоча змінна для подсчетапогрешності переведення часу
DIGIT1 equ 0x10; робоча мінлива індикатора дециметрів
DIGIT2 equ 0x11; робоча мінлива індикатора метрів
DIGIT3 equ 0x12; робоча мінлива індикатора декаметри
; ============================================== ================
виконувана програма
org 0х000; вектор скидання процесора, початкова адреса
clrf PORTA; очистили вихідні засувки порту А
clrf PORTB; і порту У
clrf TMR0; очищення таймера TMR0
bsf STATUS, RP0; включили банк 1
movlw b'00011110 '; налаштували на виведення лінію RA0,
movwf PORTA; інші лінії порту A на введення
movlw b'00000000 '; налаштували на виведення всі лінії порту B
movwf PORTB; RB0 ... RB7
bcf OPTION_REG, 7; включили підтягують резистори
bcf OPTION_REG, 5; включили режим таймера для TMR0
bcf STATUS, RP0; включили банк 0
; ============================================== ================
main; основна програма
call initialization; викликаємо підпрограму ініціалізації
main1 call indication; викликаємо підпрограму індикації
goto pressing; викликаємо підпрограму обробки натиснення кнопки
main2 call transfer; викликаємо підпрограму передачі імпульсів
main3 goto waiting; викликаємо підпрограму очікування відбитого сигналу
main4 goto reception; викликаємо підпрограму прийому відбитого сигналу
main5 ca...