реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Программа на Си для ATmega 32, в AvrStudio4
Teille
сообщение Apr 13 2010, 15:55
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 13-04-10
Пользователь №: 56 620



Здравствуйте!
Я только начинаю и не могу разобраться...

Задача такая: написать программу для Атмеги32 в AvrStudio4 на языке Си, чтобы переключатель s2 управлял лампочками LED0 и LED2, s3 управлял LED1 и LED3, s4 --LED2 и LED4,s5 -- LED3 и LED5. Причем тот же переключатель (например s2) мог и выключать и включать лампочки (с использованием оператора XOR)

Спасибо!

Сообщение отредактировал Teille - Apr 13 2010, 16:47
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Apr 13 2010, 16:06
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Определитесь для начала с контроллером. В названии ATmega16...в теме ATmega32...
Go to the top of the page
 
+Quote Post
Teille
сообщение Apr 13 2010, 16:44
Сообщение #3





Группа: Участник
Сообщений: 5
Регистрация: 13-04-10
Пользователь №: 56 620



ой,ошиблась, ATmega32 у меня )
исправила)
и еще...может что-то непонятно написала в задании...


На плате LED Board 8 лампочек, обозначенные буквой L, начинаются от L0 до L7.Эта плата подключена к порту "B". К порту "D" подключена плата Button Board, на которой есть 4 кнопки, они называются S0, S1, S2 и S3.
Учусь в Финляндии и просто перевела задание, которое дали,не знаю как это в России всё правильно называется)))

Сообщение отредактировал Teille - Apr 13 2010, 17:20
Go to the top of the page
 
+Quote Post
Teille
сообщение Apr 15 2010, 18:06
Сообщение #4





Группа: Участник
Сообщений: 5
Регистрация: 13-04-10
Пользователь №: 56 620



Делала так(сначала для двух кнопок):

CODE

#include <avr/io.h>
#define S2 bit_is_clear(PIND, 2) // если S2 нажимаем
#define S3 bit_is_clear(PIND, 3) // если S3 нажимаем
int main(void)
{
DDRB = 0x00; // B-порт output
DDRD = 0x00; // D-порт input
PORTD = 0x00;
while(1)
{
if(S2) // если S2 нажали
PORTB^= 0b0000101;
else
if(S3) // если S3 нажали
PORTB^= 0b00001010;
else // ничего не нажимаем
PORTB = 0x00;
}
}



но не получилось...
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Apr 15 2010, 18:27
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Код
DDRB = 0x00; // B-порт output
DDRD = 0x00; // D-порт input


С таким кодом далеко пойдёте.....
Вас там в где учитесь думать учат?
Не замечаете противоречия в коде?

Для любой atmega DDRx - регистр направления, бит установленный в 1 обозначает выход, бит установленный в 0 - обозначает вход.
PORTx для выходов позволяет установить состояние выхода, для входов - управляет подтяжкой (0 - нет подтяжки к VCC, 1 - есть подтяжка входа к VCC).

Про такие понятия как антидребезг или таймер-счётчик думаю пока что рано вам рассказывать....
Для начала определитесь что у вас вход а что выход (где кнопочки а где светодиоды).
Go to the top of the page
 
+Quote Post
Teille
сообщение Apr 15 2010, 19:39
Сообщение #6





Группа: Участник
Сообщений: 5
Регистрация: 13-04-10
Пользователь №: 56 620



Значит,будет
DDRB = 0xFF; выход
DDRD = 0x00; вход

правильно?

а PORTD = 0xFF; или PORTD = 0x00; ?
Что значит управиляет подтяжкой?

Спасибо!!!!
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Apr 15 2010, 20:03
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата
DDRB = 0xFF; выход
DDRD = 0x00; вход

Это правильно.
Выходами можно зажигать лампочки.
К входам подключаются кнопочки.

Цитата
Что значит управиляет подтяжкой?

Pull-up или подтягивающий резистор. В атмеге это резистор который подключается между пином и VCC (если пин - вход (DDRx.i = 0)) при условии что PORTx.i=1. Позволяет удерживать потенциал входа в состоянии логической 1 если кнопка не нажата.

А вообще приведите схему тогда точно будет понятно нужно-ли включать подтяжку для кнопочек и каким уровнем управляются лампочки (которые скорее всего являются светодиодами). smile.gif
Go to the top of the page
 
+Quote Post
Teille
сообщение Apr 16 2010, 15:41
Сообщение #8





Группа: Участник
Сообщений: 5
Регистрация: 13-04-10
Пользователь №: 56 620



спасибо всем))

Я сделала уже,на паре учитель помог))
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 16 2010, 15:55
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Teille @ Apr 16 2010, 18:56) *
Я сделала уже))

ОФФ
Так Вы и есть то олицетворение того самого "финского студента"?!
Успехов! smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01425 секунд с 7
ELECTRONIX ©2004-2016