- Регистрация
- 12 Апр 2011
- Сообщения
- 1,611
- Реакции
- 14
- Баллы
- 0
На сегодня пожалуй все...
Дада я знаю что код можно уменьшить, но завтро...#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;}
};
}
