Зарегистрирован: Сб мар 10, 2012 21:14:01 Сообщений: 32
Рейтинг сообщения:0
Здравствуйте! помогите пожалуйста с кодом
Код:
char buf[] = { //массив с цифрами 0b00000011, //0 0b10011111, //1 0b00100101, //2 0b00001101, //3 0b10011001, //4 0b01001001, //5 0b01000001, //6 0b00011111, //7 0b00000001, //8 0b00001001, //9 0b11111111 }; unsigned char a; for(a=0; a<8; a++){ //цикл для вывода 8 бит данных из массива PORTB.0 = buf[1] & 1<<a; //выводим в линию DATA текущий бит
Это пример из CVAVR всем известно что там есть такая фишка как " PORTB.0 ="," PORTC.4 =" и.т и.п а как его переделать под AVR STUDIO вить там пины портов назначаются по другому !?
Это в виду того, что макрос _BV(Pxy) отсутствует в других средах (типа IAR, Keyl и прочих). К примеру, на STM32 уже будет тяжко перенести. Придется править везде.
_________________ I am DX168B and this is my favourite forum on internet!
Точно, но вопрос был про студию.А пины лень было писать на телефоне Так же можно сказать про тернарный оператор, тоже не везде есть его обработка. А насчет макроса, так то можно сделать заголовочный файл - прокладку для облегчения переносимости. Неужели там нет макросов? Студия вроде как не сильно отступает от стандартов си. Даже ЕЕПРОМ резервного слова нет, все только в макросах.
PS.Есть готовый проект для студии 5 с выводом на сдвиговый регистр.Я так понимаю этот код для этого нужен? Если нужно могу скинуть.
_________________ В поисках истины человек развивается.
Заголовок сообщения: Re: побитовый вывод числа в пин
Добавлено: Пн сен 10, 2012 00:15:09
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
vitalik_1984 писал(а):
Точно, но вопрос был про студию.А пины лень было писать на телефоне Так же можно сказать про тернарный оператор, тоже не везде есть его обработка. А насчет макроса, так то можно сделать заголовочный файл - прокладку для облегчения переносимости. Неужели там нет макросов? Студия вроде как не сильно отступает от стандартов си. Даже ЕЕПРОМ резервного слова нет, все только в макросах.
Ну, можно и самому слепить этот макрос. Я какбэ уже стараюсь писать код полностью переносимым, так как те или иные куски потом сгодятся в других проектах. Сокращает время разработки. Как-то слепил 25 классов (С++) для работы с кое-каким оборудованием. Изначально, они предназначались для x86 (писалась софтина под вынь) потом надо было научить МК работать с этим оборудованием. Взял исходники и заголовочники из MVSC 2008 и сунул в проект IAR. Изменил только содержимое функций обмена с устройствами и индикации\обслуживания GUI (надо было вывести все на графический LCD и программные кнопки заменить на аппаратные) Ну и лишнее тупо выкинул. Все закомпилировалось и заработало с полпинка. Затрата времени на перенос - 2 часа.
vitalik_1984 писал(а):
Неплохо бы пару комментов для сишников
Код:
MOV TEMP,...;копирование отправляемого байта в регистр TEMP LDI TEMP2, 8 ;загрузка константы количества отправляемых битов LOOP:;Метка LOOP (цикл отправки) SBRC TEMP, 0 ;пропустить следующую инструкцию, если бит 0 в регистре TEMP сброшен SBI PORTB, _OUT ;установка бита в PORTB SBRS TEMP, 0 ;пропустить следующую инструкцию, если бит 0 в регистре TEMP установлен CBI PORTB, _OUT ;сброс бита в PORTB ROR TEMP ;сдвиг в право содержимого регистра TEMP DEC TEMP2 ;декремент регистра TEMP2 BRNE LOOP ;Если не ноль, то переходим к метке LOOP ...;Отправка завершена
_________________ I am DX168B and this is my favourite forum on internet!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения