Команды и директивы компилятора PROTON
Counter
Синтаксис:
Var = Counter Pin , Period
Команда Counter считает количество импульсов, которые поступают на вывод - Pin за время - Period, а результат сохраняет в переменной - Var.
Пример 1:
Листинг программы counter.bas
' Сосчитать количество импульсов, которые приходят на вывод PORTA.0 за интервал времени в 100 мсек,
' и отобразить результат на экране ЖКИ.
Device = 16F873A | ' Использовать микроконтроллер 16F873A |
XTAL = 4 | ' Установить частоту генератора МК равной 4 МГц |
'----------------------------------------------Настройки подключения ЖКИ----------------------------------------------- | Declare LCD_TYPE ALPHA | ' Тип ЖКИ - буквенно-цифровой |
Declare LCD_DTPIN PORTB.4 | ' Порт данных ЖКИ |
Declare LCD_ENPIN PORTB.3 | ' Цепь управления E |
Declare LCD_RSPIN PORTB.2 | ' Цепь управления RS |
Declare LCD_INTERFACE 4 | ' Разрядность шины данных |
Declare LCD_COMMANDUS 2000 | ' Задержка перед посылкой команды |
Declare LCD_DATAUS 50 | ' Задержка перед посылкой данных |
Declare LCD_LINES 4 | ' Количество строк ЖКИ |
'--------------------------------------------------- Настройки портов ---------------------------------------------------- | |
ADCON1 = %00000110 | ' Сделать PORTA обычным цифровым портом ввода/вывода |
TRISA = %00000001 | ' Сделать PORTA.0 входом |
'-------------------------------------------------Объявления переменных------------------------------------------------- | |
DIM VAR1 As Word | ' Создать переменную для хранения результатов измерений |
Symbol Pin = PORTA.0 | ' Присвоить выводу PORTA.0 символ Pin |
'----------------------------------------------------Главная программа--------------------------------------------------- | |
Loop: | ' Метка начала цикла измерений |
VAR1 = Counter Pin, 100 | ' Считать импульсы на выводе PORTA.0 за время = 100 мсек |
Print At 1, 1, "PrimerComand Counter" | ' Отобразить на ЖКИ надпись "PrimerComand Counter" |
Print At 2, 1, "VAR1 = ", Dec VAR1, " " | ' Отобразить десятичное значение измеряемой величины |
Print At 3, 1, "VAR1 = ", BIN14 VAR1 | ' Отобразить 14 разрядов двоичного значения измеряемой ' величины |
Print At 4, 1, "VAR1 = ", Dec6 VAR1 | ' Отобразить 6 знаков десятичного значения измеряемой величины |
GoTo Loop | ' Повторить процесс измерения |
На рисунке 1 приведена действующая модель counter1.DSN которая иллюстрирует работу команды Counter. Модель работает под управлением программы counter.bas. Частота входных импульсов поступающих на PORTA.0 от внешнего генератора равна 2500 Гц. Время измерения 100 мсек.
Примечания
Команда Counter проверяет состояние вывода в коротком цикле, и считает импульсы при переходе входного сигнала из 0 в 1.
Если задающий генератор микроконтроллера работает на частоте 4 МГц, то вывод Pin проверяется каждые 20 мкс, или каждый 4 мкс при частоте генератора в 20 МГц.
Самая высокая частота импульсов, которые могут быть подсчитаны при использовании тактового генератора на 4 МГц составляет 25 кГц и 125 кГц при частоте тактового генератора 20 МГц.