Easyelectronics.ru

Электроника для всех
Текущее время: 08 мар 2021, 08:50

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
 Заголовок сообщения: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 23 мар 2014, 18:16 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
Приветсвую, на выводах 3 портов МК 89S51 нужно сгененировать 3 квадратных волны с периодами 10ms, 30ms и 90 ms. (кристал 11.0592MHz)
Почитал литературу и использую код из книги Мазиди :
Show

Протестировал в Proteus и все работает, но дело в том что насколько я понял не могу использовать таймер в режиме Mode 2 - 8 бит, ведь загружать числа можно с 1 до 256 и для таких низких частот это не подходит (90ms-11.11Hz,30ms, 33.33Hz, 10ms - 100Hz) я правильно понял?
Попробовал использовать код для режима Mode 1, сделал расчет для 10ms :
Show
и вот код :
Show

Но на выводах порта P2.3 - ноль. 0_0

Вот код и схема, кому интересно :


Вложения:
ASM_Code.rar [17.46 Кб]
Скачиваний: 303
MicroTimer.rar [16.81 Кб]
Скачиваний: 265
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 04:38 
Только пришел

Зарегистрирован: 22 мар 2014, 14:26
Сообщения: 13
Вот так будет работать:
Show

Вы в своем коде забывали флаг сбросить, ну и мигать лучше инвертируя, имхо :)


Последний раз редактировалось Mtbs 24 мар 2014, 05:02, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 04:52 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
Спасибо за ответ, только нащел работающий код, потом и ваш попробую.
Вообще по отдельности работает, но как сделать чтоб 3 пина генерировали?
Вот например для код для 90 ms
Show

А как таких 3 "куска" вместе "слепить"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 05:12 
Только пришел

Зарегистрирован: 22 мар 2014, 14:26
Сообщения: 13
вместе "слепить" можно :) только вот, Вам надо одновременно все 3 ножки дергать или это задание в институте на сообразительность? учитывая 10-30-90ms, можно настроить таймер на 10, а в регистрах считать сколько раз дернули этой ножкой(пином) и на 3й раз дергать 2ю ногу, на 9й раз третью ногу, получится,что генерим 3 частоты, так, наверное?
P.S. Вы там с числами для таймера не напутали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 15:53 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
Да нужно чтобы на одном пине было 10мс, на другом 30мс и на третьем 90мс как на скрине, только это код на C а мне еще нужно сделать в ассембли


Вложения:
Lab3_1.png
Lab3_1.png [ 148.17 Кб | Просмотров: 6948 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 20:32 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
Numerikon писал(а):
Да нужно чтобы на одном пине было 10мс, на другом 30мс и на третьем 90мс как на скрине, только это код на C а мне еще нужно сделать в ассембли

Не вижу препятствий, настройте таймер на генерирования прерывания с нужной периодичностью (10мс). В обработчике таймера заведите два программных счетчика на три. Второй будет срабатывать от перезагрузки первого. При вызове прерывания, и при перезагрузке счетчиков инвертируйте выходные пины. Так то так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 20:56 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
anakost писал(а):
В обработчике таймера заведите два программных счетчика на три.

Не понял, завести оба таймера на режим Mode 3 ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 21:01 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
Нет, аппаратный таймер нужен только один, с периодичностью 10мс. Все остальное делаете в прерывании программно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 21:07 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
А что значит завести два програмных счетчика на три? Считать 3 раза по 10ms? А как это сделать?
Вот допустим
Show
каждые 5 мс счетчик останавливается, а второй как сделать чтоб он отслеживал этот счетчик?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 21:18 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
Numerikon писал(а):
...А как это сделать?...

Потерпите немного, сейчас нет времени, постараюсь ответить завтра. Да, чуть не забыл, частота МК какая?


Последний раз редактировалось anakost 24 мар 2014, 21:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 24 мар 2014, 21:19 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
Cпасибо! Пока буду дальше курить литературу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 25 мар 2014, 04:11 
Только пришел

Зарегистрирован: 22 мар 2014, 14:26
Сообщения: 13
Вот на основе Вашего кода и рисунка в Протеусе. См. вложение.
Судя по тому,что Вы не ответили о нужности или ненужности одновременной генерации,
думаю, что здесь это неважно.
Если плохо написал или нужны корректировки, то уважаемые гуру меня поправят(нахожусь в стадии изучения асма :)).


Вложения:
Asm_Lab_3.zip [393 байт]
Скачиваний: 263
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 25 мар 2014, 21:12 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
Не готовая программа, просто прототип как я бы стал решать подобную задачу:
Show Ассемблер А51 Keil nVision4

Все три сигнала полностью формируются таймером в прерывании. Основная программа просто выполняет холостой цикл.


Вложения:
GenTriply.png
GenTriply.png [ 14.23 Кб | Просмотров: 6868 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 26 мар 2014, 01:40 
Заглядывает иногда

Зарегистрирован: 07 янв 2013, 16:28
Сообщения: 56
Mtbs писал(а):
Вот на основе Вашего кода и рисунка в Протеусе. См. вложение.
Судя по тому,что Вы не ответили о нужности или ненужности одновременной генерации,
думаю, что здесь это неважно.
Если плохо написал или нужны корректировки, то уважаемые гуру меня поправят(нахожусь в стадии изучения асма :)).

Спасибо большое , работает! А по какой литературе изучаете? Можно авторов и книги на русском или английском?
anakost писал(а):
Не готовая программа, просто прототип как я бы стал решать подобную задачу:
Show Ассемблер А51 Keil nVision4

Все три сигнала полностью формируются таймером в прерывании. Основная программа просто выполняет холостой цикл.

Спасибо, буду разбираться!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 26 мар 2014, 03:23 
Только пришел

Зарегистрирован: 22 мар 2014, 14:26
Сообщения: 13
Numerikon писал(а):
Спасибо большое , работает! А по какой литературе изучаете? Можно авторов и книги на русском или английском?

изучаю по Фрунзе А.В. "Микроконтроллеры? Это же просто!", также форумы, методички в сети разные, от разных вузов - бывает очень понятно все расписано.После Фрунзе понадобятся, конечно, другие книги :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование таймера МК 89S51,3 квадрата- 10ms, 30 ms, 90ms
СообщениеДобавлено: 26 мар 2014, 07:22 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
Numerikon писал(а):
... А по какой литературе изучаете? Можно авторов и книги на русском или английском?

Главное - алгоритмизировать задачу, т.е. понять как делать, а кодирование обычно вопросов не вызывает.
В затруднительных ситуациях пользуюсь хелпом Keil uVision по A51 и табличкой по ассемблеру вроде этой
http://forum.easyelectronics.ru/download/file.php?id=17682
А насчет литературы, пробежите профильную ветку.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB