• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Освоение МК ATmega16

  • Автор темы Автор темы News
  • Дата начала Дата начала
На сегодня пожалуй все...
#include <mega16.h>
//Объявляем глобальные переменные. Переменную таймера, секундную, минутную и часовую переменную - соответственно.
char Timer;
char Second;
char Minute;
char Hour;
//Переменая управления Сеундным Светодиодом.
char SecLed;

void main(void)
{
DDRA=0xFF;
DDRC=0xFF;

while(1)
{
//Запускаем таймер с коэф. делени 1024. При кварце в 16Мгц он будет переполнятся 61Раз (Таймер на 8 Бит).
TCCR0 = 0b00000101;
//Когда таймер переполнится, будет установлен 0 бит регистра TIFR и цыкл будет покинут.
while (!(TIFR&0x01));
//Так как таймер переполнился, прибавим к переменной Timer - 1.
Timer++;
//И обнулим бит переполнения таймера путем перезаписи.
TIFR |=1<<0;
//Когда в переменной Timer будет значение 61, прибавим к переменной Second 1 (В секунду таймер переполняется 61 раз!).
//И обнулим переменную Timer для дальнейшей работы.
if (Timer==61) {Second++; Timer=0; PORTA.0=1;};
//При достижении переменной Second 60 Секунд, к переменной Minute будет приплюсовываться 1.
//Переменная Second - очистица.
if (Second==60) {Minute++; Second=0;};
//При достижении переменной Minute 60 Минут, к переменной Hour будет приплюсовываться 1.
//Переменная Minute - очистица.
if (Minute==60) {Hour++; Minute=0;};
//Переменная Hour обнуляется по достижению 24 Часов.
if (Hour==24) {Hour=0;};
if (Timer==0) {SecLed++;};
if (SecLed==2) {PORTA.0=0; SecLed=0;};
if (Hour==20, Hour==21, Hour==22, Hour==23) {PORTA.1=1;}
else {PORTA.1=0;}
//Извеняюсь, другого выхода небыло...
if (Hour==10) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==11) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==12) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==13) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==14) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==15) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==16) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==17) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==18) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
if (Hour==19) {PORTA.2=1; PORTA.1=0;}
else {PORTA.2=0;}
//Небыло...
Hour=19;
if (Hour==0) {PORTA.1=0; PORTA.2=0; PORTC=64;}
else {PORTA.3=0; PORTC=0b01111111;}
//И тут небыло :)
if (Hour==10) {PORTC=64;}
else {PORTC=0b01111111;}
if (Hour==11) {PORTC=0b11111001;}
else {PORTC=0b01111111;}
if (Hour==12) {PORTC=0b00100100;}
else {PORTC=0b01111111;}
if (Hour==13) {PORTC=0b00110000;}
else {PORTC=0b01111111;}
if (Hour==14) {PORTC=0b00011001;}
else {PORTC=0b01111111;}
if (Hour==15) {PORTC=0b00010010;}
else {PORTC=0b01111111;}
if (Hour==16) {PORTC=0b00000010;}
else {PORTC=0b01111111;}
if (Hour==17) {PORTC=0b01111000;}
else {PORTC=0b01111111;}
if (Hour==18) {PORTC=0b00000000;}
else {PORTC=0b01111111;}
if (Hour==19) {PORTC=0b00010000;}
else {PORTC=0b01111111;}
};
}
Дада я знаю что код можно уменьшить, но завтро...
 

Вложения

  • Часы.webp
    Часы.webp
    105.6 KB · Просмотры: 105
если честно, твой код вряд ли кто-нибудь внимательно просматривает :D
а то что у тебя заработало в эмуляторе хороший признак)))
будешь собирать эти часы? или будешь расширять функциал))))
 
если честно, твой код вряд ли кто-нибудь внимательно просматривает :D
а то что у тебя заработало в эмуляторе хороший признак)))
будешь собирать эти часы? или будешь расширять функциал))))
Собирать буду :)
Давно часы себе мечтал. :))
 
#include <mega16.h>
//Объявляем глобальные переменные. Переменную таймера, секундную, минутную и часовую переменную - соответственно.
char Timer;
char Second;
char Minute;
char Hour;
//Переменая управления Сеундным Светодиодом.
char SecLed;
void main(void)
{
DDRA=0xFF;
DDRC=0xFF;
while(1)
{
//Запускаем таймер с коэф. делени 1024. При кварце в 16Мгц он будет переполнятся 61Раз (Таймер на 8 Бит).
TCCR0 = 0b00000101;
//Когда таймер переполнится, будет установлен 0 бит регистра TIFR и цыкл будет покинут.
while (!(TIFR&0x01));
//Так как таймер переполнился, прибавим к переменной Timer - 1.
Timer++;
//И обнулим бит переполнения таймера путем перезаписи.
TIFR |=1<<0;
//Когда в переменной Timer будет значение 61, прибавим к переменной Second 1 (В секунду таймер переполняется 61 раз!).
//И обнулим переменную Timer для дальнейшей работы.
if (Timer==61) {Second++; Timer=0; PORTA.0=1;};
//При достижении переменной Second 60 Секунд, к переменной Minute будет приплюсовываться 1.
//Переменная Second - очистица.
if (Second==60) {Minute++; Second=0;};
//При достижении переменной Minute 60 Минут, к переменной Hour будет приплюсовываться 1.
//Переменная Minute - очистица.
if (Minute==60) {Hour++; Minute=0;};
//Переменная Hour обнуляется по достижению 24 Часов.
if (Hour==24) {Hour=0;};
if (Timer==0) {SecLed++;};
if (SecLed==2) {PORTA.0=0; SecLed=0;};

if (Hour==0) {PORTC=0b01111111; PORTC=0b01000000; PORTA.2=0; PORTA.1=0;};
if (Hour==1) {PORTC=0b01111111; PORTC=0b11111001; PORTA.2=0; PORTA.1=0;};
if (Hour==2) {PORTC=0b01111111; PORTC=0b00100100; PORTA.2=0; PORTA.1=0;};
if (Hour==3) {PORTC=0b01111111; PORTC=0b00110000; PORTA.2=0; PORTA.1=0;};
if (Hour==4) {PORTC=0b01111111; PORTC=0b00011001; PORTA.2=0; PORTA.1=0;};
if (Hour==5) {PORTC=0b01111111; PORTC=0b00010010; PORTA.2=0; PORTA.1=0;};
if (Hour==6) {PORTC=0b01111111; PORTC=0b00000010; PORTA.2=0; PORTA.1=0;};
if (Hour==7) {PORTC=0b01111111; PORTC=0b01111000; PORTA.2=0; PORTA.1=0;};
if (Hour==8) {PORTC=0b01111111; PORTC=0b00000000; PORTA.2=0; PORTA.1=0;};
if (Hour==9) {PORTC=0b01111111; PORTC=0b00010000; PORTA.2=0; PORTA.1=0;};
if (Hour==10) {PORTC=0b01111111; PORTC=0b01000000; PORTA.2=1; PORTA.1=0;};
if (Hour==11) {PORTC=0b01111111; PORTC=0b11111001; PORTA.2=1; PORTA.1=0;};
if (Hour==12) {PORTC=0b01111111; PORTC=0b00100100; PORTA.2=1; PORTA.1=0;};
if (Hour==13) {PORTC=0b01111111; PORTC=0b00110000; PORTA.2=1; PORTA.1=0;};
if (Hour==14) {PORTC=0b01111111; PORTC=0b00011001; PORTA.2=1; PORTA.1=0;};
if (Hour==15) {PORTC=0b01111111; PORTC=0b00010010; PORTA.2=1; PORTA.1=0;};
if (Hour==16) {PORTC=0b01111111; PORTC=0b00000010; PORTA.2=1; PORTA.1=0;};
if (Hour==17) {PORTC=0b01111111; PORTC=0b01111000; PORTA.2=1; PORTA.1=0;};
if (Hour==18) {PORTC=0b01111111; PORTC=0b00000000; PORTA.2=1; PORTA.1=0;};
if (Hour==19) {PORTC=0b01111111; PORTC=0b00010000; PORTA.2=1; PORTA.1=0;};
if (Hour==20) {PORTC=0b01111111; PORTC=0b01000000; PORTA.2=0; PORTA.1=1;};
if (Hour==21) {PORTC=0b01111111; PORTC=0b11111001; PORTA.2=0; PORTA.1=1;};
if (Hour==22) {PORTC=0b01111111; PORTC=0b00100100; PORTA.2=0; PORTA.1=1;};
if (Hour==23) {PORTC=0b01111111; PORTC=0b00110000; PORTA.2=0; PORTA.1=1;};
};
}
Устранил все баги и глюки, светодиоды теперь не мигают как с предыдущим кодом.
Осталось минуты сделать.
 
if (Hour==0) {PORTC=0b01111111; PORTC=0b01000000; PORTA.2=0; PORTA.1=0;};
if (Hour==1) {PORTC=0b01111111; PORTC=0b11111001; PORTA.2=0; PORTA.1=0;};
if (Hour==2) {PORTC=0b01111111; PORTC=0b00100100; PORTA.2=0; PORTA.1=0;};
if (Hour==3) {PORTC=0b01111111; PORTC=0b00110000; PORTA.2=0; PORTA.1=0;};
if (Hour==4) {PORTC=0b01111111; PORTC=0b00011001; PORTA.2=0; PORTA.1=0;};
if (Hour==5) {PORTC=0b01111111; PORTC=0b00010010; PORTA.2=0; PORTA.1=0;};
if (Hour==6) {PORTC=0b01111111; PORTC=0b00000010; PORTA.2=0; PORTA.1=0;};
if (Hour==7) {PORTC=0b01111111; PORTC=0b01111000; PORTA.2=0; PORTA.1=0;};
if (Hour==8) {PORTC=0b01111111; PORTC=0b00000000; PORTA.2=0; PORTA.1=0;};
if (Hour==9) {PORTC=0b01111111; PORTC=0b00010000; PORTA.2=0; PORTA.1=0;};
if (Hour==10) {PORTC=0b01111111; PORTC=0b01000000; PORTA.2=1; PORTA.1=0;};
if (Hour==11) {PORTC=0b01111111; PORTC=0b11111001; PORTA.2=1; PORTA.1=0;};
if (Hour==12) {PORTC=0b01111111; PORTC=0b00100100; PORTA.2=1; PORTA.1=0;};
if (Hour==13) {PORTC=0b01111111; PORTC=0b00110000; PORTA.2=1; PORTA.1=0;};
if (Hour==14) {PORTC=0b01111111; PORTC=0b00011001; PORTA.2=1; PORTA.1=0;};
if (Hour==15) {PORTC=0b01111111; PORTC=0b00010010; PORTA.2=1; PORTA.1=0;};
if (Hour==16) {PORTC=0b01111111; PORTC=0b00000010; PORTA.2=1; PORTA.1=0;};
if (Hour==17) {PORTC=0b01111111; PORTC=0b01111000; PORTA.2=1; PORTA.1=0;};
if (Hour==18) {PORTC=0b01111111; PORTC=0b00000000; PORTA.2=1; PORTA.1=0;};
if (Hour==19) {PORTC=0b01111111; PORTC=0b00010000; PORTA.2=1; PORTA.1=0;};
if (Hour==20) {PORTC=0b01111111; PORTC=0b01000000; PORTA.2=0; PORTA.1=1;};
if (Hour==21) {PORTC=0b01111111; PORTC=0b11111001; PORTA.2=0; PORTA.1=1;};
if (Hour==22) {PORTC=0b01111111; PORTC=0b00100100; PORTA.2=0; PORTA.1=1;};
if (Hour==23) {PORTC=0b01111111; PORTC=0b00110000; PORTA.2=0; PORTA.1=1;};
вот этот кусок надо сократить по-любому)))
если будешь делать минуты таким образом, код может занять всю память)))
 
Минуты уже сделал, да и часы уже готовы практически.
Чтоб сократить код разделил минуты на десятки и единицы.
Осталось узнать как ноги входами делать.
вва.webp
Как видно из скриншота - погрешность этих часов 4 сек на 3часа, что несложно исправить програмно.
Так-же видно что я использую экранную клавиатуру, что довольно сильно бесит.
Файлы проэкта:
Посмотреть вложение Часы.zip
 
так не пользуйся ей
Боюсь не получится. :tehnari_ru_093:
Само собой :)
Врят-ли. Для этого АЦП нужен :(
можно лампу настроения добавить!
Можно:D Если выводов хватит..
 
Почьти........
#include <mega16.h>
//Объявляем глобальные переменные. Переменную таймера, секундную, минутную и часовую переменную - соответственно.
char Timer;
char Second;
char Minute1;
char Minute2;
char Timemin;
char Hour1;
char Hour2;
char Hournil;
//Переменая управления Сеундным Светодиодом.
char SecLed;

void main(void)
{
DDRA=0b00000111;
DDRC=0xFF;
DDRD=0xFF;
DDRB=0xFF;

while(1)
{
//Запускаем таймер с коэф. делени 1024. При кварце в 16Мгц он будет переполнятся 61Раз (Таймер на 8 Бит).
TCCR0 = 0b00000101;
//Когда таймер переполнится, будет установлен 0 бит регистра TIFR и цыкл будет покинут.
while (!(TIFR&0x01));
//Так как таймер переполнился, прибавим к переменной Timer - 1.
Timer++;
//И обнулим бит переполнения таймера путем перезаписи.
TIFR |=1<<0;
//Когда в переменной Timer будет значение 61, прибавим к переменной Second 1 (В секунду таймер переполняется 61 раз!).
//И обнулим переменную Timer для дальнейшей работы.
if (Timer==61) {Second++; Timer=0; PORTA.0=1;};
//При достижении переменной Second 60 Секунд, к переменной Minute будет приплюсовываться 1.
//Переменная Second - очистица.
if (Second==60) {Minute1++; Second=0;};
if (Minute1==10) {Minute2++; Minute1=0;};
//При достижении переменной Minute 60 Минут, к переменной Hour будет приплюсовываться 1.
//Переменная Minute - очистица.
if (Minute2==6) {Hour1++; Minute1=0; Minute2=0;};
if (Hour1==10) {Hour2++; Hour1=0;};
if (Hour2==2) {Hournil=Hour1+Hour2;};
//Переменная Hour обнуляется по достижению 24 Часов.
if (Hournil==6) {Hour1=0; Hour2=0; Hournil=0;};
if (Timer==0) {SecLed++;};
if (SecLed==2) {PORTA.0=0; SecLed=0;};

if (Hour2==0) {PORTA.2=0; PORTA.1=0;};
if (Hour2==1) {PORTA.2=1; PORTA.1=0;};
if (Hour2==2) {PORTA.1=1; PORTA.2=0;};
if (Hour1==0) {PORTC=0b01111111; PORTC=0b01000000;};
if (Hour1==1) {PORTC=0b01111111; PORTC=0b11111001;};
if (Hour1==2) {PORTC=0b01111111; PORTC=0b00100100;};
if (Hour1==3) {PORTC=0b01111111; PORTC=0b00110000;};
if (Hour1==4) {PORTC=0b01111111; PORTC=0b00011001;};
if (Hour1==5) {PORTC=0b01111111; PORTC=0b00010010;};
if (Hour1==6) {PORTC=0b01111111; PORTC=0b00000010;};
if (Hour1==7) {PORTC=0b01111111; PORTC=0b01111000;};
if (Hour1==8) {PORTC=0b01111111; PORTC=0b00000000;};
if (Hour1==9) {PORTC=0b01111111; PORTC=0b00010000;};


switch (Minute2)
{
case 0:
PORTD=0b01111111; PORTD=0b01000000;
break;
case 1:
PORTD=0b01111111; PORTD=0b11111001;
break;
case 2:
PORTD=0b01111111; PORTD=0b00100100;
break;
case 3:
PORTD=0b01111111; PORTD=0b00110000;
break;
case 4:
PORTD=0b01111111; PORTD=0b00011001;
break;
case 5:
PORTD=0b01111111; PORTD=0b00010010;
break;
};
switch (Minute1)
{
case 0:
PORTB=0b01111111; PORTB=0b01000000;
break;
case 1:
PORTB=0b01111111; PORTB=0b11111001;
break;
case 2:
PORTB=0b01111111; PORTB=0b00100100;
break;
case 3:
PORTB=0b01111111; PORTB=0b00110000;
break;
case 4:
PORTB=0b01111111; PORTB=0b00011001;
break;
case 5:
PORTB=0b01111111; PORTB=0b00010010;
break;
case 6:
PORTB=0b01111111; PORTB=0b00000010;
break;
case 7:
PORTB=0b01111111; PORTB=0b01111000;
break;
case 8:
PORTB=0b01111111; PORTB=0b00000000;
break;
case 9:
PORTB=0b01111111; PORTB=0b00010000;
break;
};
if (PINA.3==1) {Timemin++;};
if (Timemin==12) {Timemin=0; Minute1++;};
};
}
 
ВКЛЮЧЕНИЕ DS18B20
DS18B20 может быть включен внешней поставкой на булавке VDD, или это может работать в “энергии паразита”
способ, который позволяет DS18B20 функционировать без местной внешней поставки. Энергия паразита - очень
полезный для заявлений, которые требуют отдаленного температурного ощущения или это - очень вынужденное место. Иллюстрация
1 шоу схема контроля энергии паразита DS18B20’s, которая "украла" энергию от автобуса с 1 проводом через
способная к глубокой вытяжке булавка, когда автобус высок. Украденные власти платы DS18B20, в то время как автобус высок, и некоторые
из платы хранится на конденсаторе энергии паразита (CPP), чтобы обеспечить энергию, когда автобус низок.
Когда DS18B20 используется в способе энергии паразита, булавка VDD должна быть связана, чтобы основать.
И попробуй сдесь, разберись, что имелось в виду.
 
Данный датчик можно подключить по 2х проводной или 3х проводной схеме. И там описывается особенность подключения по 2х проводной схеме.
Вот и все :)
 
Данный датчик можно подключить по 2х проводной или 3х проводной схеме. И там описывается особенность подключения по 2х проводной схеме.
Вот и все :)
Это я понял. :)
Энергия паразита немного пугает :))
 
ну это наверное промт так перевел, в следующий раз выбирай тематику техническую :)
 
#include <mega16.h>
//Объявляем глобальные переменные. Переменную таймера, секундную, минутную и часовую переменную - соответственно.
char Timer;
char Second;
char Minute1;
char Minute2;
char Delay;
char Hour1;
char Hour2;
char Hournil;
char Vibor;
char SecLed;
char Delay2;
char AlarmMinute1;
char AlarmMinute2;
char AlarmHour1;
char AlarmHour2;
char AlarmPreSetON;
char Vibor2;
char Delay3;
void main(void)
{
DDRA=0b00000111;
DDRC=0xFF;
DDRD=0xFF;
DDRB=0xFF;

while(1)
{
//Запускаем таймер с коэф. делени 1024. При кварце в 16Мгц он будет переполнятся 61Раз (Таймер на 8 Бит).
TCCR0 = 0b00000101;
//Когда таймер переполнится, будет установлен 0 бит регистра TIFR и цыкл будет покинут.
while (!(TIFR&0x01));
//Так как таймер переполнился, прибавим к переменной Timer - 1.
Timer++;
//И обнулим бит переполнения таймера путем перезаписи.
TIFR |=1<<0;
//Когда в переменной Timer будет значение 61, прибавим к переменной Second 1 (В секунду таймер переполняется 61 раз!).
//И обнулим переменную Timer для дальнейшей работы.
if (Timer==61) {Second++; Timer=0; PORTA.0=1;};
//При достижении переменной Second 60 Секунд, к переменной Minute будет приплюсовываться 1.
//Переменная Second - очистица.
if (Second==60) {Minute1++; Second=0;};
if (Minute1==10) {Minute2++; Minute1=0;};
//При достижении переменной Minute 60 Минут, к переменной Hour будет приплюсовываться 1.
//Переменная Minute - очистица.
if (Minute2==6) {Hour1++; Minute1=0; Minute2=0;};
if (Hour1==10) {Hour2++; Hour1=0;};
if (Hour2==2) {Hournil=Hour1+Hour2;};
//Переменная Hour обнуляется по достижению 24 Часов.
if (Hournil==6) {Hour1=0; Hour2=0; Hournil=0;};
if (Timer==0) {SecLed++;};
if (SecLed==2) {PORTA.0=0; SecLed=0;};

if (PINA.5==1) {AlarmPreSetON=1;}
if (AlarmPreSetON==0)
{
if (Hour2==0) {PORTA.2=0; PORTA.1=0;};
if (Hour2==1) {PORTA.2=1; PORTA.1=0;};
if (Hour2==2) {PORTA.1=1; PORTA.2=0;};
if (Hour1==0) {PORTC=0b01111111; PORTC=0b01000000;};
if (Hour1==1) {PORTC=0b01111111; PORTC=0b11111001;};
if (Hour1==2) {PORTC=0b01111111; PORTC=0b00100100;};
if (Hour1==3) {PORTC=0b01111111; PORTC=0b00110000;};
if (Hour1==4) {PORTC=0b01111111; PORTC=0b00011001;};
if (Hour1==5) {PORTC=0b01111111; PORTC=0b00010010;};
if (Hour1==6) {PORTC=0b01111111; PORTC=0b00000010;};
if (Hour1==7) {PORTC=0b01111111; PORTC=0b01111000;};
if (Hour1==8) {PORTC=0b01111111; PORTC=0b00000000;};
if (Hour1==9) {PORTC=0b01111111; PORTC=0b00010000;};
switch (Minute2)
{
case 0:
PORTD=0b01111111; PORTD=0b01000000;
break;
case 1:
PORTD=0b01111111; PORTD=0b11111001;
break;
case 2:
PORTD=0b01111111; PORTD=0b00100100;
break;
case 3:
PORTD=0b01111111; PORTD=0b00110000;
break;
case 4:
PORTD=0b01111111; PORTD=0b00011001;
break;
case 5:
PORTD=0b01111111; PORTD=0b00010010;
break;
};
switch (Minute1)
{
case 0:
PORTB=0b01111111; PORTB=0b01000000;
break;
case 1:
PORTB=0b01111111; PORTB=0b11111001;
break;
case 2:
PORTB=0b01111111; PORTB=0b00100100;
break;
case 3:
PORTB=0b01111111; PORTB=0b00110000;
break;
case 4:
PORTB=0b01111111; PORTB=0b00011001;
break;
case 5:
PORTB=0b01111111; PORTB=0b00010010;
break;
case 6:
PORTB=0b01111111; PORTB=0b00000010;
break;
case 7:
PORTB=0b01111111; PORTB=0b01111000;
break;
case 8:
PORTB=0b01111111; PORTB=0b00000000;
break;
case 9:
PORTB=0b01111111; PORTB=0b00010000;
break;
};
if (PINA.3==1) {Delay2++;};
if (Delay2==11) {Delay2=0; Vibor++;};
switch (Vibor)
{
case 0:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Minute1++;};
break;
case 1:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Minute2++;};
break;
case 2:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Hour1++;};
break;
case 3:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; Hour2++;};
if (Hour2==3) {Hour2=0;};
break;
case 4:
Vibor=0;
break;
};
};
if (AlarmPreSetON==1)
{
PORTB=0b01000000;
PORTD=0b01000000;
PORTC=0b01000000;
PORTA.1=0;
PORTA.2=0;

if (PINA.3==1) {Delay3++;};
if (Delay3==11) {Delay3=0; Vibor2++;};
switch (Vibor2)
{
case 0:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmMinute1++;};
break;
case 1:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmMinute2++;};
break;
case 2:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmHour1++;};
break;
case 3:
if (PINA.4==1) {Delay++;};
if (Delay==11) {Delay=0; AlarmHour2++;};
if (Hour2==3) {Hour2=0;};
break;
case 4:
Vibor2=0;
break;
};
};
};
}
Запарился чюток, доделываю будильник.
 
Назад
Сверху