Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.01.2006, 00:54
|
|
RA00229
Гость
|
Программные прерывания в at89c2051
Подскажите начинающему программисту: как организовать программное прерывание в 89c2051? Читал в документации, что в более навороченных камнях используется команда CALL, а в этом медленном контроллере её нет. Что вообще можно сделать, если есть около 100 строк, и после каждой надо вставить довольно большой кусок программы?
|
|
|
|
15.01.2006, 16:55
|
|
Isup
Гость
|
а чем тебя не устраивают команды условных переходов?
|
|
|
|
15.01.2006, 17:55
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Программные прерывания в at89c2051
Сообщение от RA00229
|
как организовать программное прерывание в 89c2051? Читал в документации, что в более навороченных камнях используется команда CALL, а в этом медленном контроллере её нет.
|
Давайте разберемся все же, о чем речь.
Термин "программное прерывание" тут совершенно неуместен, раз уж речь о CALL - это обращение к подпрограмме. Да и почему вы решили, что нет такой команды?
|
|
|
|
15.01.2006, 21:33
|
|
RA00229
Гость
|
Согласен, "программное прерывание" я грубовато обозвал... Мне нужно переходить к подпрограмме после каждой команды. Оператора 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
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от RA00229
|
Согласен, "программное прерывание" я грубовато обозвал... Мне нужно переходить к подпрограмме после каждой команды. Оператора CALL нет даже в тех. документации, если я её использую, контроллер виснет.
|
Так "нет в документации" или "виснет"? Этот МК имеет ядро 51-го процессора. CALL в нем есть. Но обычно используется ACALL - так как ПЗУ невелико. А "виснет" - так тут давайте разберемся - 1) определен ли у вас указатель стека и 2) есть ли в конце вызываемой подпрограммы команда RET
|
|
|
|
16.01.2006, 01:38
|
|
RA00229
Гость
|
Стек был указан, комагда RET была, пока ждал ответа, нашёл нормальное русское описание команд, использовал комаду LCALL и всё заработало! 8O Всем спасибо, кто откликнулся!
|
|
|
|
16.01.2006, 02:26
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от RA00229
|
Стек был указан, комагда RET была, пока ждал ответа, нашёл нормальное русское описание команд, использовал комаду LCALL и всё заработало! 8O Всем спасибо, кто откликнулся!
|
Вот и славно. Но для МК с таким объемом ПЗУ LCALL (LONG call) использовать совершенно ни к чему - на каждой команде теряется 1 байт и 1 такт. Насколько помню (а с 51 не работаю давно уже) там есть 2-х байтная ACALL команда.
Кстати, если компилятор умный - есть и такие - он команду CALL в зависимости от условий сгенерит либо ACALL (близкий вызов) либо LCALL
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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, время: 01:50.
|
|