реклама на сайте
подробности

 
 
> Тест команд перехода
DiMonstr
сообщение Nov 30 2008, 16:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 26-10-06
Из: Россия, Пенза
Пользователь №: 21 706



Есть код, который тестирует команды перехода контроллера AVR. После положительного теста каждой команды увеличивается значение счетчика R17. После теста это значение будет суммироваться с адресом смещения подпрограммы TESTJMP_FINISH. В результате должна выполниться эта строка кода:
RJMP TESTJMP_FINISH_COMPLETE
Количество команд зацикливания на себя RJMP $ равно значению счетчика R17.
Если хоть одна команда перехода отработает не правильно, то значение счетчика будет не верно и выполнение программы попадёт в программную ловушку
RJMP $
Вопрос: как мне определить смещение подпрограммы TESTJMP_FINISH?



Код
...
...
...
    ;//////////////////////////////////////////////////////////////////////////
    ;// 21. TEST BRIE перехода(Перейти если флаг I=1)
                SEI            
                BRIE            TESTJMP_SUCCESS_BRIE
    ;// Ошибочный переход(I=0)
        CALL        TESTJMP_FINISH
TESTJMP_SUCCESS_BRID:
        INC        R17                
                
    ;//////////////////////////////////////////////////////////////////////////
    ;// Формируем адрес перехода исходя из результатов тестов R17=0x19

                LDI             R31, 0x01                
                LDI             R30, 0x2C
            
                
    ;//////////////////////////////////////////////////////////////////////////
    ;// Косвенный переход в зависимости от результата в регистре Z:R30,R31
        IJMP
//        CALL        TESTJMP_FINISH_COMPLETE

    ;//////////////////////////////////////////////////////////////////////////
    ;// Програмные ловушки
TESTJMP_FINISH:
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $                
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $                
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            TESTJMP_FINISH_COMPLETE          
                RJMP            $                
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $
                RJMP            $                

;//////////////////////////////////////////////////////////////////////////
;// Тест прошёл успешно
TESTJMP_FINISH_COMPLETE:
    LDI        R17, 0x04
    sts     $2000, R17

    XCALL   __low_level_init

    REQUIRE ?cstartup_call_main
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016