Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
23.01.2012, 11:18
|
|
Временная регистрация
Регистрация: 18.11.2011
Сообщений: 98
Сказал спасибо: 1
Сказали Спасибо 11 раз(а) в 6 сообщении(ях)
|
Битовые операции с регистром общего назначения
Задача такая.
В CodeVisionAVR задаём какую-либо переменную.
При компиляции эта переменная пишется допустим в регистр общего назначения R4.
Возможно-ли из этого регистра прочитать не все 8 бит, а побитово?
Так-же как в портах ввода/вывода: PINA - считать все 8 бит, PINA.0 - считать бит 0, PINA.1 - считать бит 1 и т.д.
|
|
|
Сказали "Спасибо" Andry_MA
|
|
|
23.01.2012, 12:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Сообщение от Andry_MA
|
Задача такая.
В CodeVisionAVR задаём какую-либо переменную.
При компиляции эта переменная пишется допустим в регистр общего назначения R4.
Возможно-ли из этого регистра прочитать не все 8 бит, а побитово?
Так-же как в портах ввода/вывода: PINA - считать все 8 бит, PINA.0 - считать бит 0, PINA.1 - считать бит 1 и т.д.
|
Вы систему клманд МК просматривали? Рекомендую, их не так уж много.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
23.01.2012, 13:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Сообщение от Andry_MA
|
PINA.0 - считать бит 0, PINA.1 - считать бит 1 и т.д.
|
Это НЕ СЧИТЫВАНИЕ БИТА - ЭТО ПРОВЕРКА БИТА... нельзя одной командой прочитать 1 бит из регистров ввода вывода в рабочий регистры, можно только ПРОВЕРИТЬ СОСТОЯНИЕ БИТА, и то не во всех, а ниже 3F (ИМХО).
Сообщение от ut1wpr
|
Рекомендую.
|
Рекомендуется вообще начинать с чтения даташитов ))) а не с форума ))) народ ленивый ))
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
23.01.2012, 15:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Сообщение от Andry_MA
|
При компиляции эта переменная пишется допустим в регистр общего назначения R4.
|
Даташиты, система команд.......
Также настоятельно рекомендуется полистать доки на CV...
...переменная запишется в ОЗУ если не указать явно регистр...
А вы говорите ЯВУ.
Вот так и рождаются легенды, что одной командой можно прочитать бит...
Последний раз редактировалось omercury; 23.01.2012 в 15:08.
|
|
|
Сказали "Спасибо" omercury
|
|
|
23.01.2012, 15:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Сообщение от Andry_MA
|
Возможно-ли из этого регистра прочитать не все 8 бит, а побитово?
|
Возможно, одной командой.
Вопрос, что Вы с этим дальше будете делать?
|
|
|
Сказали "Спасибо" alvadep
|
|
|
23.01.2012, 15:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Сообщение от alvadep
|
Возможно, одной командой.
|
...если...
- переменная чудом окажется в регистре
- нужный бит окажется самым старшим или самым младшим
- если читать бит во флаг Т
...
upd.
Сообщение от alvadep
|
Вопрос, что Вы с этим дальше будете делать?
|
Точно. А нужно ли его вообще читать?
Последний раз редактировалось omercury; 23.01.2012 в 15:21.
|
|
|
Сказали "Спасибо" omercury
|
|
|
23.01.2012, 17:36
|
|
Гражданин KAZUS.RU
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Andry_MA, переменную можно просто проверять по битовой маске, например:
if (var & (1‹‹n)) { }, если надо просто считать бит, тогда bit = var & (1‹‹n) ? 1 : 0; либо bit = (var››n)&1 ;
Последний вариант лучше работает когда n является переменной и на этапе компиляции не известна.
|
|
|
|
24.01.2012, 08:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Битовые операции с регистром общего назначения
Сообщение от Andry_MA
|
При компиляции эта переменная пишется допустим в регистр общего назначения R4.
Возможно-ли из этого регистра прочитать не все 8 бит, а побитово?
|
Только не R4, а R16...R31
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:07.
|
|