Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
DmKorneev
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 10
1

Atmega 8A

19.11.2018, 17:59. Просмотров 392. Ответов 21
Метки нет (Все метки)

Собственно есть микроконтроллер Atmega 8A. Нужно нажатием тактовой кнопочки включить устройство, подать лог. и еще раз нажав на кнопку выключить. И так много раз.

Мной написанный код только включает, но не выключает . То есть единичка на выходе появляется но при нажатии на кнопку еще раз 0 не появляется.

Проверял в протеусе.

Один раз код написал он работал, но к сожалению исходники потерял. Старый код на устройстве работает. Понадобилось доработать, изменить.

код

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <mega8.h>
#include <delay.h>
#define XTAL 8000000 
unsigned char i=0; // вводим переменную для счета
 
void main(void)
{
 
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=0 Bit0=0 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
 
// Port C initialization
// Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
 
// Port D initialization
// Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
 
while (1)
      {
      delay_ms(30); // пауза для проверки дребезга
      if (PIND.3 == 0 && i == 0) 
      {
       i=i+1;
       PORTB |= (1<<0); //Выставляем 1 в 0 порте.
       delay_ms(1000);
       PORTB |= (1<<1); //Выставляем 1 в 1 порте
               
       while(PIND.3 == 1) { delay_ms(10);}//ждем отпускания кнопки 
      } else
      
       
       
           PORTB |= (0<<0);
           PORTB |= (0<<1);  
           while(PIND.3 == 0){ delay_ms(10);}//ждем отпускания кнопки 
                 
}
}
PD3 - порт сконф. на вход. резистор внеший подтягивающий в реальной схеме есть.
PB0 и PB1 - Два порта - которые через схему управления, в данном случае полевой транзистор включат одно реле, потом втрое
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2018, 17:59
Ответы с готовыми решениями:

Макетная плата для Atmega 32?atmega 8
Здравствуйте !Уважаемые мастера нужна помощь (а именно нужна схема макетной платы для меги 32 и...

atmega
Здравствуйте. Использую USORT для общения 2 мег. Нужно объеденить RX и TX в одну линию....

Atmega 16
Ребят, только начинаю работать в ассемблере, очень тяжело дается(( время поджимает, поэтому...

Atmega 16 и C
Вопрос: есть ли транслятор с Си на асемблер для этого контроллера? Это может ускорить процесс...

Прошивка ATMEGA 88
здравствуйте уважаемые форумчане. столкнулся со следующей проблемой. не могу прошить МК ATMEGA 88....

21
DmKorneev
0 / 0 / 0
Регистрация: 19.11.2018
Сообщений: 10
23.11.2018, 13:12  [ТС] 21
Цитата Сообщение от pyzhman Посмотреть сообщение
Меня больше интересует отчего у вас не работает
Проверил. Не думал, что можно обращаться к любому порту и его проверять.
Спасибо. Работает. Попробую код переведу на Атмел студию
0
pyzhman
785 / 480 / 65
Регистрация: 15.05.2012
Сообщений: 2,718
23.11.2018, 14:01 22
Пожалуйста.

Добавлено через 44 минуты
Цитата Сообщение от DmKorneev Посмотреть сообщение
переведу на Атмел студию
При создании проекта выберите С++, т.к. там есть возможность использования битовых переменных.
0
23.11.2018, 14:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2018, 14:01

atmega на 3.3в и частота
смотрю документацию - везде указано что при низком напряжении рабочая частота падает и ничего не...

atmega spi
Итак, есть проект на Attiny2313 http://we.iosyitistromyss.ru/Lifelover/tcp-http-i-tinka.html. Я...

Осциллограф на Atmega 8
Все доброго дня. Решил я по этой статье собрать осциллограф. Мегу взял в дип корпусе. Вытравил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru