Показать сообщение отдельно
Старый 23.06.2012, 20:35   #54 (permalink)
News
Собираю Саб
 
Аватар для News
 
Регистрация: 12.04.2011
Сообщений: 1,611
Записей в дневнике: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 524
По умолчанию

Почьти........
Цитата:
#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++;};
};
}
News вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070