Страница 1 из 1

Помогите составить программу.

Добавлено: Вс мар 25, 2012 15:33:59
XyLigan_xD
Народ,помогите пожалуйста составить программу в Code Vision AVR
Для светодиодов.
Нужно чтобы при нажатии 1 кнопки,загорались 2 светодиода.Когда отпускаешь чтобы тухли
А при нажатие 2 кнопки,загорались следующие 2 светодиода.

У меня так по заданию,что PORT D это выход,а порт B вход, и светодиоды подключение по аноду.
И правильно ли я построил схему?

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 15:54:51
SERJ
XyLigan_xD писал(а):Нужно чтобы при нажатии 1 кнопки,загорались 2 светодиода.
Когда отпускаешь чтобы тухли.
А при нажатие 2 кнопки,загорались следующие 2 светодиода.
Выкиньте МК и соедините так.
Будет очень оригинальное решение и 5-ка Вам обеспечена. :)))

Изображение

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 15:59:54
Flasher
преподы вообще всякий бред начали задавать. И некого учить, и некому...

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 16:01:02
XyLigan_xD
SERJ писал(а):
XyLigan_xD писал(а):Нужно чтобы при нажатии 1 кнопки,загорались 2 светодиода.
Когда отпускаешь чтобы тухли.
А при нажатие 2 кнопки,загорались следующие 2 светодиода.
Выкиньте МК и соедините так.
Будет очень оригинальное решение и 5-ка Вам обеспечена. :)))

Изображение


Да мы так тоже предлогали =))
Но просто у нас курсовая начинается,там тоже через МК подключать надо будет всё.
Вот практичку дала))
Чтобы осваивались
Я примерно знаю как,но у меня почему-то не запускается..
Вот и прошу помочь)

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 17:05:41
Mytilus G.

Код: Выделить всё

ser R16
out DDRD, R16
out PORTB, R16
ldi R17, 0b000001
ldi R18, 0b000011
ldi R19, 0b000100
ldi R20, 0b001100
ldi R21, 0b010000
ldi R22, 0b110000

LOOP:
clr R23
in R16, PINB
and R16, R17
breq STEP1
or R23, R18

STEP1:
in R16, PINB
and R16, R19
breq STEP2
or R23, R20

STEP2:
in R16, PINB
and R16, R21
breq STEP3
or R23, R22

STEP3:
out PORTD, R23
rjmp LOOP

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 17:09:59
XyLigan_xD
Так и не понял зачем Вы предыдущее сообщение процитировали?
Считаете, что мы его должны два раза прочитать?

aen





Это в Code Vision Avr?
Это вроде не язык C
просто мы совсем не так всё делали..

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 17:32:57
YS
преподы вообще всякий бред начали задавать.


Да просто это самое элементарное, что вообще можно задать. Видимо, препод уже разочаровался в своих студентах настолько, что дает такие идиотски-простые задания чтобы иметь хоть какую-то надежду на то, что их выполнят.

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 18:01:10
XyLigan_xD
Ну у нас такой преподователь..что ничему не учит толком..
Но требует..а всем лень =/

Если вам это легко,помогите пожалуйста)

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 18:01:38
pyzhman
Да, на CV не похоже.

Re: Помогите составить программу.

Добавлено: Вс мар 25, 2012 19:06:58
XyLigan_xD
Всё,написал программу.
Всё работает.
Если вдруг кому надо,могу выложить

Re: Помогите составить программу.

Добавлено: Пн мар 26, 2012 09:19:07
maXINa
Размести, будет интересно в качестве тренировки.

Re: Помогите составить программу.

Добавлено: Пн мар 26, 2012 12:21:49
XyLigan_xD
while (1)
{
if(PINB.0==1)
{PORTD.0=1; PORTD.1=1;}
else
{PORTD.0=0; PORTD.1=0;}
if(PINB.2==1)
{PORTD.2=1; PORTD.3=1;}
else
{PORTD.2=0; PORTD.3=0;}
if(PINB.4==1) {PORTD.4=1; PORTD.5=1;}
else
{PORTD.4=0; PORTD.5=0;}
};
}

Re: Помогите составить программу.

Добавлено: Пн мар 26, 2012 16:47:37
YS
Я бы написал так:

Код: Выделить всё

while (1)
{
  PORTD=(PINB & 0x01) | ((PINB & 0x01) << 1) | (PINB & 0x04) | ((PINB & 0x04) << 1) | (PINB & 0x10) | ((PINB & 0x10) << 1);
}


:wink: Короче же. :)

Ну что за молодежь пошла... Даже элементарное задание по-человечески решить не могут... :)))

Re: Помогите составить программу.

Добавлено: Пн мар 26, 2012 19:48:37
XyLigan_xD
Ну нам никто не объяснял...
А нам еще и курсовую писать по этому..
Только там программа намного сложнее..

Re: Помогите составить программу.

Добавлено: Вт мар 27, 2012 16:27:05
Meteor
еще и курсовую писать по этому..
Только там программа намного сложнее..

В ней будет целых три светодиода! :)))

Re: Помогите составить программу.

Добавлено: Сб мар 31, 2012 04:07:45
Mytilus G.
YS писал(а):Я бы написал так:

Код: Выделить всё

while (1)
{
  PORTD=(PINB & 0x01) | ((PINB & 0x01) << 1) | (PINB & 0x04) | ((PINB & 0x04) << 1) | (PINB & 0x10) | ((PINB & 0x10) << 1);
}


:wink: Короче же. :)


Еще короче:

Код: Выделить всё

while (1) PORTD = PINB << 1 | PINB;

Re: Помогите составить программу.

Добавлено: Сб мар 31, 2012 16:26:27
YS
Mytilus G., это действительно круто! :shock: Я как-то не подумал...

Re: Помогите составить программу.

Добавлено: Вс апр 01, 2012 15:21:50
Mytilus G.
Я тоже, когда предлагал вариант на асме. :)