В данной проге при пошаговом дебагинге не правильно работает команда ret пример кода на асме .include "m32adef.inc" .list .def temp = R16 .def loop = R17 .cseg .org 0 ldi temp,high(RAMEND) out SPL, temp ;------------------ИННИЦИАЛИЗАЦИЯ ПОРТОВ ВВ------------ ldi temp, 0x00 out DDRA, temp ldi temp, 0xFF out PORTA, temp out DDRB, temp out PORTB, temp ;------------------ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ------------ MAIN: in temp, PINA SBRC temp, 0 RJMP MAIN rcall wait ;------------------ПЕРЕКЛЮЧЕНИЕ СВЕТОДИОДА------------- IN temp, PINB SBRC temp, 0 RJMP M1 SBI PORTB, 0 RJMP M2 M1: CBI PORTB, 0 ;------------------ЦИКЛ ОЖИДАНИЯ ОТПУСКАНИЯ КНОПКИ----- M2: IN temp, PINA SBRS temp, 0 RJMP M2 rcall wait RJMP MAIN ;------------------подпрограмма задержки--------------- wait: ldi loop, 200 wt1: dec loop brne wt1 ret выполняя команду ret переходит не туда от куда вышла а на самый верх кода (ldi temp,high(RAMEND)). что я делаю не так? Работаю с JTAGICE3 и с симулятором, результат один и тот же. Простая схемка управления светодиодом(PORTB.0) с помощью кнопки (PINA.0)
Спасибо что помогли, но нашел свой косяк, покурил даташит и нашел в чем проблема ldi temp,high(RAMEND) out SPH, temp ldi temp,low(RAMEND) out SPL, temp не глумитесь, сам только учусь
электрик, зря ты так, вот даже на этапе обучения, у меня на си не пошла нормально простейшая программка, при дизассемблировании ее я нашел недостаток сей затыки, знание ассемблера не не маловажный момент при программировании микроконтроллеров. Почитав форумы, выяснился неприятный момент с Atmel Studio 6, что он криво работает с С++. На другие программные продукты не хочется переходить из-за того, что для этого всего действа был куплен фирменный программатор JTAGICE3. А в других оболочках нет поддержки этого программатора.
The Last Winged, А я и не утверждал этого, мне удобно работать в одной программе и прям из нее все скидывать на микроконтроллер, нежели каждый раз переключаться между студией и Khazama AVR Programmer. Я и написал выше, что сам себя привязал к студии из-за покупки дебагера. Я до JTAGICE3 купил USBASP, сам собрал 2 клона JTAGICE lite и AVRMKII lite, а отказался от них по причине наличия приятных плюшек в шестой студии, а в шестой студии вышеперечисленные устройства не поддерживаются, кроме JTAGICE3. На данный момент стоит всего одна шестая студия и мне очень нравиться в ней работать, а до этого стояла целая гора ПО чем очень сильно напрягала. Тем более я только начал учиться этому и мне этого за глаза хватает. ---------- Сообщение добавлено 15.12.2013 17:48 ---------- Вот бы лучше чем флудить, помогли бы мне с освоением СИ и СИ++, если кому скучно по вечерам например. По скайпу я бы не отказался по вечерам за душевной беседой с кофе познавать данный предмет.