Добавил:
Eatmore
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:отчеты по лабораторным работам / будильник / Alarm5 / SRC / test_led
.c#include "aduc812.h"
#include "led.h"
#include "max.h"
#include "rtc.h"
#include "i2c.h"
#include "async.h"
#include "keyboard.h"
#include "lcd.h"
#include "tim.h"
#include "sound.h"
#define ERR_OUT_OF_RANGE "\n\rnumber not 0-255\n\r\0"
#define ERR_INVALID_CHAR "\n\rinvalid operator\n\r\0"
#define ERR_CLEAR_STOPWATCH "\n\rclear stopwatch\n\r\0"
unsigned xdata char word[16] = {'E','n','t','e','r',' ','(','h','h',':','m','m',':','s','s',')'};
int i1;
void WriteEnter()
{
CLEAR();
for (i1 = 1; i1 <= 16; i1++)
{
GOTOXY(i1,1);
PRINTCHAR(word[i1-1]);
}
}
void EnterTime(unsigned char mode)
{
unsigned char c;
int i = 0, d = 0, hms = 0, hh = 0, mm = 0, ss = 0;
unsigned char allow_exit = 0;
while(1)
if (readKeyBuffer(&c))
{
switch(i)
{
case 0:
if(c>=0x30 && c<0x3A)
{
d=(c-0x30)*10;
i=1;
GOTOXY(3*hms + 1, 2);
PRINTCHAR(c);
}
else if (c == '#') return;
break;
case 1:
if(c>=0x30 && c<0x3A)
{
d+=(c-0x30);
GOTOXY(3*hms + 2, 2);
PRINTCHAR(c);
i=0;
switch(hms)
{
case 0:
if (d >= 0 && d <= 23)
{
hh = d;
hms = 1;
GOTOXY(3, 2);
PRINTCHAR(':');
}
else
{
GOTOXY(1,2); PRINTCHAR(' '); GOTOXY(2,2); PRINTCHAR(' ');
}
break;
case 1:
if (d >= 0 && d <= 59)
{
mm = d;
hms = 2;
GOTOXY(6, 2);
PRINTCHAR(':');
}
else
{
GOTOXY(4,2); PRINTCHAR(' '); GOTOXY(5,2); PRINTCHAR(' ');
}
break;
case 2:
if (d >= 0 && d <= 59)
{
ss = d;
hms = 0;
allow_exit = 1;
}
else
{
GOTOXY(7,2); PRINTCHAR(' '); GOTOXY(8,2); PRINTCHAR(' ');
}
break;
}
d = 0;
}
else if (c == '#') return;
break;
}
if (allow_exit)
{
if (mode == 0)
{
time.hour = hh;
time.min = mm;
time.sec = ss;
if (set_time(&time))
{
//type("test_time(): error!\r\n");
return;
}
//else
//printf_fast("New time set!\r\n");
}
else
{
alarm_time.hour = hh;
alarm_time.min = mm;
alarm_time.sec = ss;
//printf_fast("New alarm time set!\r\n");
}
break;
}
}
}
void InitTimes()
{
time.hour = 0;
time.min = 0;
time.sec = 1;
if (set_time(&time))
return;
alarm_time.hour = 0;
alarm_time.min = 0;
alarm_time.sec = 0;
}
void startStop()
{
unsigned char symbol;
int i = 0;
while(1)
{
if (readKeyBuffer(&symbol))
{
if (IsFinish)
{
ET1 = 0;
snd_shut_up;
init_timer2(S9600);
IsFinish = !IsFinish;
continue;
}
switch (symbol)
{
case 'A':
ET1 = 0;
WriteEnter();
EnterTime(0);
CLEAR();
ET1 = 1;
break;
case 'B':
ET1 = 0;
WriteEnter();
EnterTime(1);
CLEAR();
ET1 = 1;
break;
}
}
}
}
void main( void )
{
InitTimes();
INITLCD();
initKeyboard();
init_timer2(S9600);
startStop();
}
Соседние файлы в папке SRC