Перейти к содержанию
    

Программа на Си для ATmega 32

Здравствуйте!

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

 

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

 

Спасибо!

Изменено пользователем Teille

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Определитесь для начала с контроллером. В названии ATmega16...в теме ATmega32...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ой,ошиблась, ATmega32 у меня )

исправила)

и еще...может что-то непонятно написала в задании...

 

 

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

Учусь в Финляндии и просто перевела задание, которое дали,не знаю как это в России всё правильно называется)))

Изменено пользователем Teille

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

#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;
}
}

 

 

но не получилось...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

С таким кодом далеко пойдёте.....

Вас там в где учитесь думать учат?

Не замечаете противоречия в коде?

 

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

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

 

Про такие понятия как антидребезг или таймер-счётчик думаю пока что рано вам рассказывать....

Для начала определитесь что у вас вход а что выход (где кнопочки а где светодиоды).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит,будет

DDRB = 0xFF; выход

DDRD = 0x00; вход

 

правильно?

 

а PORTD = 0xFF; или PORTD = 0x00; ?

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

 

Спасибо!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DDRB = 0xFF; выход

DDRD = 0x00; вход

Это правильно.

Выходами можно зажигать лампочки.

К входам подключаются кнопочки.

 

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

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

 

А вообще приведите схему тогда точно будет понятно нужно-ли включать подтяжку для кнопочек и каким уровнем управляются лампочки (которые скорее всего являются светодиодами). :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я сделала уже))

ОФФ

Так Вы и есть то олицетворение того самого "финского студента"?!

Успехов! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...