| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Косвенная адресация
28.06.2010, 19:21
|
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Косвенная адресация
Подскажите как правильно реализовать косвенную адресацию.
На асме давно-давно делал, а на Си незнаю как.
|
Код:
|
#bit LED0 = 5.0
#bit LED1 = 5.1
void Blink(int LEDx)
{
// мигаем указанным пином с нужной частотой и временем
}
void Main(void)
{
while(1)
{
Blink(0);
Blink(1);
}
} |
|
|
|
|
28.06.2010, 20:36
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: косвенная адресация
А зачем тут косвенная адресация на Си?
__________________
Глаза боятся,а руки делают.
|
|
|
|
28.06.2010, 20:43
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: косвенная адресация
да в Blink вставить case и все дела
|
|
|
|
28.06.2010, 20:43
|
|
|
Прохожий
Регистрация: 15.07.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: косвенная адресация
Тоже не задумывался о ее необходимости на Си, все напрямую пишу.
Можно пример, чтобы без нее не обойтись было?
__________________
Лучше сказать "не пробовал" и попытаться, чем "не могу" и огорчаться...
|
|
|
|
28.06.2010, 20:51
|
|
|
Временная регистрация
Регистрация: 04.08.2006
Сообщений: 67
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 11 сообщении(ях)
|
Re: косвенная адресация
Человеку надо светодиодом помигать (вернее двумя по очереди) на Си, а "косвенная адресация" - это часть мысли из Ассемблера.
з.ы. не знал и забыл
|
|
|
|
28.06.2010, 21:19
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: косвенная адресация
Сообщение от bonchuk_p
|
Тоже не задумывался о ее необходимости на Си, все напрямую пишу.
Можно пример, чтобы без нее не обойтись было?
|
Ну почему-же. В AT89 битовая адресация портов была.Там могло-бы пригодиться.
|
|
|
|
28.06.2010, 21:33
|
|
|
Прохожий
Регистрация: 15.07.2009
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: косвенная адресация
Тогда CASE, самое удобно, однако, так как время = 1/частота, то реализовать можно через delay(), что тоже самое простое, на мой взгляд.
› Ну почему-же. В AT89 битовая адресация портов была.Там могло-бы пригодиться.
Спасибо, но я не застал, может оно так, но разве не было возможности обойти эту кос.адресацию? Скорее всего на Си была, правда не знаю поддерживают ли AT89 Си компиляторы, WinAVR-20100110 не поддерживает.
__________________
Лучше сказать "не пробовал" и попытаться, чем "не могу" и огорчаться...
|
|
|
|
28.06.2010, 22:36
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
|
Re: косвенная адресация
????
Любой компилятор, в котором есть регистры косвенной адресации, всегда использует их при работе с указателями. Винавр - не исключение
|
Код:
|
count1_snd=32;
ukaz=&arrr[0];
do{
*ukaz++=5;
}while(--count1_snd); |
|
Код:
|
count1_snd=32;
3f2: 80 e2 ldi r24, 0x20 ; 32
3f4: 80 93 00 01 sts 0x0100, r24
ukaz=&arrr[0];
3f8: 85 e0 ldi r24, 0x05 ; 5
3fa: 91 e0 ldi r25, 0x01 ; 1
3fc: 90 93 2c 01 sts 0x012C, r25
400: 80 93 2b 01 sts 0x012B, r24
do{
*ukaz++=5;
404: 95 e0 ldi r25, 0x05 ; 5
406: e0 91 2b 01 lds r30, 0x012B
40a: f0 91 2c 01 lds r31, 0x012C
40e: 91 93 st Z+, r25
410: f0 93 2c 01 sts 0x012C, r31
414: e0 93 2b 01 sts 0x012B, r30
}while(--count1_snd);
418: 80 91 00 01 lds r24, 0x0100
41c: 81 50 subi r24, 0x01 ; 1
41e: 80 93 00 01 sts 0x0100, r24
422: 88 23 and r24, r24
424: 81 f7 brne .-32 ; 0x406 ‹main+0xc2› |
|
|
|
|
28.06.2010, 23:21
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
|
Re: косвенная адресация
Конечно! Но в данном случае топикстартер задал вопрос о косвенном обращении к БИТАМ в портах.
|
|
|
|
29.06.2010, 00:03
|
|
|
Гражданин KAZUS.RUN
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: косвенная адресация
Сообщение от urry
|
????
Любой компилятор, в котором есть регистры косвенной адресации, всегда использует их при работе с указателями. Винавр - не исключение
|
Работа через указатели - и есть, косвенная адресация.
Хотя при работе с языками высокого уровня, такого понятия, как виды адресации уже нет. Есть языковые средства.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:56.
|
|