Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Эта команда является командой относительного вызова (relative call), поэтому подпрограмма должна находиться в пределах 2048 команд от команды rcall. Для возврата (return) из подпрограммы используется соответствующая команда:
Ret
Можно сколько угодно вызывать подпрограммы из другой подпрограммы, например:
Sub1:
Rcall Sub2;
Rcall Sub3
Rcall Sub4
Ret
Start:
Rcall Sub1
До настоящего момента все наши программы были совместимы «снизу вверх», т.е. они могли работать и в более развитых моделях AVR. При использовании же подпрограмм эта совместимость нарушается, и, если вы разрабатываете такие программы для моделей, отличных от 1200 или Tiny, в секцию Init необходимо добавить следующие четыре строки:
Ldi temp,LOW(RAMEND); Указатель стека установлен
Out SPL,temp; на последний адрес ОЗУ
Ldi temp,HIGH(RAMEND)
Out SPH,temp
Кнопка симулятора Step Over (F10) используется для выполнения программы без захода в подпрограмму, т.е. сама подпрограмма выполняется с высокой скоростью, после чего программа останавливается на следующей строке. Кнопка Step Out (Shift + F11) используется при нахождении в теле подпрограммы. После нажатия на эту кнопку программа, выполнив команду возврата, останавливается.
Дата публикования: 2015-02-03; Прочитано: 222 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!