Работать от сигнала на ножке T0
;
Запретить управление таймером от ножки INT0
;||++-----------Перевести таймер T1 в шестнадцатиразрядный режим
;|+-------------Синхронизироваться от внутреннего генератора
;+--------------Запретить управление таймером от ножки INT1
mov TH0, #0 ;Обнулить старший байт счЈтчика
mov TL0, #0 ;Обнулить младший байт счЈтчика
;---измерение вести 1 мс---------------------------------------------------------
mov TH1, #HIGH(-1000) ;Загрузить старший байт таймера
mov TL1, #LOW(-1000) ;Загрузить младший байт таймера
mov TCON,#01010000b ;Включить частотомер
;
||
;
Прерывание от ножки INT1возникает по фронту
;
Сбросить запрос прерывания от ножки INT1
;
Прерывание от ножки INT1возникает по фронту
;
Сбросить запрос прерывания от ножки INT1
;
Включить таймер T0
;||+------------Обнулить флаг таймера T0
;|+-------------Включить таймер T1
;+--------------Обнулить флаг таймера T1
TstTimeOut:
jnb TF1, TstTimeOut ;Если 1 мс прошла
mov TCON, #00000000b ;то отключить частотомер
;
||
;
Прерывание от ножки INT1 возникает по фронту
;
Сбросить запрос прерывания от ножки INT1
;
Прерывание от ножки INT1возникает по фронту
;
Сбросить запрос прерывания от ножки INT1
;
Отключить таймер T0
;||+------------Обнулить флаг таймера T0
;|+-------------Отключить таймер T1
;+--------------Обнулить флаг таймера T1
Рисунок 11. Программа измерения частоты
Если теперь на вход микроконтроллера T0 подать сигнал с неизвестной частотой, то в регистрах TH0 и TL0 будет записана его частота в килогерцах.