При помощи организации виртуальных таймеров. Настраивается один из таймеров , наиболее удобен 2-ой таким образом, чтобы он вырабатывал прерывания каждую 1 мс, или, скажем 10 мСек. И в теле функции прерывания пишытся виртуальный таймер :
Код
wTimer DW 1
ORG xxxx
; вход в прерывание
..............
; таймер собственно - декрементирующий
mov A, wTimer
jnz dec_timer
mov A, wTimer+1
jz exit_timer
dec_timer:
dec A
jnz exit_timer
mov wTimer+1, A
mov A, wTimer
dec A
jnz exit_timer
; здесь фтыкается обработчик события - типа установить порт или сбросить порт
....................................
exit_timer:
Для того, чтобы запустить таймер, достаточно загрузить в него значение, не забыв при этом запретить прерывания и набыв потом их разрешить. При прерываниях в 1 Мс максимальное время интервала - 65 секунд с точностью 1 мСек
Сообщение отредактировал oran-be - Oct 29 2007, 17:38