ФОРУМ ПО ЭЛЕКТРОНИКЕ

РАДИОЭЛЕКТРОНИКА ДЛЯ НАЧИНАЮЩИХ И САМОСТОЯТЕЛЬНЫЙ РЕМОНТ

width="240"

Наш канал на Ю-ТУБЕ

 
Текущее время: 16 окт 2018, 20:30

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Микроконтроллер
СообщениеДобавлено: 28 ноя 2014, 01:43 

Автор
Доброго времени суток, дорогие электронщики. Нашёл сайт со схемами, но всё равно не могу разобраться с "Динамической индексацией": http://www.radio-magic.ru/microcontrollers/84-dynamic там нет схемы, сложный вообще проект это?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Микроконтроллер
СообщениеДобавлено: 30 ноя 2014, 09:32 
Не в сети
ДРУЗЬЯ

Зарегистрирован: 03 ноя 2013, 18:19
Сообщения: 165
Откуда: Иркутск
да,для новичка без схемы сложновато ,но схема здесь не *главное*
в проекте даже не указан мк ,но можно поставить 2313 или мегу 8 или 16
самое нужное знать программу ,каждую строчку комментировать!
я напишу коменты к семплу какие знаю и вспомню. :)
#include <avr/io.h>//подключение самого мк авр к проекту
#include <avr/delay.h>// пауза где надо
#include <avr/interrupt.h>//привязка в схему таймера
char numarray[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//подключение переменной char размером 1 байт
unsigned char num=0; // подключение переменной размером 1 байт без отриц.значений
unsigned char raz1,raz2;
int seg=0;
ISR (TIMER0_OVF_vect) //включение таймера 0 оверфлау значит по переполнению
{

switch(seg)
{

case 0:
PORTD=~numarray[raz1];
break;
case 1:
PORTD=~numarray[raz2];
break;
}

PORTB =(1<<seg);
seg++;
if(seg>2) seg=0;


TCNT0=190;
}

int main(void)
{
DDRD=0xff;//настройка портов все выводы порта D будут сконфигурированы как выходы,будут 11111111
DDRB=0xff;//все выводы порта B будут сконфигурированы как выходы,
PORTB=0x00;//все выводы порта B будут сконфигурированы как выходы 00000000
//Настраиваем таймер
TCCR0 |=(0<<CS02)|(1<<CS01)|(1<<CS00);//прескалер или предделитель частоты
TIMSK |=(1<<TOIE0);
//------------------------

asm("sei");//разрешение прерывание асемблерская вставка
while(1)
{
if (num>99) num=0;
_delay_ms(600);//пауза 0.6 сек
num=num+1;
raz1=num/10;
raz2=num-10*raz1;
}
}
это не кодвижон ,среда winavr/
вот так и разбирайся .
только не с таким проектов ,а чего нибудь проще для начала.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB