|
Работа с опреативной памятью в AVR ASM |
|
|
|
Jan 18 2011, 09:56
|

Участник

Группа: Участник
Сообщений: 17
Регистрация: 27-09-10
Из: Харьков
Пользователь №: 59 762

|
Здравствуйте, так получилось, что на C/С++ для АВРов начал писать раньше, чем на АСМе. Теперь не совсем понятно как корректно работать с переменными в SRAM. Если на С задачу копирования адреса я решал так: Код unsigned char *ptr1, *ptr2;
ptr2 = ptr1; и копирование значения (как вариант): Код unsigned char *ptr1, *ptr2;
*ptr2 = *ptr1; то как такие задачи решаются на АСМе? если написан следующий код: Код Tmp1: .byte 1 Tmp2: .byte 1
.....
lds r16,SPDR ;для примера взят регистр SPI st Z+,r16
lds Tmp1,ZH lds Tmp2,ZL то что значат последние две строки кода: что я копирую значения старшего и младшего байтов регистра Z или что я копирую новый адрес ячейки памяти, на которую указывает Z после постинкремента? Вобщем хотелось бы знать как в АСМе скопировать адрес и как скопировать значение. Надеюсь корректно описал вопрос.
|
|
|
|
|
 |
Ответов
|
Jan 18 2011, 15:02
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Код .def R16,temp .def R17,count .def R4,SaveSREG ... Инициализация
.DSEG USART_BUFF: .byte 50
SAVE_INDEX_Z: byte 2 SaveZL =0 SaveZH=1
MAIN: ldi ZH,HIGH(USART_BUFF) ldi ZL,LOW(USART_BUFF) ldi count,50 .........................
USART0_RXC: in SaveSREG,SREG push SaveSREG push temp push ZL push ZH lds ZL,SAVE_INDEX_Z+SaveZL lds ZH,SAVE_INDEX_Z+SaveZH lds temp,UDR0 st Z+,temp dec count brne END_RX ldi ZH,HIGH(USART_BUFF) ldi ZL,LOW(USART_BUFF) ldi count,50 END_RX: sts SAVE_INDEX_Z+SaveZL,ZL sts SAVE_INDEX_Z+SaveZH,ZH pop ZH pop ZL pop temp pop SaveSREG out SREG,SAVESREG reti Но лучше использовать регисты X или Y вместо Z- через Z идёт обращение к памяти програм и Eeprom и он чаще используется и соответственно его надо отслеживать и при необходимости PUSH и POP
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
Сообщений в этой теме
HoboTech Работа с опреативной памятью в AVR ASM Jan 18 2011, 09:56 ILYAUL Кодlds Tmp1,ZH
lds Tmp2,ZL
Вы считывете в Tmp1- зн... Jan 18 2011, 10:38 HoboTech Цитата(ILYAUL @ Jan 18 2011, 12:38) Вы сч... Jan 18 2011, 11:52 ILYAUL Что бы понять до конца задачу - прерывания идут ... Jan 18 2011, 13:17 HoboTech Цитата(ILYAUL @ Jan 18 2011, 15:17) Что б... Jan 18 2011, 13:51  Дмитрий Ветра Цитата(HoboTech @ Jan 18 2011, 17:39) Я т... Jan 18 2011, 16:31   HoboTech Цитата(Дмитрий Ветра @ Jan 18 2011, 18:31... Jan 18 2011, 17:04  ILYAUL Цитата(HoboTech @ Jan 18 2011, 18:39) Я т... Jan 18 2011, 17:26 HoboTech И все таки туго что-то до меня доходит работа с ад... Jan 21 2011, 11:19 _Bill Цитата(HoboTech @ Jan 21 2011, 15:19) И в... Jan 22 2011, 06:06  HoboTech Про lds и ldi я понял, спасибо. Не понял что именн... Jan 24 2011, 08:42   _Pasha Цитата(HoboTech @ Jan 24 2011, 12:42) P.S... Jan 24 2011, 09:20   demiurg_spb Цитата(HoboTech @ Jan 24 2011, 11:42) Не ... Jan 24 2011, 09:57   _Bill Цитата(HoboTech @ Jan 24 2011, 12:42) Про... Jan 24 2011, 12:35  ILYAUL Цитата(_Bill @ Jan 22 2011, 09:06) В реги... Jan 24 2011, 11:08 V_G Это вы байт загружаете.
Адрес - другой командой (д... Jan 21 2011, 12:22 ILYAUL Цитата(V_G @ Jan 21 2011, 15:22) Это вы б... Jan 21 2011, 13:26 V_G Как это в SRAM?
LDS - загрузка ИЗ SRAM в регистр (... Jan 21 2011, 13:50 ILYAUL Цитата(V_G @ Jan 21 2011, 16:50) Как это ... Jan 21 2011, 14:28 ILYAUL Можно , так же открыть Ефремова . Почитать главу ... Jan 24 2011, 13:42 HoboTech Спасибо за ответы. Еще почитаю, наверняка возникну... Jan 24 2011, 14:06 нечитатель Не считая полезным занятием переписывание собствен... Jan 26 2011, 00:54 _Bill Цитата(нечитатель @ Jan 26 2011, 04:54) Н... Jan 26 2011, 04:02 V_G Цитата(нечитатель @ Jan 26 2011, 10:54) е... Jan 26 2011, 05:01 OlegNZH Цитата(нечитатель @ Jan 26 2011, 03:54) В... Jan 26 2011, 05:04  _Bill Цитата(OlegNZH @ Jan 26 2011, 09:04) ну ... Jan 26 2011, 05:46   OlegNZH Цитата(_Bill @ Jan 26 2011, 08:46) Ну, во... Jan 26 2011, 06:02    _Bill Цитата(OlegNZH @ Jan 26 2011, 10:02) Вооб... Jan 26 2011, 06:12    ILYAUL Цитата(OlegNZH @ Jan 26 2011, 09:02) Вооб... Jan 26 2011, 06:15 _Pasha Цитата(нечитатель @ Jan 26 2011, 03:54) п... Jan 26 2011, 06:53  _Bill Цитата(_Pasha @ Jan 26 2011, 10:53) Это б... Jan 26 2011, 06:57  нечитатель Цитата(_Pasha @ Jan 26 2011, 09:53) Это б... Jan 26 2011, 19:52   _Pasha Цитата(нечитатель @ Jan 26 2011, 23:52) С... Jan 27 2011, 04:32    OlegNZH Цитата(_Pasha @ Jan 27 2011, 07:32) Первы... Jan 27 2011, 09:19 OlegNZH Bill Да причём тут целостность инструкции! Уж... Jan 26 2011, 07:13  _Bill Цитата(OlegNZH @ Jan 26 2011, 11:13) Bill... Jan 26 2011, 07:15   OlegNZH Цитата(_Bill @ Jan 26 2011, 10:15) Что зн... Jan 26 2011, 07:44  ILYAUL Цитата(OlegNZH @ Jan 26 2011, 10:13) Bill... Jan 26 2011, 07:49 OlegNZH О,господи..... Вы мой пост #27 прочитайте. (и #26 ... Jan 26 2011, 08:31 _Bill Цитата(OlegNZH @ Jan 26 2011, 12:31) О,го... Jan 26 2011, 09:51 ILYAUL Цитата(OlegNZH @ Jan 26 2011, 11:31) О,го... Jan 26 2011, 13:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|