Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 15.01.2006, 00:54   #1
RA00229
Гость
 
Сообщений: n/a
По умолчанию Программные прерывания в at89c2051

Подскажите начинающему программисту: как организовать программное прерывание в 89c2051? Читал в документации, что в более навороченных камнях используется команда CALL, а в этом медленном контроллере её нет. Что вообще можно сделать, если есть около 100 строк, и после каждой надо вставить довольно большой кусок программы?
Реклама:
 
Непрочитано 15.01.2006, 16:55   #2
Isup
Гость
 
Сообщений: n/a
По умолчанию

а чем тебя не устраивают команды условных переходов?
 
Непрочитано 15.01.2006, 17:55   #3
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Программные прерывания в at89c2051

Сообщение от RA00229
как организовать программное прерывание в 89c2051? Читал в документации, что в более навороченных камнях используется команда CALL, а в этом медленном контроллере её нет.
Давайте разберемся все же, о чем речь.

Термин "программное прерывание" тут совершенно неуместен, раз уж речь о CALL - это обращение к подпрограмме. Да и почему вы решили, что нет такой команды?
nml вне форума  
Непрочитано 15.01.2006, 21:33   #4
RA00229
Гость
 
Сообщений: n/a
По умолчанию

Согласен, "программное прерывание" я грубовато обозвал... Мне нужно переходить к подпрограмме после каждой команды. Оператора CALL нет даже в тех. документации, если я её использую, контроллер виснет. Может так будет понятнее, что мне надо:
- команда1
setb tcon.4
m1: jnb tcon.5,m1
mov tcon,#00H
- команда2
setb tcon.4
m1: jnb tcon.5,m1
mov tcon,#00H
вот эту задержку мне нужно оформить как подпрограмму, чтобы уменьшить количество строк программы. Опыт работы с контроллерами всего около 2-х недель
 
Непрочитано 15.01.2006, 22:53   #5
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от RA00229
Согласен, "программное прерывание" я грубовато обозвал... Мне нужно переходить к подпрограмме после каждой команды. Оператора CALL нет даже в тех. документации, если я её использую, контроллер виснет.
Так "нет в документации" или "виснет"? Этот МК имеет ядро 51-го процессора. CALL в нем есть. Но обычно используется ACALL - так как ПЗУ невелико. А "виснет" - так тут давайте разберемся - 1) определен ли у вас указатель стека и 2) есть ли в конце вызываемой подпрограммы команда RET
nml вне форума  
Непрочитано 16.01.2006, 01:38   #6
RA00229
Гость
 
Сообщений: n/a
По умолчанию

Стек был указан, комагда RET была, пока ждал ответа, нашёл нормальное русское описание команд, использовал комаду LCALL и всё заработало! 8O Всем спасибо, кто откликнулся!
 
Непрочитано 16.01.2006, 02:26   #7
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от RA00229
Стек был указан, комагда RET была, пока ждал ответа, нашёл нормальное русское описание команд, использовал комаду LCALL и всё заработало! 8O Всем спасибо, кто откликнулся!
Вот и славно. Но для МК с таким объемом ПЗУ LCALL (LONG call) использовать совершенно ни к чему - на каждой команде теряется 1 байт и 1 такт. Насколько помню (а с 51 не работаю давно уже) там есть 2-х байтная ACALL команда.

Кстати, если компилятор умный - есть и такие - он команду CALL в зависимости от условий сгенерит либо ACALL (близкий вызов) либо LCALL
nml вне форума  
Закрытая тема

Закладки


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование at89c2051 urisss Микроконтроллеры, АЦП, память и т.д 1 26.07.2009 01:26
Прерывания AT89C2051 awix Микроконтроллеры, АЦП, память и т.д 6 21.09.2008 20:57
Помогите с AT89C2051 BSL Микроконтроллеры, АЦП, память и т.д 0 07.11.2005 11:48
AT89C2051 KVN16 Микроконтроллеры, АЦП, память и т.д 1 01.10.2005 12:57
At89C2051+ВВ55 cr0ackerc Микроконтроллеры, АЦП, память и т.д 3 08.06.2005 03:08


Часовой пояс GMT +4, время: 02:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot