![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Shub |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
И так такт таймера по умолчанию составляет 55 мс. Но в жизни есть такие чудесные моменты, когда требуется, что-нибудь периодически выполнять через 20 мс, 10 мс или даже 1 мс. В сети выложены примеры быстрых таймеров, но, честно говоря, что к чему в них я так понять и не смог. Из не проверенных данных я знаю, что изменить такт таймера с 55 мс на 10 мс условно говоря просто, вот только ни где не сказано как это сделать. Как получают более мелкие такты для меня большая загадка.
Просветите, пожалуйста. Примеры перепрограммирования частот системного таймера находятся здесь: http://pascal.sources.ru/datetime/index.htm PS Я не программист, так балуюсь, С и Асм’у не обучен. |
![]() ![]() |
Shub |
![]()
Сообщение
#2
|
Гость ![]() |
Е-е-е, получилось. Значиться так:
43h - управляющий регистр: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T- ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+-+T+T- LT- LT- L=T=- L= BCD: 0 - двоичный счет; ¦ ¦ ¦ 1 - двоично-десятичный счет. ¦ ¦ ¦ ¦ ¦ L===== M: 000 - режим 0; ¦ ¦ 001 - режим 1; ¦ ¦ X10 - режим 2; ¦ ¦ X11 - режим 3; ¦ ¦ 100 - режим 4; ¦ ¦ 101 - режим 5. ¦ ¦ ¦ L========== RW: 00 - код команды CLC (запомнить CE); ¦ 01 - чтение/запись старшего байта; ¦ 10 - чтение/запись младшего байта; ¦ 11 - чтение/запись младшего, затем ¦ старшего байта. ¦ L============== SC: 00 - канал 0; 01 - канал 1; 10 - канал 2; 11 - код команды RBC (чтение состояния канала). Следовательно, вводим такую последовательность – 00100110 или в десятичном 38, с права на лево: первый ноль – двоичный счет, 011 - генератор меандра, 10 - чтение/запись младшего байта, ну и последние 00 – потому что канал 0 используется в системных часах времени суток. В паскалевском виде это выглядит так: Port [$43]:=38; И потом вводим максимальное значение для младшего байта 256: Port [$40]:=256; И получаем бешенный таймер ![]() Менее шустный таймер у меня пока не получается :p2: – машина виснет. Но ковырять надо RW. |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 0:36 |