Например TDA7294

Форум РадиоКот • Просмотр темы - BASCOM AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 04:52:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6019 ]     ... , , , 98, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 02:54:32 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Чт янв 13, 2011 11:36:16
Сообщений: 184
Откуда: Красноярский край
Рейтинг сообщения: 0
Код:
...
U = 0.00488755
...
Button:
Incr U
Waitms Debouncetime
Gifr = 64
Return                                                            'подпрограмма 1 установка 50в

Sub Limit1
If U > 0.00488755 Then
Portd.0 = 0                                                 'выключаем реле 1 делителя
Portd.1 = 1                                                 'включаем реле 2 делителя
U = 0.04887585                                            'устанавливаем коэф.для измерения
A = 50                                                      'устанавливаем предел на индикацию
C = 49.95                                                   'устанавливаем предел для защиты
End If
...


Вы же, уважаемый, свой расчетный коэффициент U увеличиваете на 1(целочисленная единица) функцией Incr, чтож вы еще ожидали...
Выбор пределов измерения можно делать по принципу выбора пункта меню (функция Case).
Подумайте над этим...

_________________
Извращение это: программатор - AVR910 by Prottoss, прошивка - Doper, драйвер - Osamu Tamura, называется - STK500!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 07:30:24 
Родился

Зарегистрирован: Ср ноя 24, 2010 21:44:30
Сообщений: 19
Откуда: Мичуринск
Рейтинг сообщения: 0
Да я сначало так и пробовал,чегото тоже не пошло.Пишет ошибку 3 parameters expected и ещё IF THEN expected , end select expected.И ссылается на строки Case 0 и 1 ,а если после If D > 2 Then D = 0 закрыть иф тоже даёт ошибку IF THEN expected.Вроде всё закрываю и IF THEN и end select
всёравно ошибка и что это за ошибка 3 parameters expected чего там 3 параметра ожидают в строке case.
Код:
$regfile = "m8def.dat"                                      ' atmega8

$crystal = 4000000                                          ' частота установленного кварца 4 mHz


'указываем конфигурацию подключения дисплея к портам МК

Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portd.6

Config Lcd = 16 * 2                                         'используем дисплей на 2 строчки по 16 знакомест в каждой

Config Adc = Single , Prescaler = Auto , Reference = Avcc   'конфигурация АЦП

Config Portd = &B1101111

Config Pind.2 = Input

Config Pinc.0 = Input


                                         'объявляем переменные
Dim W As Word
Dim U As Single
Dim Ulcd As Single
Dim A As Word
Dim B As Word
Dim C As Single
Dim D As Word
Declare Sub Alarm
On Int0 Button                                              'обзываем прерывание button
Config Int0 = Rising                                        'конфигурируем прерывание по фронту сигнала
Config Debounce = 50
Const Debouncetime = 75
Enable Interrupts                                           'разрешаем прерывание и в частности INT0
Enable Int0

'----------

'главный цикл программы

Portd.0 = 1
U = 0.00488755                                              'устанавливаем коэф.для 5 в
A = 5
C = 4.95
D = 0
Start Adc
                                                   'запускаем аналого-цифровое преобразование

Do

If D > 2 Then D = 0


Select Case D
   Case 0 : U = 0.00488755 : A = 5 : C = 4.95 : Portd.0 = 1 : Portd.3 = 0
   Case 1 : U = 0.04887585 : A = 50 : C = 49.95 : Portd.1 = 1 : Portd.0 = 0
   Case 2 : U = 0.09775171 : A = 100 : C = 99.95 : Portd.3 = 1 : Portd.1 = 0
End Select

W = Getadc(0)                                               ' измеряем напряжение по входу 0 (РС.0)

Ulcd = U * W                                                ' умножаем что получилось на коэфициент

If Ulcd > C Then

Goto Alarm

Else

End If

M4:

Locate 1 , 1                                                'выводим на экран

Lcd "Voltage"

Locate 2 , 1

Lcd "U=" ; Fusing(ulcd , "##.#") ; " B "

Locate 1 , 12

Lcd "limit"

Locate 2 , 12

Lcd A

Locate 2 , 15

Lcd "B"

Waitms 100

Loop

Button:                                                     'обработка прерывания
Incr D
Waitms Debouncetime
Gifr = 64
Return

                                                               'подпрограмма предела измерений
Sub Alarm
Portd.5 = 1
Cls
Cursor Off
Sound , Portd.4 , 200 , 300
Locate 1 , 5
Lcd "LIMIT"
Wait 2
Portd.5 = 0
Goto M4
End Sub

End


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 11:13:20 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Чт янв 13, 2011 11:36:16
Сообщений: 184
Откуда: Красноярский край
Рейтинг сообщения: 0
Ну для начала многим твоим переменным можно присвоить и байтовое значение, чтобы не перегружать программу, особенно в случе D больше двух он не примет.
А что касается выбора пункта, его надо декларировать:
Код:
Declare Sub D

_________________
Извращение это: программатор - AVR910 by Prottoss, прошивка - Doper, драйвер - Osamu Tamura, называется - STK500!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 11:52:46 
Родился

Зарегистрирован: Ср ноя 24, 2010 21:44:30
Сообщений: 19
Откуда: Мичуринск
Рейтинг сообщения: 0
Подправил но всё равно выдаёт ошибку 3 parameters expected настроки Case.Чего не так я с этими строками делаю,раньше с ними не работал срисовал с примера.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 13:40:11 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Пн июл 25, 2011 14:24:34
Сообщений: 31
Рейтинг сообщения: 0
Доброго всем ЗДОРОВИЯ.Кто нибуть может состряпать програмку для нокиа 3310 чтоб можно было нарисовать большие цифры ну хотябы 16x8.

Писали по поваду LCD A55,A52-Siemens,Я взял библиотеку от 3410 изменил контрастность на
максимум FF и он заработал только шрифт мелкий я не спец в этом, а вы доведёте может до ума мне он нравится стоит копейки и паять можно.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 15:06:21 
Родился

Зарегистрирован: Ср ноя 24, 2010 21:44:30
Сообщений: 19
Откуда: Мичуринск
Рейтинг сообщения: 0
Разобрался почему ошибка в Select Case нельзя перечислять несколько значений переменной только одно ,за исклячением chr.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 20:40:08 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Ср дек 10, 2008 21:24:28
Сообщений: 497
Откуда: Алтайский край, Барнаул
Рейтинг сообщения: 0
Aleks8383 писал(а):
нельзя перечислять несколько значений переменной только одно

Ну почему же? У меня работает так:
Код:
Case 1 : Reset Portd.6
Portb = &H02

И вот так:
Код:
Case 1 : Reset Portd.6
Set Portb.1   : Reset Portb.0 : Reset Portb.2 : Reset Portb.3 : Reset Portb.4

_________________
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 23, 2011 21:22:01 
Родился

Зарегистрирован: Ср ноя 24, 2010 21:44:30
Сообщений: 19
Откуда: Мичуринск
Рейтинг сообщения: 0
Ну что то у меня зато перичесление переменных через тоже : не пошло,хотя в примере с какого и спасывал так и было сделано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пт авг 26, 2011 16:11:53 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
Aleks8383 писал(а):
Ну что то у меня зато перичесление переменных через тоже : не пошло,хотя в примере с какого и спасывал так и было сделано.

А вы не обратили внимания, что в показанном вам примере :
Код:
Case 1 : Reset Portd.6
Set Portb.1   : Reset Portb.0 : Reset Portb.2 : Reset Portb.3 : Reset Portb.4

код написан в две строки, а у вас - :
Код:
Case 0 : U = 0.00488755 : A = 5 : C = 4.95 : Portd.0 = 1 : Portd.3 = 0
, к сожалению, в одну. Вот интерпретатор и ругается.

_________________
Цапу крутить надо!!! Ку или не ку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 28, 2011 16:19:20 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
Всем привет!
Ребята, имеется код собственной разработки. Нужна помощь, чтобы довести до ума. В частности - температура почему-то показывает по нулям :dont_know: , потом надо расставить по индикатору точки (не соображу как). Когда-то делал, а теперь что-то подзабыл... (только не надо шуток по поводу того, что "не знал, да еще забыл") - знал, просто старые проекты все потерялись и все наработки тоже. Данное и так по памяти написано!
И еще правильно организовать цикл в прерывании TIMER1 (обработчик называется Vr), чтобы 10 секунд показывало время, 3 секунды-первый датчик, 3 секунды-второй датчик.
Вот собственно код:
Код:
$regfile = "m48def.dat"
$crystal = 8000000
$lib "ds1307clock.lib"
'----------
Config 1wire = Portd.4
Config Sda = Portc.4
Config Scl = Portc.5
Config Clock = User
Config Portc.0 = Output , Portc.1 = Output , Portc.2 = Output , Portc.3 = Output
Config Portd.0 = Output , Portd.1 = Output
Config Portb = Output
Config Timer0 = Timer , Prescale = 8                        'таймер индикации
Config Timer1 = Timer , Prescale = 1024
Config Watchdog = 2048
'----------
Declare Sub Ds18b20()
Const Ds1307w = &HD0
Const Ds1307r = &HD1
'**************************************
Time$ = "12:00:00"
Date$ = "01/01/11"                                          'метка подпрограммы индикации
Razr1 Alias Portc.0 : Razr2 Alias Portc.1 : Razr3 Alias Portc.2
Razr4 Alias Portc.3 : Razr5 Alias Portd.0 : Razr6 Alias Portd.1
'**************************************
Dim Chas As Byte , Minut As Byte , Sekund As Byte
Dim I1 As Integer
Dim I2 As Integer
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim B As Byte
Dim Weekday As Byte
Dim Flag As Bit
Dim X As Byte , Count As Byte , I As Byte
Dim Number(6) As Byte
Dim Ttt As Byte
'**************************************
For X = 1 To 2
   Portb = &HFF
   Reset Razr1 : Reset Razr2
   Reset Razr3 : Reset Razr4
   Reset Razr5 : Reset Razr6
   Waitms 500
   Set Razr1 : Set Razr2
   Set Razr3 : Set Razr4
   Set Razr5 : Set Razr6
   Waitms 500
Next X
Portb = &B01000000
Reset Razr1 : Reset Razr3 : Reset Razr5
Reset Razr2 : Reset Razr4 : Reset Razr6
Wait 1
Set Razr2 : Set Razr4 : Set Razr6
Set Razr1 : Set Razr3 : Set Razr5
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
'**************************************
On Ovf0 Refresh
On Ovf1 Vr
On Int0 But1 Nosave
On Int1 But2 Nosave
Enable Interrupts
Enable Int0
Enable Int1
Enable Ovf0
Enable Ovf1
'**************************************
Main:
Do
   Gosub Getdatetime
   Number(1) = _hour / 10
   Number(2) = _hour Mod 10
   Number(3) = _min / 10
   Number(4) = _min Mod 10
   Number(5) = _sec / 10
   Number(6) = _sec Mod 10
   Wait 1
Loop Until Ttt >= 10
Do
   For I = 1 To 6
      Number(i) = 10
   Next I
   Call Ds18b20()
   Reset Watchdog
   Number(2) = I1 / 10 : Number(3) = I1 Mod 10 : Number(4) = I1 Mod 100
   Number(1) = 11 : Number(5) = 12 : Number(6) = 13
   Reset Watchdog
   Wait 3
   For I = 1 To 6
      Number(i) = 10
   Next I
   Number(2) = I2 / 10 : Number(3) = I2 Mod 10 : Number(4) = I2 Mod 100
   Number(1) = 11 : Number(5) = 12 : Number(6) = 13
   Reset Watchdog
   Wait 3
   For I = 1 To 6
      Number(i) = 10
   Next I
Loop Until Ttt >= 6
Goto Main
End

'************************[Процедуры обработки подпрограмм и прерываний]************************

Refresh:                                                    ' прерывание таймера Т0 (индикация)

Set Razr1 : Set Razr2 : Set Razr3                           ' гасим индикатор
Set Razr4 : Set Razr5 : Set Razr6

Incr Count : If Count > 6 Then Count = 1                    ' выбираем разряд для загрузки

Portb = Lookup(number(count) , Digits)                      ' закидываем в порт код цифры

Select Case Count                                           ' и включаем соответствующий разряд индикатора
Case 1 : Reset Razr1
Case 2 : Reset Razr2
Case 3 : Reset Razr3
Case 4 : Reset Razr4
Case 5 : Reset Razr5
Case 6 : Reset Razr6
End Select
Return                                                      ' выход из обработчика прерывания

Vr:
Incr Ttt
Return

But1:
   Waitms 100
   Gosub Getdatetime
   Sekund = _sec
   Minut = _min
   Chas = _hour
   Incr Chas
   If Chas > 23 Then Chas = 0
   _hour = Chas
   _min = Minut
   _sec = Sekund
   Gosub Settime
Return

But2:
   Waitms 100
   Gosub Getdatetime
   Sekund = _sec
   Minut = _min
   Chas = _hour
   Incr Minut
   If Minut > 59 Then Minut = 0
   _hour = Chas
   _min = Minut
   _sec = Sekund
   Gosub Settime
Return

Sub Ds18b20()
   1wreset
   1wwrite &H55
   1wverify Dsid1(1)
   1wwrite &HBE
I1 = 1wread(2)
'----------
   1wreset
   1wwrite &H55
   1wverify Dsid2(1)
   1wwrite &HBE
I2 = 1wread(2)
'----------
   1wreset
   1wwrite &HCC                                             ' Выдаем команду чтения ПЗУ
   1wwrite &H44                                             ' Запуск измерения
   Waitms 750                                               ' Ждем окончания преобразования
I1 = I1 * 10
I1 = I1 / 16
I2 = I2 * 10
I2 = I2 / 16
End Sub

Getdatetime:
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' start address in 1307

  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307r                                          ' send address
  I2crbyte _sec , Ack
  I2crbyte _min , Ack                                       ' MINUTES
  I2crbyte _hour , Ack                                      ' Hours
  I2crbyte Weekday , Ack                                    ' Day of Week
  I2crbyte _day , Ack                                       ' Day of Month
  I2crbyte _month , Ack                                     ' Month of Year
  I2crbyte _year , Nack                                     ' Year
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 4                                                ' starting address in 1307
  I2cwbyte _day                                             ' Send Data to SECONDS
  I2cwbyte _month                                           ' MINUTES
  I2cwbyte _year                                            ' Hours
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' starting address in 1307
  I2cwbyte _sec                                             ' Send Data to SECONDS
  I2cwbyte _min                                             ' MINUTES
  I2cwbyte _hour                                            ' Hours
  I2cstop
Return
'********************************************************[DATA]*************************

Digits:                                                     ' цифры

Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110       ' 0 1 2 3 4
Data &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111       ' 5 6 7 8 9
Data &B00000000 , &B01111000 , &B01100011 , &B00111001      ' space , t, grad ,C
'***************************************************************************************

Гляньте, пожалуйста, кому не лень. Может еще чего по оптимизации подскажете!?
Проект в Протеусе прилепил.


Вложения:
proteus2.rar [33.51 KiB]
Скачиваний: 271

_________________
Цапу крутить надо!!! Ку или не ку?


Последний раз редактировалось Igor_67 Вс авг 28, 2011 16:53:35, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 28, 2011 16:35:14 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Привет. Ну правильно, и не будет работать... Проект жеж на LCD и PCF8583... :tea:

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 28, 2011 16:56:18 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
Ой, извиняюсь! :oops: Не тот архив прицепил. Исправил. Смотреть тот же пост. :)

_________________
Цапу крутить надо!!! Ку или не ку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 28, 2011 20:09:17 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Во-первых, логичнее все же сначала запускать измерение для обоих датчиков, и лишь потом забирать результаты измерения. А не наоборот. :)

Во-вторых, разнос по разрядам неправильный. Допустим, температура 25,6 C. В переменную I1 после всех преобразований запишется 256. А в разносе:

Код:
 Number(2) = I1 / 10 : Number(3) = I1 Mod 10 : Number(4) = I1 Mod 100
 Number(1) = 11 : Number(5) = 12 : Number(6) = 13


Number(2) = 256/10 = 25 целых. И что он должен закинуть в порт, по указателю 25 ? Ну и дальше все пошагало не туда, естественно. :)

Но даже если исправить то все равно работать не будет. Ведь переменные Number и I1 должны быть одного типа ! Только тогда будут работать все эти деления и остатки...

И самое главное, на время отправки команд сброса линии / запуска измерения / чтения все прерывания должны быть запрещены. Иначе начитаемся мусора...

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 28, 2011 20:28:51 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
Михаил, спасибо! Ты, как всегда, выручаешь! :) Буду исправлять... :write:

_________________
Цапу крутить надо!!! Ку или не ку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 28, 2011 20:40:05 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да не за что. :) Если исправить то все работает. Правда без точек. :)) Но и это не проблема. Но пилить до ума еще много...

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пн сен 05, 2011 18:15:45 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пт окт 30, 2009 22:33:56
Сообщений: 262
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Кто подскажет как реализован расчёт дня недели в софтовых часах. Не хочу завязываться на софтовые. А если не запускать софтовые, то команда Target = DayOfWeek() не работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пн сен 05, 2011 20:16:00 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Ср дек 10, 2008 21:24:28
Сообщений: 497
Откуда: Алтайский край, Барнаул
Рейтинг сообщения: 0
Alex_Megavolt_79 писал(а):
Не хочу завязываться на софтовые.

Код из хелпа:
Код:
DAYOFWEEK
 Top  Previous  Next 
Action

Returns the Day of the Week of a Date.

 

 

Syntax

Target = DayOfWeek()

Target = DayOfWeek(bDayMonthYear)

Target = DayOfWeek(strDate)

Target = DayOfWeek(wSysDay)

Target = DayOfWeek(lSysSec)

 

 

Remarks

Target
 A Byte – variable, that is assigned with the day of the week
 
BDayMonthYear
 A Byte – variable, which holds the Day-value followed by Month(Byte) and Year (Byte)
 
StrDate
 A String, which holds a Date-String in the format specified in the

CONFIG DATE statement
 
WSysDay
 A Word – variable, which holds the System Day (SysDay)
 
LSysSec
 A Long – variable, which holds the System Second (SysSec)
 

 

 

The Function can be used with five different kind of Input:

 

1. Without any parameter. The internal Date-values of SOFTCLOCK (_day, _month, _year) are used.

2. With a user defined date array. It must be arranged in same way (Day, Month, Year) as the internal SOFTCLOCK date. The first Byte (Day) is the input by this kind of usage. So the Day of the Week can be calculated of every date.

3. With a Date-String. The date-string must be in the Format specified in the Config Date Statement

4. With a System Day – Number.

5. With a System Second - Number

 

 

The Return-Value is in the range of 0 to 6, Monday starts with 0.

 

The Function is valid in the 21th century (from 2000-01-01 to 2099-12-31).

 

 

See Also

Date and Time routines , CONFIG DATE , CONFIG CLOCK, SYSDAY, SYSSEC

 

 

Example

'----------

'name                     : datetime_test1,bas

'copyright                : (c) 1995-2005, MCS Electronics

'purpose                  : show how to use the Date-Time routines from the DateTime.Lib

'micro                    : Mega103

'suited for demo          : no

'commercial addon needed  : no

'----------

 

$regfile = "m103def.dat"                                   ' specify the used micro

$crystal = 4000000                                         ' used crystal frequency

$baud = 19200                                               ' use baud rate

$hwstack = 32                                               ' default use 32 for the hardware stack

$swstack = 10                                               ' default use 10 for the SW stack

$framesize = 40                                             ' default use 40 for the frame space

 

Const Clockmode = 1

'use i2c for the clock

 

#if Clockmode = 1

Config Clock = Soft                                       ' we use build in clock

Disable Interrupts

#else

Config Clock = User                                       ' we use I2C for the clock

'configure the scl and sda pins

Config Sda = Portd.6

Config Scl = Portd.5

 

'address of ds1307

Const Ds1307w = &HD0                                     ' Addresses of Ds1307 clock

Const Ds1307r = &HD1

#endif

 

 

'configure the date format

Config Date = Ymd , Separator = -                           ' ANSI-Format

'This sample does not have the clock started so interrupts are not enabled

' Enable Interrupts

 

'dim the used variables

Dim Lvar1 As Long

Dim Mday As Byte

Dim Bweekday As Byte , Strweekday As String * 10

Dim Strdate As String * 8

Dim Strtime As String * 8

Dim Bsec As Byte , Bmin As Byte , Bhour As Byte

Dim Bday As Byte , Bmonth As Byte , Byear As Byte

Dim Lsecofday As Long

Dim Wsysday As Word

Dim Lsyssec As Long

Dim Wdayofyear As Word

 

 

 

 

' =================== DayOfWeek =========

' Example 1 with internal RTC-Clock

 

_day = 4 : _month = 11 : _year = 2                         ' Load RTC-Clock for example - testing

Bweekday = Dayofweek()

Strweekday = Lookupstr(bweekday , Weekdays)

Print "Weekday-Number of " ; Date$ ; " is " ; Bweekday ; " = " ; Strweekday

 

 

' Example 2 with defined Clock - Bytes (Day / Month / Year)

Bday = 26 : Bmonth = 11 : Byear = 2

Bweekday = Dayofweek(bday)

Strweekday = Lookupstr(bweekday , Weekdays)

Strdate = Date(bday)

Print "Weekday-Number of Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear ; " is " ; Bweekday ; " (" ; Date(bday) ; ") = " ; Strweekday

 

 

' Example 3 with System Day

Wsysday = 2000                                             ' that is 2005-06-23

Bweekday = Dayofweek(wsysday)

Strweekday = Lookupstr(bweekday , Weekdays)

Print "Weekday-Number of System Day " ; Wsysday ; " (" ; Date(wsysday) ; ") is " ; Bweekday ; " = " ; Strweekday

 

 

 

' Example 4 with System Second

Lsyssec = 123456789                                         ' that is 2003-11-29 at 21:33:09

Bweekday = Dayofweek(lsyssec)

Strweekday = Lookupstr(bweekday , Weekdays)

Print "Weekday-Number of System Second " ; Lsyssec ; " (" ; Date(lsyssec) ; ") is " ; Bweekday ; " = " ; Strweekday

 

 

 

 

' Example 5 with Date-String

Strdate = "04-11-02"                                       ' we have configured Date in ANSI

Bweekday = Dayofweek(strdate)

Strweekday = Lookupstr(bweekday , Weekdays)

Print "Weekday-Number of " ; Strdate ; " is " ; Bweekday ; " = " ; Strweekday

 

 

 

 

' ================= Second of Day =========

' Example 1 with internal RTC-Clock

_sec = 12 : _min = 30 : _hour = 18                         ' Load RTC-Clock for example - testing

 

Lsecofday = Secofday()

Print "Second of Day of " ; Time$ ; " is " ; Lsecofday

 

 

' Example 2 with defined Clock - Bytes (Second / Minute / Hour)

Bsec = 20 : Bmin = 1 : Bhour = 7

Lsecofday = Secofday(bsec)

Print "Second of Day of Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " (" ; Time(bsec) ; ") is " ; Lsecofday

 

 

' Example 3 with System Second

Lsyssec = 1234456789

Lsecofday = Secofday(lsyssec)

Print "Second of Day of System Second " ; Lsyssec ; "(" ; Time(lsyssec) ; ") is " ; Lsecofday

 

 

' Example 4 with Time - String

Strtime = "04:58:37"

Lsecofday = Secofday(strtime)

Print "Second of Day of " ; Strtime ; " is " ; Lsecofday

 

 

 

' ================== System Second ========

 

' Example 1 with internal RTC-Clock

                        ' Load RTC-Clock for example - testing

_sec = 17 : _min = 35 : _hour = 8 : _day = 16 : _month = 4 : _year = 3

 

Lsyssec = Syssec()

Print "System Second of " ; Time$ ; " at " ; Date$ ; " is " ; Lsyssec

 

 

' Example 2 with with defined Clock - Bytes (Second, Minute, Hour, Day / Month / Year)

Bsec = 20 : Bmin = 1 : Bhour = 7 : Bday = 22 : Bmonth = 12 : Byear = 1

Lsyssec = Syssec(bsec)

Strtime = Time(bsec)

Strdate = Date(bday)

Print "System Second of " ; Strtime ; " at " ; Strdate ; " is " ; Lsyssec

 

 

' Example 3 with System Day

 

Wsysday = 2000

Lsyssec = Syssec(wsysday)

Print "System Second of System Day " ; Wsysday ; " (" ; Date(wsysday) ; " 00:00:00) is " ; Lsyssec

 

 

' Example 4 with Time and Date String

Strtime = "10:23:50"

Strdate = "02-11-29"                                       ' ANSI-Date

Lsyssec = Syssec(strtime , Strdate)

Print "System Second of " ; Strtime ; " at " ; Strdate ; " is " ; Lsyssec       ' 91880630

 

 

 

 

' == Day Of Year =====

' Example 1 with internal RTC-Clock

_day = 20 : _month = 11 : _year = 2                         ' Load RTC-Clock for example - testing

Wdayofyear = Dayofyear()

Print "Day Of Year of " ; Date$ ; " is " ; Wdayofyear

 

 

' Example 2 with defined Clock - Bytes (Day / Month / Year)

Bday = 24 : Bmonth = 5 : Byear = 8

Wdayofyear = Dayofyear(bday)

Print "Day Of Year of Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear ; " (" ; Date(bday) ; ") is " ; Wdayofyear

 

 

 

' Example 3 with Date - String

Strdate = "04-10-29"                                       ' we have configured ANSI Format

Wdayofyear = Dayofyear(strdate)

Print "Day Of Year of " ; Strdate ; " is " ; Wdayofyear

 

 

' Example 4 with System Second

 

Lsyssec = 123456789

Wdayofyear = Dayofyear(lsyssec)

Print "Day Of Year of System Second " ; Lsyssec ; " (" ; Date(lsyssec) ; ") is " ; Wdayofyear

 

 

' Example 5 with System Day

Wsysday = 3000

Wdayofyear = Dayofyear(wsysday)

Print "Day Of Year of System Day " ; Wsysday ; " (" ; Date(wsysday) ; ") is " ; Wdayofyear

 

 

' =================== System Day ====================

' Example 1 with internal RTC-Clock

_day = 20 : _month = 11 : _year = 2                         ' Load RTC-Clock for example - testing

Wsysday = Sysday()

Print "System Day of " ; Date$ ; " is " ; Wsysday

 

 

' Example 2 with defined Clock - Bytes (Day / Month / Year)

Bday = 24 : Bmonth = 5 : Byear = 8

Wsysday = Sysday(bday)

Print "System Day of Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear ; " (" ; Date(bday) ; ") is " ; Wsysday

 

 

' Example 3 with Date - String

Strdate = "04-10-29"

Wsysday = Sysday(strdate)

Print "System Day of " ; Strdate ; " is " ; Wsysday

 

' Example 4 with System Second

Lsyssec = 123456789

Wsysday = Sysday(lsyssec)

Print "System Day of System Second " ; Lsyssec ; " (" ; Date(lsyssec) ; ") is " ; Wsysday

 

 

 

' =================== Time ============

' Example 1: Converting defined Clock - Bytes (Second / Minute / Hour) to Time - String

Bsec = 20 : Bmin = 1 : Bhour = 7

Strtime = Time(bsec)

Print "Time values: Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " converted to string " ; Strtime

 

 

' Example 2: Converting System Second  to Time - String

Lsyssec = 123456789

Strtime = Time(lsyssec)

Print "Time of Systemsecond " ; Lsyssec ; " is " ; Strtime

 

 

' Example 3: Converting Second of Day to Time - String

Lsecofday = 12345

Strtime = Time(lsecofday)

Print "Time of Second of Day " ; Lsecofday ; " is " ; Strtime

 

 

' Example 4: Converting System Second to defined Clock - Bytes (Second / Minute / Hour)

 

Lsyssec = 123456789

Bsec = Time(lsyssec)

Print "System Second " ; Lsyssec ; " converted to Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " (" ; Time(lsyssec) ; ")"

 

 

 

' Example 5: Converting Second of Day to defined Clock - Bytes (Second / Minute / Hour)

Lsecofday = 12345

Bsec = Time(lsecofday)

Print "Second of Day " ; Lsecofday ; " converted to Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " (" ; Time(lsecofday) ; ")"

 

' Example 6: Converting Time-string to defined Clock - Bytes (Second / Minute / Hour)

Strtime = "07:33:12"

Bsec = Time(strtime)

Print "Time " ; Strtime ; " converted to Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour

 

 

 

' =========== Date ======

 

' Example 1: Converting defined Clock - Bytes (Day / Month / Year) to Date - String

Bday = 29 : Bmonth = 4 : Byear = 12

Strdate = Date(bday)

Print "Dat values: Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear ; " converted to string " ; Strdate

 

 

' Example 2: Converting from System Day to Date - String

Wsysday = 1234

Strdate = Date(wsysday)

Print "System Day " ; Wsysday ; " is " ; Strdate

 

 

' Example 3: Converting from System Second to Date String

Lsyssec = 123456789

Strdate = Date(lsyssec)

Print "System Second " ; Lsyssec ; " is " ; Strdate

 

 

' Example 4: Converting SystemDay to defined Clock - Bytes (Day / Month / Year)

 

Wsysday = 2000

Bday = Date(wsysday)

Print "System Day " ; Wsysday ; " converted to Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear ; " (" ; Date(wsysday) ; ")"

 

 

' Example 5: Converting Date - String to defined Clock - Bytes (Day / Month / Year)

Strdate = "04-08-31"

Bday = Date(strdate)

Print "Date " ; Strdate ; " converted to Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear

 

 

' Example 6: Converting System Second to defined Clock - Bytes (Day / Month / Year)

Lsyssec = 123456789

Bday = Date(lsyssec)

Print "System Second " ; Lsyssec ; " converted to Day=" ; Bday ; " Month=" ; Bmonth ; " Year=" ; Byear ; " (" ; Date(lsyssec) ; ")"

 

 

 

' ================ Second of Day elapsed

 

Lsecofday = Secofday()

_hour = _hour + 1

Lvar1 = Secelapsed(lsecofday)

Print Lvar1

 

Lsyssec = Syssec()

_day = _day + 1

Lvar1 = Syssecelapsed(lsyssec)

Print Lvar1

 

 

Looptest:

 

' Initialising for testing

_day = 1

_month = 1

_year = 1

_sec = 12

_min = 13

_hour = 14

 

 

 

Do

  If _year > 50 Then

    Exit Do

  End If

 

 _sec = _sec + 7

If _sec > 59 Then

    Incr _min

    _sec = _sec - 60

End If

 

 _min = _min + 2

If _min > 59 Then

    Incr _hour

    _min = _min - 60

End If

 

 _hour = _hour + 1

If _hour > 23 Then

    Incr _day

    _hour = _hour - 24

End If

 

 _day = _day + 1

 

 

If _day > 28 Then

    Select Case _month

      Case 1

          Mday = 31

      Case 2

          Mday = _year And &H03

          If Mday = 0 Then

             Mday = 29

          Else

             Mday = 28

          End If

      Case 3

          Mday = 31

      Case 4

          Mday = 30

      Case 5

          Mday = 31

      Case 6

          Mday = 30

      Case 7

          Mday = 31

      Case 8

          Mday = 31

      Case 9

          Mday = 30

      Case 10

          Mday = 31

      Case 11

          Mday = 30

      Case 12

          Mday = 31

    End Select

    If _day > Mday Then

       _day = _day - Mday

      Incr _month

      If _month > 12 Then

          _month = 1

          Incr _year

      End If

    End If

End If

If _year > 99 Then

    Exit Do

End If

 

Lsecofday = Secofday()

Lsyssec = Syssec()

Bweekday = Dayofweek()

Wdayofyear = Dayofyear()

Wsysday = Sysday()

 

 

Print Time$ ; " " ; Date$ ; " " ; Lsecofday ; " " ; Lsyssec ; " " ; Bweekday ; " " ; Wdayofyear ; " " ; Wsysday

 

 

Loop

End

 

 

'only when we use I2C for the clock we need to set the clock date time

#if Clockmode = 0

'called from datetime.lib

Dim Weekday As Byte

Getdatetime:

I2cstart                                                 ' Generate start code

I2cwbyte Ds1307w                                         ' send address

I2cwbyte 0                                               ' start address in 1307

 

I2cstart                                                 ' Generate start code

I2cwbyte Ds1307r                                         ' send address

I2crbyte _sec , Ack

I2crbyte _min , Ack                                       ' MINUTES

I2crbyte _hour , Ack                                     ' Hours

I2crbyte Weekday , Ack                                   ' Day of Week

I2crbyte _day , Ack                                       ' Day of Month

I2crbyte _month , Ack                                     ' Month of Year

I2crbyte _year , Nack                                     ' Year

I2cstop

 _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)

 _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)

Return

 

Setdate:

 _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)

I2cstart                                                 ' Generate start code

I2cwbyte Ds1307w                                         ' send address

I2cwbyte 4                                               ' starting address in 1307

I2cwbyte _day                                             ' Send Data to SECONDS

I2cwbyte _month                                           ' MINUTES

I2cwbyte _year                                           ' Hours

I2cstop

Return

 

Settime:

 _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)

I2cstart                                                 ' Generate start code

I2cwbyte Ds1307w                                         ' send address

I2cwbyte 0                                               ' starting address in 1307

I2cwbyte _sec                                             ' Send Data to SECONDS

I2cwbyte _min                                             ' MINUTES

I2cwbyte _hour                                           ' Hours

I2cstop

Return

 

#endif

 

 

Weekdays:

Data "Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" , "Sunday"


Но я на DS1307 сделал так:
Код:
Declare Sub Month_disp                                      'подпрограмма перевода цифровых значений месяца в названия месяца

Dim Daysmonth As Byte                                       'переменная дней в месяце
Dim Month_disp As String * 8                                'переменная месяца, выводимая на дисплей
Dim Weekday_disp As String * 7                              'переменная дня недели, выводимая на дисплей
Dim Weekday_read As Byte                                    'переменная номера дня недели, считываемая из DS1307
Dim Weekday As Byte                                         'переменная номера дня недели

Do                                                          'начало основного цикла

Call Month_disp                                             'вызываем подпрограмму перевода цифровых значений месяца в названия месяца

Locate 1 , 1                                                'задаем позицию курсора
Lcd Time$                                                   'выводим на ЖКИ время, вызывая подпрограмму чтения времени из DS1307
Locate 2 , 1                                                'задаем позицию курсора
Lcd _day ; " " ; Month_disp                                 'выводим на ЖКИ значение переменной _day, пробел, значение переменной Month_disp
If _year < 10 Then                                          'если значение переменной _year < 10 то,
Lcd " 200" ; _year ; "    "                                 'выводим на ЖКИ, пробел, 200, значение переменной _year, 4 пробела
Else                                                        'иначе
Lcd " 20" ; _year ; "    "                                  'выводим на ЖКИ, пробел, 20, значение переменной _year, 4 пробела
End If                                                      'конец если

Weekday_read = Dayofweek()                                  'считываем номер дня недели из DS1307
Weekday_disp = Lookupstr(weekday_read , Weekdays)           'преобразовываем номер дня недели в название дня недели
Locate 1 , 10                                               'задаем позицию курсора
Lcd Weekday_disp                                            'выводим на ЖКИ значение переменной Weekday_disp

Loop                                                        'конец основного цикла

End

Sub Month_disp                                              'подпрограмма перевода цифровых значений месяца в названия месяца
'*******************************************************************************
Select Case _month

Case 1 : Month_disp = "ЗЅіapЗ"                              'января
Daysmonth = 31
Case 2 : Month_disp = "дeіpa»З"                             'февраля
Daysmonth = _year And &H03                                  'проверяем на високосный год
If Daysmonth = 0 Then                                       'если год високосный (переменная Daysmonth = 0)
Daysmonth = 29                                              'то переменная Daysmonth = 29
Else                                                        'иначе
Daysmonth = 28                                              'переменная Daysmonth = 28
End If
Case 3 : Month_disp = "јapїa"                               'марта
Daysmonth = 31
Case 4 : Month_disp = "aѕpe»З"                              'апреля
Daysmonth = 30
Case 5 : Month_disp = "јaЗ"                                 'мая
Daysmonth = 31
Case 6 : Month_disp = "ёЖЅЗ"                                'июня
Daysmonth = 30
Case 7 : Month_disp = "ёЖ»З"                                'июля
Daysmonth = 31
Case 8 : Month_disp = "aіґycїa"                             'августа
Daysmonth = 31
Case 9 : Month_disp = "ceЅїЗІpЗ"                            'сентября
Daysmonth = 30
Case 10 : Month_disp = "oєїЗІpЗ"                            'октября
Daysmonth = 31
Case 11 : Month_disp = "ЅoЗІpЗ"                             'ноября
Daysmonth = 30
Case 12 : Month_disp = "гeєaІpЗ"                            'декабря
Daysmonth = 31

End Select
End Sub

Getdatetime:                                                'подпрограмма чтения данных из DS1307
'*******************************************************************************
  I2cstart                                                  ' I2C START
  I2cwbyte Ds1307w                                          ' константа адрес записи DS1307
  I2cwbyte 0                                                ' начальный адрес в DS1307

  I2cstart                                                  '  I2C START
  I2cwbyte Ds1307r                                          ' константа адрес чтения  DS1307
  I2crbyte _sec , Ack                                       ' чтение значения СЕКУНД
  I2crbyte _min , Ack                                       ' чтение значения МИНУТ
  I2crbyte _hour , Ack                                      ' чтение значения ЧАСА
  I2crbyte Weekday , Ack                                    ' чтение значения НЕДЕЛИ
  I2crbyte _day , Ack                                       ' чтение значения ДНЯ
  I2crbyte _month , Ack                                     ' чтение значения МЕСЯЦА
  I2crbyte _year , Nack                                     ' чтение значения ГОДА
  I2cstop                                                   'I2C STOP
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)       'преобразуем все переменные в десятичный вид
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)       'преобразуем все переменные в десятичный вид
Return                                                      'возврат из подпрогрммы

Setdate:                                                    'подпрограмма записи даты в DS1307
'*******************************************************************************
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)       'преобразуем все переменные в двоичный вид
  I2cstart                                                  ' I2C START
  I2cwbyte Ds1307w                                          ' константа адрес записи DS1307
  I2cwbyte 4                                                ' начальный адрес в DS1307
  I2cwbyte _day                                             ' запись ДЕНЬ
  I2cwbyte _month                                           ' запись МЕСЯЦ
  I2cwbyte _year                                            ' запись ГОД
  I2cstop                                                   'I2C STOP
Return                                                      'возврат из подпрогрммы

Settime:                                                    'подпрограмма записи времени в DS1307
'*******************************************************************************
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)       'преобразуем все переменные в двоичный вид
  I2cstart                                                  ' I2C START
  I2cwbyte Ds1307w                                          ' константа адрес записи DS1307
  I2cwbyte 0                                                ' начальный адрес в DS1307
  I2cwbyte _sec                                             ' запись СЕКУНД
  I2cwbyte _min                                             ' запись МИНУТ
  I2cwbyte _hour                                            ' запись ЧАСА
  I2cstop                                                   'I2C STOP
Return                                                      'возврат из подпрогрммы

Weekdays:
'*******************************************************************************
Data "ЁoЅeг. "                                              'Понед.
Data "BїopЅёє"                                              'Вторник
Data "Cpeгa  "                                              'Среда
Data "«eїіepґ"                                              'Четверг
Data "ЁЗїЅёеa"                                              'Пятница
Data "CyІІoїa"                                              'Суббота
Data "Bocєp. "                                              'Воскр.

_________________
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт сен 06, 2011 00:07:51 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пт окт 30, 2009 22:33:56
Сообщений: 262
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
max50 так мы запускаем софтовые, либо внутренние на основе таймера 2 либо внешние на ds при этом мы используем стандартные команды по работе с часами, в том числе и вычисление дня недели. Я смотрел код из хелпа и пробовал если не конфигурировать часы как софтовые, то и на командах по работе с часами баском выдаёт ошибки. Вот и заинтересовался как делает баском при вычислении дня недели, чтоб написать свой кусок кода по аналогии.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт сен 06, 2011 18:16:41 
Мучитель микросхем
Аватар пользователя

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Ср дек 10, 2008 21:24:28
Сообщений: 497
Откуда: Алтайский край, Барнаул
Рейтинг сообщения: 0
Alex_Megavolt_79 писал(а):
пробовал если не конфигурировать часы как софтовые, то и на командах по работе с часами баском выдаёт ошибки

Странно! Как же работает у меня?
Код:
Config Sda = Portb.1                                        'на пин b1 подключена линия Sda
Config Scl = Portb.2                                        'на пин b2 подключена линия Scl

Config Clock = User                                         'работа с DS1307
Const Ds1307w = &HD0                                        'константа адреса  записи DS1307
Const Ds1307r = &HD1                                        'константа адреса  чтения DS1307
Config Date = Dmy , Separator = .                           'настраиваем способ отображения даты ДДММГГ, разделитель точка

_________________
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт сен 06, 2011 20:37:59 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пт окт 30, 2009 22:33:56
Сообщений: 262
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Хех, а Config Clock = User вот этой командой запускаете софтовые часы. Уберите эту строчку и пойдут ошибки.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6019 ]     ... , , , 98, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y