Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Помогите с массивами в WinAvr

Непрочитано 06.01.2011, 19:24  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Помогите с массивами в WinAvr

Уважаемые нужна помощь)) Atmega8, WINAvr, Proteus 7.6 SP2
Нужно сделать с помощью 2-ух 4-х разрядных индикаторов, 2 дешифраторов и 3-х кнопок устройство ввода/вывода (на индикаторы) 8-ми разрядного числа. Т.е. при нажатии соответствующей кнопки меняется разряд/величина числа, записывается в массив, а из него все это хоз-во выводится на индикатор))
На пинах PD5, PD6, PD7 расположены кнопки, осуществляющие сдвиг разряда и увелечение/уменьшение числа на 1. 2 дешифратора - один на число, другой на позицию (УРА! динамическая индикация). Все записывается в массив step и выводится на порт C.
Проблема: с порта С ничего нет, наверное я не правильно работаю с массивом.
Прилагается: проект в WinAvr и проект в Proteus (извините за корявость, все делалось за 5 минут)
Вложения:
Тип файла: rar приложение.rar (50.1 Кб, 57 просмотров)
Реклама:
Sho_otnik вне форума  
Непрочитано 06.01.2011, 20:11  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

Как минимум разрешить Timer-у 0 прерывание
TIMSK=(1‹‹TOIE0);
andries5 вне форума  
Сказали "Спасибо" andries5
Sho_otnik (07.01.2011)
Непрочитано 06.01.2011, 20:25  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

Бьюсь головой об стол, как не заметил(((

Последний раз редактировалось Sho_otnik; 06.01.2011 в 20:48.
Sho_otnik вне форума  
Непрочитано 06.01.2011, 21:16  
Nfc
Прописка
 
Регистрация: 11.10.2008
Сообщений: 132
Сказал спасибо: 8
Сказали Спасибо 35 раз(а) в 30 сообщении(ях)
Nfc на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

Сообщение от Sho_otnik Посмотреть сообщение
Бьюсь головой об стол, как не заметил(((
бывает))) Ещё, оч не советую вам взводить/сбрасывать биты просто присваиванием, ибо когда вы делаете вот так TIMSK = (1‹‹TOIE0) , то в регистре у вас не только бит TOIE0 устанавливается в 1 , а ещё и все остальные биты сбрасываются в 0. Т.е. все предыдущие настройки этого регистра, реальные или пусть даже потенциально возможные в будущем, вы просто затираете, а это грабли ещё те. Пользуйтесь |= , чтобы установить бит(ы) и &=
, чтобы бит(ы) сбросить.
Nfc вне форума  
Сказали "Спасибо" Nfc
Sho_otnik (07.01.2011)
Непрочитано 07.01.2011, 00:16  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

т.е. вместо TIMSK=(1‹‹TOIE0); пишем TIMSK|=_BV(TOIE0); я правильно понял?
Sho_otnik вне форума  
Непрочитано 07.01.2011, 00:23  
serb-radio
Гражданин KAZUS.RUN
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

Правильно! Посмотрите статьи Сергея Рюмика в журналах Радиохлбби и радиоаматор, там это очень подробно расписано, как раз об этих конструкциях
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Сказали "Спасибо" serb-radio
Sho_otnik (07.01.2011)
Непрочитано 07.01.2011, 01:14  
Ar-Gen-Tum
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

Сообщение от Sho_otnik Посмотреть сообщение
т.е. вместо TIMSK=(1‹‹TOIE0); пишем TIMSK|=_BV(TOIE0); я правильно понял?
Мне больше нравится такой стиль записи:
// Установить бит в 1
TIMSK |= (1‹‹TOIE0)
// Сбросить бит в 0
TIMSK &= ~(1‹‹TOIE0)
Ar-Gen-Tum вне форума  
Сказали "Спасибо" Ar-Gen-Tum
Sho_otnik (07.01.2011)
Непрочитано 07.01.2011, 11:56  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: Помогите с массивами в WinAvr

А я предпочитаю

#define set_bit_0(reg, bit) (reg &= ~(1‹‹bit)) //PORT
#define set_bit_1(reg, bit) (reg |= (1‹‹bit)) //PORT
#define bit_is_1(reg, bit) (reg & (1‹‹(bit))) //PIN
#define bit_is_0(reg, bit) (!(reg & (1‹‹(bit)))) //PIN

и тогда:
TIMSK |= (1‹‹TOIE0);
пишу:
set_bit_1 (TIMSK,TOIE0);

и с портов читаю

if (bit_is_0 (PINB,5)) {};

или
#define BUTT_RST bit_is_0(PINB,5)

if (BUTT_RST) {};

Последний раз редактировалось andries5; 07.01.2011 в 12:03.
andries5 вне форума  
Эти 2 пользователя(ей) сказали Спасибо andries5 за это сообщение:
Flopix (07.01.2011), Sho_otnik (07.01.2011)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
Глюки WinAVR KBH-I Коллекция глюков 19 07.06.2011 01:16
[Решено] Помогите ещё раз, пожалуста madmax_82 Ремонт оргтехники 7 02.12.2010 11:07
Помогите, пожалуйста, с PICом и дисплеем VaL_KX Proteus 4 15.11.2010 22:33
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


Часовой пояс GMT +4, время: 07:34.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.