1010202 Простой вариант: - Последовательность нот и интервалы для каждой ноты - во таблицу (во флешке можно расположить или EEPROM, а можно и принимать по UART); - По данным из таблицы программируются 2 таймера, один из которых либо непосредственно занимается формированием нужной частоты, либо обеспечивает прерывание для этого (тут надо документацию детально почитать), а второй - отсчитывает интервал. Более сложный вариант - можно поизвращаться с ЦАПами . P.S. Чтение документации/написание кода меня как-то не сильно вдохновляет .
Вот что смогли написать, посмотрите пожалуйста:
Код:
include (aduc 812.def) zum EQU P3.2 org 0000h Start: mov R0, #2500000 A1: mov R1, #50000000 B1: setb zum djnz R!, B1 clr zum djnz R0, A1 mov R0, #50000000
A2: mov R1, #50000000 B2: setb zum djnz R1, B2 clr zum djnz R0, A2 mov R0, #250000
И в итоге чисто даже на слух проигрывает в бесконечном цикле одну ноту... Есть подсказки
Member
Статус: Не в сети Регистрация: 15.01.2010 Откуда: Запорожье
привет всем. вобщем препод подумал что мы гении ассемблера и можем писать на нем любую программу. цель программы сделать загрузчик, в этом же загрузчике записать код программ(они есть), после чего запустить с дискеты и показать как они работают. проблема в том, что не пойму в чем) вот код загрузчика:
Код:
#MAKE_BOOT# INCLUDE 'EMU8086.INC' ORG 7C00H JMP START MSG DB 'WELCOME TO MICRO-OS', 13, 10, DB 'LOADING...', 0 START: MOV AX, 07C0H MOV SS, AX MOV SP, 03FEH PUSH CS POP DS MOV AH, 00H MOV AL, 03H INT 10H LEA SI, MSG CALL PRINT_STRING
в конце первого блока (512 байт) обязательно должны стоять байты 0x55 0xAA, иначе сектор не будет считаться загрузочным http://en.wikipedia.org/wiki/Boot_sector
Advanced member
Статус: Не в сети Регистрация: 30.08.2003 Откуда: Санкт-Петербург
SwiPTorrent это ввод-вывод через порты. Необходимо для работы с у-вами (LPT, COM, USB и пр.). Нужно только под DOS, т.к. Windows/Linux не дают прямого доступа к оборудованию. В них нужно писать спец. драйвер, в котором эти команды можно использовать, т.к. драйверу предоставляется необходимый уровень привилегий. А прикладное ПО должно вызывать соответствующие функции драйвера.
_________________ {:€ дед в законе :-) нородный окодемег почетный пользователь OpenSuSE 11.3 Ремонт и модернизация ноутбуков IBM (Lenovo) ThinkPad
ты забыл пояснить, что порты - это не физические порты:) это средство общения с устройствами, которые подключены к серверному/южному мосту через шину pci - в том числе и видеокарты, и сетевые, и даже сами мосты
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
to SwiPTorrent У каждого видеорежима свои адреса видеобуфера. При "прямой" записи в видео буфер запись производится в зависимости от режима. графика - поточечно, поточечно в нескольких битовых областях. текстовые режимы - парами цвет/символ. Для каждого режима нужно изучать организацию видеобуффера. Справочников и инфы гугль выдаст море...
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
SwiPTorrent писал(а):
Кто подскажет, как рисовать в режиме 12h (640x480x16)? Я освоил 11h и 13h, а про этот инфу не могу найти
Не помню чё за 11h, но 13h это 320*240*8bit цвет-> тупо пишем в память индексы палитры, как в двумерный массив. 12h этот уже юзает битовые плоскости для формирования 4-битного цвета, и расположены они в разных кусках памяти. С такими режимами лучше пользовать bios-функции рисования (как уже было подсказано) - меньше гемора IMXO
З.Ы. освежил память режим 11h- "640х480 монохромный графический, только VGA". Одна битовая плоскость, один бит на цвет (проблем нет с переключением плоскостей )
Member
Статус: Не в сети Регистрация: 13.06.2007 Откуда: UK/Glasgow Фото: 0
Вообщем, нужно нарисовать квадрат, который можно было бы передвигать клавишами WASD. Cделать нужно в режиме 640х480х16. Вообщем принцип такой: Рисуем сначала квадрат, потом ждём клавишу, и если нажата, допустим 'D', то полностью закрасить квадрат чёрным цветом и перерисовать его изначальным цветом, но уже на 1 пиксель правее. Я с этим заданием справился, но всё жутко тормозит и видна перерисовка (где-то секунду идёт закраска чёрным и смещение на 1 пиксель). Как можно это исправить?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения