کد:
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <i2c.h>
#include <ds1307.h>
#include <alcd.h>
#define b_down PIND.1
#define b_up PIND.2
#define b_set PIND.0
#define b_set_up PIND.4
#define b_set_down PIND.5
#define relay PORTB.7
//____________________________________________________________
void main(){
char lcd_buffer1[16];
//char lcd_buffer2[16];
unsigned char hr,min,sec,status=0,value=0,roz=0;
unsigned char week,year,month,day;
unsigned char en_hr=0,en_min=0,en_sec=0;
unsigned char st_hr=0,st_min=0,st_sec=0;
unsigned char en_year=0,en_month=0,en_day=0;
unsigned char st_year=0,st_month=0,st_day=0;
unsigned int main_year;
DDRB.7=0xFF;
PORTD=0XFF;
i2c_init();
lcd_init(16);
rtc_init(0,0,0);
if(b_set == 0)
{
rtc_set_time(0,0,0);
rtc_set_date(0,8,7,15);
lcd_putsf("Successfully!");
while(1)
{
}
}
delay_ms(20);
rtc_get_time(&en_hr,&en_min,&en_sec);
rtc_get_time(&st_hr,&st_min,&st_sec);
rtc_get_date(&week,&en_day,&en_month,&en_year);
rtc_get_date(&week,&st_day,&st_month,&st_year);
delay_ms(20);
while (1){
while(status == 0)
{
rtc_get_time(&hr,&min,&sec);
rtc_get_date(&week,&day,&month,&year);
main_year = year + 2000;
if(b_up == 0)
{
roz++;
if(roz == 2) roz = 0;
while(b_up == 0);
}
if(roz == 0)
{
if(hr == en_hr & min == en_min & sec == en_sec & year == en_year & month == en_month & day == en_day)
{
value = 1;
relay = 1;
}
if(hr == st_hr & min == st_min & sec == st_sec & year == en_year & month == en_month & day == en_day)
{
value = 0;
relay = 0;
}
}
else
{
if(hr == en_hr & min == en_min & sec == en_sec)
{
value = 1;
relay = 1;
}
if(hr == st_hr & min == st_min & sec == st_sec)
{
value = 0;
relay = 0;
}
}
lcd_clear();
sprintf(lcd_buffer1,"Time~ %02u:%02u:%02u",hr,min,sec);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer1);
sprintf(lcd_buffer1,"%u/%02u/%02u ",main_year,month,day);
lcd_gotoxy(0,1);
lcd_puts(lcd_buffer1);
if(value == 0)
lcd_putsf("Off");
else
lcd_putsf("On");
if(roz != 0)
lcd_putsf(" R");
if(b_set == 0)
{
status++;
if(status == 19) status = 0;
while(b_set == 0);
}
سپاس