Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Таймер 8253А


Автор: krasgames 26.1.2012, 11:53
Столкнулся с программированием таймера с I8086 без ОС и тп и завис. Ну то есть у меня не материнская плата, а просто процессор подключен к таймеру и некоторым другим устройствам. Стандартный калькулятор работает, но я не знаю С, на котором написана программа. Хочу с нуля написать свою программу, хотя бы запрограммировать таймер. Прочитал, это делается примерно так:

mov al, слово управления
mov адрес для таймера, al
mov ax, 16битная константа
mov адрес для таймера(тот же), ax

В адресе должно быть 3 сигнала: первый ноль для CS таймера, еще две единицы для режима программирования.

Но мне надо не примерно, а точно, а я, если честно, двух элементов то связать вместе не могу как положено! Так что хочу сначала до конца понять, все ли у меня в теории так. Можно реализовать и функцию 15h, но как тогда? Это в данном случае, наверное, сложнее, хотя мне это тоже интересно.

Автор: 500mhz 26.1.2012, 14:41
http://faculty.qu.edu.qa/rriley/cmpt507/minix/kernel_2arch_2i386_2clock_8c-source.html

Автор: krasgames 27.1.2012, 10:30
Спасибо! Попробую написать на СИ тоже. Но вообще я ищу решение на ASM. Хотя вообще нифига не понятно. Я то как раз не знаю, по каким адресам передавать команды. 

Автор: 500mhz 27.1.2012, 12:38
Цитата

Defines
#define  PCR   0x65
#define  PORT_B   0x61
#define  TIMER0   0x40
#define  TIMER2   0x42
#define  TIMER_MODE   0x43
Define Documentation
#define PCR   0x65

Definition at line 9 of file ports.h.

#define PORT_B   0x61

Definition at line 10 of file ports.h.

#define TIMER0   0x40

Definition at line 11 of file ports.h.

#define TIMER2   0x42

Definition at line 12 of file ports.h.

#define TIMER_MODE   0x43

Definition at line 13 of file ports.h.


Автор: krasgames 28.1.2012, 05:24
Так это для компа. Я же про то, что у меня есть готовая система, которую можно урезать вообще лишь до I8086(+ПЗУ как часть модели МП)+Таймер ( а весь проект на Proteus), а мне надо осознанно запрограммировать таймер. То есть у меня, например, будет проект на СИ, я его скомпилирую в бинарник, а бинарник залью в ПЗУ и должен возрадоваться. 

Автор: tzirechnoy 29.1.2012, 12:30
Цитата
Я же про то, что у меня есть готовая система, которую можно урезать вообще лишь до I8086(+ПЗУ как часть модели МП)+Таймер ( а весь проект на Proteus), а мне надо осознанно запрограммировать таймер.


Тогда выясните адреса таймера у разработчиков этой аппаратной системы.

Автор: krasgames 2.2.2012, 10:04
Они не ответят, скорее всего. Но я немного продвинулся. Но не получилось до конца, а мне пока учительница сказала, что правильно делаю, поэтому не знаю. Пока могу сказать только так. Надо подумать, какой вопрос задатьsmile Ну у меня на выходном канале всегда 1, а максимум в режиме 2 я могу добиться очень относительно редких импульсов. И не знаю, где я могу ошибаться. Загружаю слово управление, затем де константы, наблюдаю выход - фигня. Пробовал всячески изменять параметры - не помогает.

Автор: tzirechnoy 2.2.2012, 19:19
Ищите примеры DOS-программ, которые издевались с этим таймером вообще как хотели.

Автор: LeonidPr 23.2.2012, 08:00
В папке Samples протеуса есть пример платы с 8086(он единственный для 8086), там у неё на борту есть этот таймер. Посмотрите как подключается. Там же в папке с проектом есть исходники программы, которая крутится внутри этой модельки. Посмотрите там, как программить таймер.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)