8051. Прерывание на кнопке, жесть.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Shuspano
Грызет канифоль
Сообщения: 270
Зарегистрирован: Вс окт 20, 2019 13:03:56

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Shuspano »

Ничего сложнее чем две кнопки я пока не подключал к МК, с микрухами проще. Таймер срабатывает где придется, при этом после срабатывания его надо перезагружать, значит надо разбирать и собирать стек с другим адресом возврата, и из-за двух кнопок я уже экран текста настрочил, и не представляю как это вкорячивать в реальную программу. Просто хардкор.
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Zhuk72 »

Не нужно перезагружать. У этого МК не смотрел, а таймеры в 15F204/408 имеют режим с предзагрузкой начальных значений. После переполнения начальные значения загружается автоматически.
Позже посмотрю ДШ на 11-й.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
Shuspano
Грызет канифоль
Сообщения: 270
Зарегистрирован: Вс окт 20, 2019 13:03:56

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Shuspano »

У 11-го простые таймеры как у 8051
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Zhuk72 »

Режим с автозагрузкой есть, но он только 8-битный.
Младший регистр тикает, во время переполнения взводится флаг и из старшего в младший подгружается стартовое значение.
Для комфортного, без лишних манипуляций, прерывания в 1 мс 8-битный таймер маловат будет, нужно еще счетчик переполнений добавить.

Единственное, что мне непонятно, это какова частота внутреннего генератора. Нигде об этом явно не пишется.
В 15-х значение генератора устанавливалось в конфигурации на стадии прошивки. С этим непонятно пока.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Shuspano
Грызет канифоль
Сообщения: 270
Зарегистрирован: Вс окт 20, 2019 13:03:56

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Shuspano »

Zhuk72 писал(а): Единственное, что мне непонятно, это какова частота внутреннего генератора. Нигде об этом явно не пишется.
В 15-х значение генератора устанавливалось в конфигурации на стадии прошивки. С этим непонятно пока.
Некоторые опции устанавливаются в прошивальщике. Частота тоже.
Я вот на STC11F04 искал в даташите, как (не очень нужный) reset переделать в P3.6 Думал, что-то куда-то надо записать или бит поставить, но в даташите ни слова. Оказывается, это галка в прошивальщике.
Вложения
IRC_freq.png
(77.04 КБ) 100 скачиваний
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Zhuk72 »

Это картинка про 15F204, я же про него и писал постом выше.
А в 11F04 частота при прошивке не выставляется, там все гораздо хуже.
User can use “MOV @Ri” instruction read RAM unit FC~FF to get the internal oscillator frequency of the factory and read RAM unit F8~FB to get internal oscillator frequency of last used to download programs within the internal oscillator after power on.
И вообще рекомендуют использовать кварц, особенно если планируется использовать УАРТ или другие временно-чувствительные функции, ибо у внутреннего генератора частота очень нестабильна.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
Shuspano
Грызет канифоль
Сообщения: 270
Зарегистрирован: Вс окт 20, 2019 13:03:56

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Shuspano »

Я кажись придумал, что надо сделать с таймером. Там есть режим 0 (13-битный таймер), это сделано для совместимости с MCS-48. Если его просто запустить без загрузки в счетные регистры, он будет считать по кругу, переваливаясь через переполнение, и генерировать прерывания через ~8 мс. Я недавно изображал динамическую индикацию таким способом, там ровно такая-же проблема была.


Прошивалка написала 5,4 МГц. У меня кварц 12МГц. УАРТ, к счастью у них некапризный.
Вложения
STC11_IRC.png
(74.76 КБ) 97 скачиваний
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: 8051. Прерывание на кнопке, жесть.

Сообщение Zhuk72 »

Прошивалка читает данные о частоте из регистров, выше я давал цитату из ДШ.

Код: Выделить всё

TIMER0INIT:			;1000us@12.000MHz
	ORL AUXR,#80H	;Timer clock is 1T mode
	ANL TMOD,#0F0H	;Set timer work mode
	MOV TL0,#020H		;Initial timer value
	MOV TH0,#0D1H	;Initial timer value
	CLR TF0			;Clear TF0 flag
	SETB TR0		        ;Timer0 start run
	RET
Вот готовый код на 12 МГц с прерывание в 1 мс.
В прерывании нужно только добавить загрузку TL0/TH0 теми же значениями.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: 8051. Прерывание на кнопке, жесть.

Сообщение BOB51 »

Прерывание нужно только для активации режима клавиатурного ввода.
При самом вводе работаем обычным опросом порта ЛВК.
А уже по завершении работ с клавиатурой (отсутствие активности энное время) возвращаемся в ожидание воздействия через прерывание.
8)
Ответить

Вернуться в «Разные вопросы по МК»