Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Автопереход на летнее и зимнее время


Автопереход на летнее и зимнее время

Сообщений 1 страница 3 из 3

1

Может кому понадобится

Код

'===============================================================================
'--  Подпрограмма для опроса Ds3231, почему так, потому, что так БЫСТРЕЕ !!!  --
'===============================================================================
  Опрос_ds3231:
'-------------------------------------------------------------------------------
    I2cstart       ' Подготовка к работе шины I2c
    I2cwbyte Запись_ds3231       ' Команда начало записи
    I2cwbyte Const_секунды       ' Команда начального адреса куда пишем - 0
    I2cstart       ' Подготовка к работа шины I2c
    I2cwbyte Чтение_ds3231       ' Адресное обращение к Ds3231
    I2crbyte Секунды , Nack       ' Читаем значение секунд (двоично-десятичное форматирование)
    I2cstop       ' Освобождаем шину I2c

    Секунды = Makedec(секунды)       ' Секунды

    If Секунды = 0 Then
        I2cstart       ' Подготовка к работе шины I2c
        I2cwbyte Запись_ds3231       ' Команда начало записи
        I2cwbyte Const_минуты       ' Команда начального адреса куда пишем - 0
        I2cstart       ' Подготовка к работа шины I2c
        I2cwbyte Чтение_ds3231       ' Адресное обращение к Ds3231
        I2crbyte Минуты , Nack       ' Читаем значение секунд (двоично-десятичное форматирование)
        I2cstop       ' Освобождаем шину I2c

        Минуты = Makedec(минуты)       ' Минуты

        Gosub Получение_температуры_ds3231

        If Минуты = 0 Then
            I2cstart       ' Подготовка к работе шины I2c
            I2cwbyte Запись_ds3231       ' Команда начало записи
            I2cwbyte Const_часы       ' Команда начального адреса куда пишем - 0
            I2cstart       ' Подготовка к работа шины I2c
            I2cwbyte Чтение_ds3231       ' Адресное обращение к Ds3231
            I2crbyte Часы , Nack       ' Читаем значение секунд (двоично-десятичное форматирование)
            I2cstop       ' Освобождаем шину I2c

            Часы = Makedec(часы)       ' Часы

            If Часы = 0 Then
                I2cstart       ' Подготовка к работе шины I2c
                I2cwbyte Запись_ds3231       ' Команда начало записи
                I2cwbyte Const_день_недели       ' Команда начального адреса куда пишем - 0
                I2cstart       ' Подготовка к работа шины I2c
                I2cwbyte Чтение_ds3231       ' Адресное обращение к Ds3231
                I2crbyte День_недели , Ack
                I2crbyte Число_месяца , Ack
                I2crbyte Месяц , Ack
                I2crbyte Год , Nack
                I2cstop       ' Освобождаем шину I2c

                Год = Makedec(год)       ' Год
                Месяц = Makedec(месяц)       ' Месяц
                День_недели = Makedec(день_недели)       ' День недели
                Число_месяца = Makedec(число_месяца)       ' Число


                If Месяц = 3 Then       ' Если март, узнаём дату перехода на летнее время
                    Число_летнего_времени = Lookup(год , Таблица_летнее_время)
                    If Число_месяца = Число_летнего_времени Then
                        Флаг_летнее_время = 1
                    End If
                End If

                If Месяц = 10 Then       ' Если октябрь, узнаём дату перехода на зимнее время
                    Число_зимнего_времени = Lookup(год , Таблица_зимнее_время)
                    If Число_месяца = Число_зимнего_времени Then
                        Флаг_зимнее_время = 1
                    End If
                End If

            End If       ' If Часы = 0 Then

            If Флаг_летнее_время <> 0 Then
                If Часы = 3 Then
                    Часы = Часы + 1
                    Часы = Makebcd(часы)       ' Часы

                    I2cstart       ' Запись статус регистра
                    I2cwbyte Запись_ds3231
                    I2cwbyte Const_часы
                    I2cwbyte Часы
                    I2cstop       ' Освобождаем шину I2c

                    Флаг_летнее_время = 0
                End If
            End If

            If Флаг_зимнее_время <> 0 Then
                If Часы = 4 Then
                    Часы = Часы - 1
                    Часы = Makebcd(часы)       ' Часы

                    I2cstart       ' Запись статус регистра
                    I2cwbyte Запись_ds3231
                    I2cwbyte Const_часы
                    I2cwbyte Часы
                    I2cstop       ' Освобождаем шину I2c

                    Флаг_зимнее_время = 0
                End If
            End If

        End If       ' If Минуты = 0 Then
    End If       ' If Секунды = 0 Then

'  Месяц_str = Str(месяц)
'  Год_str = "20" + Str(год)
'  День_недели_str = Str(день_недели)
  If Часы < 10 Then Часы_str = " " + Str(часы) Else Часы_str = Str(часы)
  If Минуты < 10 Then Минуты_str = "0" + Str(минуты) Else Минуты_str = Str(минуты)
  If Секунды < 10 Then Секунды_str = "0" + Str(секунды) Else Секунды_str = Str(секунды)
'  If Число_месяца < 10 Then Число_месяца_str = "0" + Str(число_месяца) Else Число_месяца_str = Str(число_месяца)

'  Время_str = Часы_str + ":" + Минуты_str + ":" + Секунды_str
'  Дата_str = День_недели_str + " " + Число_месяца_str + " " + Месяц_str + " " + Год_str
'-------------------------------------------------------------------------------
  Return
'===============================================================================





'===============================================================================
  Таблица_летнее_время:       ' Перевод часов на 1 час вперёд, в 03 часа 00 минут, в последнее воскресение марта
'-------------------------------------------------------------------------------
    Data 26       ' 2000
    Data 25       ' 2001
    Data 31       ' 2002
    Data 30       ' 2003
    Data 28       ' 2004
    Data 27       ' 2005
    Data 26       ' 2006
    Data 25       ' 2007
    Data 30       ' 2008
    Data 29       ' 2009
    Data 28       ' 2010
    Data 27       ' 2011
    Data 25       ' 2012
    Data 31       ' 2013
    Data 30       ' 2014
    Data 29       ' 2015
    Data 27       ' 2016
    Data 26       ' 2017
    Data 25       ' 2018
    Data 31       ' 2019
    Data 29       ' 2020
    Data 28       ' 2021
    Data 27       ' 2022
    Data 26       ' 2023
    Data 31       ' 2024
    Data 30       ' 2025
    Data 29       ' 2026
    Data 28       ' 2027
    Data 26       ' 2028
    Data 25       ' 2029
    Data 31       ' 2030
    Data 30       ' 2031
    Data 28       ' 2032
    Data 27       ' 2033
    Data 26       ' 2034
    Data 25       ' 2035
    Data 30       ' 2036
    Data 29       ' 2037
    Data 28       ' 2038
    Data 27       ' 2039
    Data 25       ' 2040

'===============================================================================

'===============================================================================
  Таблица_зимнее_время:       ' Перевод часов на 1 час назад, в 04 часа 00 минут, в последнее воскресение октября
'-------------------------------------------------------------------------------
    Data 29       ' 2000
    Data 28       ' 2001
    Data 27       ' 2002
    Data 26       ' 2003
    Data 31       ' 2004
    Data 30       ' 2005
    Data 29       ' 2006
    Data 28       ' 2007
    Data 26       ' 2008
    Data 25       ' 2009
    Data 31       ' 2010
    Data 30       ' 2011
    Data 28       ' 2012
    Data 27       ' 2013
    Data 26       ' 2014
    Data 25       ' 2015
    Data 30       ' 2016
    Data 29       ' 2017
    Data 28       ' 2018
    Data 27       ' 2019
    Data 25       ' 2020
    Data 31       ' 2021
    Data 30       ' 2022
    Data 29       ' 2023
    Data 27       ' 2024
    Data 26       ' 2025
    Data 25       ' 2026
    Data 31       ' 2027
    Data 29       ' 2028
    Data 28       ' 2029
    Data 27       ' 2030
    Data 26       ' 2031
    Data 31       ' 2032
    Data 30       ' 2033
    Data 29       ' 2034
    Data 28       ' 2035
    Data 26       ' 2036
    Data 25       ' 2037
    Data 31       ' 2038
    Data 30       ' 2039
    Data 28       ' 2040

'===============================================================================

0

2

Спасибо

0

3

На здоровье!

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Автопереход на летнее и зимнее время