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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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.RU
 
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
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.RU
 
Регистрация: 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.RU
 
Регистрация: 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.RU
 
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
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, время: 11:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot