Помогите подключить кнопку
Добавлено: Вс июл 24, 2016 10:20:30
Приветствую Всех читающих этот текст !!!
Есть небольшая проблема
Проблема состоит в том что написал я код для Атмеги 32 по включению светодиодов,но хотел бы поставить туда кнопку которая по нажатию будет просто зажигать все светодиоды одновременно.
скрин схемы в протэусе прилагаю,а также код С++ написанный в AVR Studio.
Заранее благодарю
P.S.
Я новичок в этом деле,но готов учиться если кто то мне подскажет как ...
Код на С++
СКРИШОТ В ПРОТЭУСЕ
Есть небольшая проблема
Проблема состоит в том что написал я код для Атмеги 32 по включению светодиодов,но хотел бы поставить туда кнопку которая по нажатию будет просто зажигать все светодиоды одновременно.
скрин схемы в протэусе прилагаю,а также код С++ написанный в AVR Studio.
Заранее благодарю
P.S.
Я новичок в этом деле,но готов учиться если кто то мне подскажет как ...
Код на С++
Код: Выделить всё
/*
* AVRGCC1.c
*
* Created: 09.07.2016 2:06:01
* Author: ieroglif
*/
#include <util/delay.h>
#include <avr/io.h>
void DDR(); // ПРОТОТИП ФУНКЦИИ ВКЛЮЧЕНИЯ ВСЕХ ПОРТОВ НА ВЫВОД
void PORT_ALL(); // ПРОТОТИП ФУКЦИИ ВКЛЮЧЕНИЯ И ВЫКЛЮЧЕНИЯ ВСЕХ ПОРТОВ
void PORT_for(); // ПРОТОТИП ФУКЦИИ ЦИКЛА for()
void PORT_ACBD(); // ПРОТОТИП ФУНКЦИИ ПЕРЕКЛЮЧЕНИЯ ПОРТОВ A => C => B => D
int main(void)
{
DDR();
while(1) // БЕСКОНЕЧНЫЙ ЦИКЛ
{
PORT_ALL();
PORT_for();
}
}
void DDR()
{
DDRA = 0b11111111; // ВКЛЮЧЕНИЕ ПОРТА "A" НА ВЫВОД
DDRB = 0b11111111; // ВКЛЮЧЕНИЕ ПОРТА "B" НА ВЫВОД
DDRC = 0b11111111; // ВКЛЮЧЕНИЕ ПОРТА "C" НА ВЫВОД
DDRD = 0b11111111; // ВКЛЮЧЕНИЕ ПОРТА "D" НА ВЫВОД
}
void PORT_ALL()
{
PORTA = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "A"
PORTB = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "B"
PORTC = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "C"
PORTD = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "D"
_delay_ms(500); // ПАУЗА В 500 МИЛЛИСЕКУНД
PORTA = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "A"
PORTB = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "B"
PORTC = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "C"
PORTD = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "D"
}
void PORT_for()
{
int PORT[9] = {0b00000001,0b00000010,0b00000100,0b00001000,0b00010000,0b00100000,0b01000000,0b10000000,0b00000000};
for (int i = 0; i < 9; i++)
{
PORTA = PORT[i];
_delay_ms(135);
}
PORT_ALL();
PORT_ACBD();
for (int i = 0; i < 9; i++)
{
PORTB = PORT[i];
_delay_ms(135);
}
PORT_ALL();
PORT_ACBD();
for (int i = 0; i < 9; i++)
{
PORTC = PORT[i];
_delay_ms(135);
}
PORT_ALL();
PORT_ACBD();
for (int i = 0; i < 9; i++)
{
PORTD = PORT[i];
_delay_ms(135);
}
}
void PORT_ACBD()
{
PORTA = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "A"
_delay_ms(250); // ПАУЗА В 500 МИЛЛИСЕКУНД
PORTA = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "A"
PORTC = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "C"
_delay_ms(250); // ПАУЗА В 500 МИЛЛИСЕКУНД
PORTC = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "C"
PORTB = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "B"
_delay_ms(250); // ПАУЗА В 500 МИЛЛИСЕКУНД
PORTB = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "B"
PORTD = 0b11111111; // ВКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "D"
_delay_ms(250); // ПАУЗА В 500 МИЛЛИСЕКУНД
PORTD = 0b00000000; // ВЫКЛЮЧЕНИЕ ВСЕХ НОЖЕК ПОРТА "D"
}
СКРИШОТ В ПРОТЭУСЕ
