Задача n1
Напишiть програму пiдрахунку кiлькостi iмпульсiв за промiжок часу Т= 2,5 мc, якi поступають на вхiд порта Р1.0 мікроконтролера MCS51 вiд датчика згiдно приведеної структурної схеми. Пояснити роботу програми і привести розрахунок тривалості затримки. Частота кварцу мікроконтролера максимальна.
LC-генератор,
формувач імп.
Індуктивний датчик
Мікро-контролер
MCS51
Задача n2
Привести алгоритм i програму вимiрювання тривалостi додатнього iмпульса на вході Р2.1 мікроконтролера MCS51 згідно приведеної структурної схеми. Частота кварцу мікроконтролера максимальна.
Рис. Ввід аналогової інформації в ОЕОМ К1816ВЕ51 методом перетворення її в довжину імпульса (SN555, К1006ВІ1) або в частоту (1108ПП1).
Рис. Ввід інформації в ОЕОМ від індуктивного датчика методом вимірювання резонансної частоти.
Приклад програми вимірювання частоти
$mod51
;вимірювання частоти в Гц
;розрахована на зовнішню частоту Т0 6817Гц
;підрахунок ведеться за 1с, результат у вигляді ХХХХ Гц
mode EQU 55h ;настроює T1 counter, T0 counter
str EQU 50h ;запис у TCON дозволяє відлік
ORG 0000h
BEG: mov TL1,#00h ;обнулення
mov TH1,#00h ;Т/С1
mov TL0,#0f0h ;попереднє встановлення Т/С0
mov TH0,#0E4h ;розрахована на 1с
mov TMOD,#MODE ;ініціалізація режимів таймерів
mov TCON,#STR ;запуск відліку
jnb TF0,$ ;перевірка прапора переповнення Т/С0
clr TR1 ;якщо відбулося переповнення, то
clr TR0 ;зупинити відлік Т/С1 і Т/С0
mov R0,TL1 ;зчитування результату вимірювання
mov R1,TH1 ;R0 містить молодшу частину, а R1 – старшу
call IND ;звертання до підпрограми індикації
mov R3,#01h ;тимчасова затримка
M1: mov R4,#01h ;на двох регістрах
djnz R4,$ ;з декрементом
djnz R3,M1 ;у вкладеному циклі
jmp BEG ;перехід на наступний цикл вимірювання
;****************************************************
; Обробка переривань по INT0
;----------------------------------------------------
Організація пам’яті мк
|
0FFFH |
|
|
|
23H TI, RI |
|
|
|
1BH T/C1 |
|
|
|
13H INT1 |
|
|
|
0BH T/C0 |
|
|
|
03H INT0 |
|
|
|
00H |
|
|
15 8 |
|
|
PC |
|
|
7 0 |
|
|
|
Рис.2.3 — Структура резидентної пам'яті програм мікроконтролера 8051
|
Резидентна пам'ять програм (рис.2.3) має байтову організацію і доступна тільки для читання.
Резидентна пам'ять програм може бути доповнена зовнішньою пам'яттю. У цьому випадку загальний максимально допустимий обсяг пам'яті програм складе 64 Кб.
Молодші адреси резидентної пам'яті програм відведені під опрацьовування зовнішніх переривань , , від таймерів/лічильників T/C0, T/C1 і переривань від послідовного порту (TI, RI).
У випадку появи якого-небудь із зазначених переривань відбувається звернення до відповідної комірки резидентної пам'яті програм (наприклад, при виникненні переривання в PC записується код 0003H).
ORG 0
LJMP Begin
ORG 03
LJMP IntTC0
Begin:
; Основна програма
Call Init
…………….
LoopMain:
……………..
……………..
JMP LoopMain
IntTC0:
CLR TR0
CPL P2.7
Mov TH0,#100
Mov TL0,#0FFh
SETB TR0
RETI
OBRINT0:
SETB P3.2
MOV 2FH,87H ; POKA - OZU[2Fh] - ???
JB 7AH, SPREG
nop ;
LJMP PRERPOLZ
RETI
SPREG:
JNB P3.2,SPREG
MOV 87H,#0 ; GF0:=0
RETI
; ==== Обробка переривань по таймеру T0 =======
OBTC0:
CLR TCON.4 ; "STOP" "SCHETCH.0"
MOV TH0,#0FFH
MOV TL0,#0FDH ; DLJA PODSCHETA 3 IMPULSOV
; ------------
CLR 00H ; FLAG "OGIDAN."
RETI
; ==== Обробка переривань по таймеру T1 =======
OBTC1:
CLR TCON.6 ; "STOP" "SCHETCHIKA 1"
MOV TH1,#0FFH
MOV TL1,#0FCH ; DLJA PODSCHETA 4 IMPULS.
; ------------
CLR 00H ; FLAG "OGIDAN."
RETI