Библиотека кнопок
Библиотека кнопок предоставляет процедуры для обнаружения нажатия кнопок и дебонирования (исключение влияния мерцания контакта при нажатии кнопки)
Процедуры библиотеки
Button
| Прототип |
function Button(var port: word; pin: word; time: word; ActiveState: word) : word; |
|---|---|
| Описание |
Функция устраняет влияние мерцания контакта при нажатии кнопки (debouncing). Штырь кнопки проверяется сразу после вызова функции, а затем снова после истечения периода отладки. Если штырь находился в активном состоянии в обоих случаях, функция возвращает 255 (true). |
| Параметры |
|
| Возвращает |
|
| Требует |
Ничего |
| Пример |
Stellaris
program Button_Test;
var oldstate : byte;
begin
GPIO_Digital_Input(@GPIO_PORTE_DATA_BITS, _GPIO_PINMASK_1); // Set GPIO_PORTE.1 as digital input
GPIO_Digital_Output(@GPIO_PORTF_DATA_BITS, _GPIO_PINMASK_ALL); // Set GPIO_PORTF as digital output
oldstate := 0;
while TRUE do
begin
if (Button(GPIO_PORTE_DATA, 1, 1, 1)) then // detect logical one on PE1 pin
oldstate := 1;
if (oldstate and Button(GPIO_PORTE_DATA, 1, 1, 0)) then
begin // detect one-to-zero transition on PE1 pin
GPIO_PORTF_DATA := not GPIO_PORTF_DATA; // invert GPIO_PORTF value
oldstate := 0;
end;
end; // endless loop
end.
STM32
program Button_Test;
var oldstate : byte;
begin
GPIO_Digital_Input(@GPIOA_BASE, _GPIO_PINMASK_0); // Set PA0 as digital input
GPIO_Digital_Output(@GPIOD_BASE, _GPIO_PINMASK_ALL); // Set PORTD as digital output
oldstate := 0;
while TRUE do
begin
if (Button(GPIOA_IDR, 0, 1, 1)) then // detect logical one on PA0 pin
oldstate := 1;
if (oldstate and Button(GPIOA_IDR, 0, 1, 0)) then
begin // detect one-to-zero transition on PA0 pin
GPIOD_ODR := not GPIOD_ODR; // invert PORTD value
oldstate := 0;
end;
end; // endless loop
end.
|
| Notes |
Нет. |