roboforum.ru

Технический форум по робототехнике.

 

Русский в Bascom Avr

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Русский в Bascom Avr

Сообщение Gelios » 06 дек 2010, 13:22

Всем доброго времени суток !
Возникла такая проблемма ,необходимо на LCD дисплей выводить надписи на Русском языке в BASCOM AVR .
Может кто нибудь уже сталкивался с этой проблемой , прошу помочь .
p.s Как я понял для того чтобы писать на русском нужно подключать некую библиотеку ? :)
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск

Re: Русский в Bascom Avr

Сообщение Skyline » 06 дек 2010, 14:04

В конце статьи посмотри, по-моему, то что тебе нужно:
http://robotsspace.ucoz.ru/publ/8-1-0-52
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Русский в Bascom Avr

Сообщение Gelios » 06 дек 2010, 14:19

Skyline
В конце статьи посмотри, по-моему, то что тебе нужно:
http://robotsspace.ucoz.ru/publ/8-1-0-52

Благодарю именно то что нужно :roll:
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск

Re: Русский в Bascom Avr

Сообщение Gelios » 07 дек 2010, 18:23

Доброго времени суток формутчане , появился у меня еще один вопрос связный с подключением часовой микросхемы DS 1307 к микроконтроллеру ATmega 16 . В интернете много статей по подключению программно этой микросхемы но все примеры к сожалению :cry:
приведены на других языках программирования таких как ASM , C++ .А по Басику нету . Но есть пример работы с этими часами в хелпе.
Но вот НО! Я уже пару дней мучаюсь с программой их хелпа а часики мои на роботе все никак не хотят идти :cry: .
Я был бы очень признателен тем людям которые могли бы выложить пример работы с часами а именно как :
*Нужно показывать только дату и текущее время .
*И как можно реализовать такой алгоритм :
-Робот едет вперёд (к примеру) сработал датчик 1 и пошёл отсчет времени по секундам , робот едет дальше , опять сработал тот же датчик 1 и отсчет времени прекратился , а результат отображался на дисплее .
(если можно примерчик кратенький )
Вот программа с которой я работаю
Код: Выделить всёРазвернуть
'Version 2.2 New

'Creator - Sorokin Oleg akk "Gelios"

'Programm Robot RC5N5p2

$regfile = "m16def.dat"                                    'используемый Микроконтроллер

$crystal = 16000000                                        'Частота работы микроконтроллера 16 МГц

$baud = 9600

$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

#if Clockmode = 1

Config Clock = Soft

Disable Interrupts

#else

Config Clock = User

Config Sda = Portc.1

Config Scl = Portc.0

Const Ds1307w = &HD0                                       ' Addresses of Ds1307 clock

Const Ds1307r = &HD1

#endif

Config Date = Ymd , Separator = -

$lib "lcd4.lbx"

$lib "mcsbyte.lbx"

'Библиотека lcd4.lbx использует следующее подключение -

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

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7

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

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

Config Portd.0 = Input

Config Rc5 = Pind.0                                        'PD0 - вход RC-5

Config Portd.2 = Output : Prav_vpered Alias Portd.2

Config Portd.3 = Output : Lev_vpered Alias Portd.3

Config Portd.4 = Output : Lev_nazad Alias Portd.4

Config Portd.5 = Output : Prav_nazad Alias Portd.5

Config Portd.6 = Output : Led Alias Portd.6

Config Portd.7 = Input : Sb1 Alias Portd.7

'часы нужно подключать PC1-PC0

Config Portc.2 = Input : Ir_1 Alias Portc.2                '*

Config Portc.3 = Input : Ir_2 Alias Portc.3

Config Portc.4 = Input : Ir_3 Alias Portc.4                '*                                                   $PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.

Config Portc.5 = Input : Ir_4 Alias Portc.5

'Подключить ацп чтобы мерить напряжение на акамуляторе PA0

Config Porta.1 = Input : L1 Alias Porta.1

Config Porta.2 = Input : L2 Alias Porta.2

Config Porta.3 = Input : L3 Alias Porta.3

Config Porta.4 = Input : L4 Alias Porta.4

Config Porta.5 = Input : L5 Alias Porta.5

Config Porta.6 = Input : L6 Alias Porta.6

Declare Sub On_off

Declare Sub P_plis

Declare Sub P_minys

Declare Sub Vol_plis

Declare Sub Vol_minys

Declare Sub Zariad

Declare Sub Leds

Declare Sub 4asiki

Dim Address As Byte                                        'Объявляем переменные

Dim Command As Byte

Dim A As Byte

Dim P_plis As Byte

Dim P_minys As Byte

Dim Vol_plis As Byte

Dim Vol_minys As Byte

Dim On_off As Byte

Dim Zariad As Byte

Dim W As Word

Dim Volt As Single

Dim Leds As Byte

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

Enable Interrupts

Start Adc

'************************************************************************************
'
''''''''''''''''''''''''''''Начало программы '''''''''''''''''''''''''''''''''''''''

'************************************************************************************



Cls

Lcd "Ёpёіeї xo·ЗёЅ"                                         'Привет хозяин

Waitms 500

Lowerline

Lcd "©гaАё ! =)"

Waitms 500

Cls                                                         'Удачи ! =)

Cursor Off



Do

Getrc5(address , Command)                                  'Прием команды ПДУ

If Address = 0 Then                                        'Затем – ее выполнение

  Command = Command And &B01111111



   If Command = 12 Then                                     'Выключаем все (клавиша ОN-OFF)

    Call On_off

   End If



    If Command = 32 Then                                    'Средний вперед (клавиша P+)

     Call P_plis

    End If



     If Command = 33 Then                                   'Средний назад (клавиша P-)

      Call P_minys

     End If



      If Command = 16 Then                                  'Резко направо (клавиша VOL+)

       Call Vol_plis

      End If



       If Command = 17 Then                                 'Резко налево (клавиша VOL-)

        Call Vol_minys

       End If



        If Command = 8 Then                                 'Заряд в %

         Call Zariad

        End If



         If Command = 9 Then                                ' Включаем Фары

          Call Leds


         End If



          If Command = 7 Then                               'Часики включаем тока ХЗ как =))

           Call 4asiki

          End If

'*************************************************************************************************************

'*************************************************** ЧАСЫ ****************************************************

'*************************************************************************************************************
          _day = 1

_month = 1

_year = 1

_sec = 12

_min = 13

_hour = 14


           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()



Cls
Locate 1 , 4
Lcd Time$ ; " "
Locate 2 , 4
Lcd Date$ ; " "


End If




Loop

'************************************************************************************

'''''''''''''''''''''''''''''''''Конец программы'''''''''''''''''''''''''''''''''''''

'************************************************************************************

Sub On_off

   For A = 0 To 7

    Reset Porta.a : Reset Portb.a : Reset Portc.a : Reset Portd.a

    Next A

End Sub



   Sub P_plis

    Cls

    Cursor Off

    Waitms 30

    Locate 1 , 4

    Lcd "Bѕepeг P+ "                                        'Вперед

    Set Prav_vpered : Set Lev_vpered                        'Включаем М1, М2 вперед

    Waitms 180                                              'и через 180 мс выключаем

    Reset Prav_vpered : Reset Lev_vpered

    Waitms 20

    Set Lev_nazad : Set Prav_nazad                          'Тормозим в течение 20 мс

    Waitms 20

    Reset Lev_nazad : Reset Prav_nazad

  End Sub



   Sub P_minys

    Cls

    Cursor Off

    Waitms 30

    Locate 1 , 4

    Lcd "Ha·aг P-"                                          'Назад

    Set Prav_nazad : Set Lev_nazad                          'Включаем М1, М2 назад

    Waitms 180                                              'и через 180 мс выключаем

    Reset Prav_nazad : Reset Lev_nazad

    Waitms 20

    Set Prav_vpered : Set Lev_vpered                        'Тормозим в течение 20 мс

    Waitms 20

    Reset Prav_vpered : Reset Lev_vpered

    End Sub



     Sub Vol_plis

      Cls

      Cursor Off

      Waitms 30

      Locate 1 , 4

      Lcd "Haѕpaіo VOL+"                                    'Направо

      Set Prav_vpered : Set Lev_nazad                       'Включаем M1 назад, М2 вперед

      Waitms 80                                             'и через 80 мс выключаем

      Reset Prav_vpered : Reset Lev_nazad

      Waitms 20

      Set Prav_nazad : Set Lev_nazad                        'Тормозим в течение 20 мс

      Waitms 20

      Reset Prav_nazad : Reset Lev_vpered

      End Sub



       Sub Vol_minys

        Cls

        Cursor Off

        Waitms 30

        Locate 1 , 4

        Lcd "Ha»eіo VOL-"                                   'Налево

        Set Prav_nazad : Set Lev_vpered                     'Включаем M1 назад, М2 вперед

        Waitms 80                                           'и через 80 мс выключаем

        Reset Prav_nazad : Reset Lev_vpered

        Waitms 20

        Set Prav_vpered : Set Lev_nazad                     'Тормозим в течение 20 мс

        Waitms 20

        Reset Prav_vpered : Reset Lev_nazad

       End Sub





        Sub Zariad

        Cls

        Cursor Off

        Waitms 30

        Volt = W / 10.35

        Lcd "Ёpoіepєa ·apЗгa"                               'Проверка заряда

        W = Getadc(0)                                       'считываем результат с пина 0 порта А.

        Lowerline                                           ' позиция курсора

        Lcd "AбЁ(0):" ; Volt ; " %"                         'АЦП

        Waitms 2000

        End Sub





         Sub Leds                                           ' Включаем подсветку робота

          Set Led                                           'Включаем фары и мигаем 2 раза

          Waitms 300

          Reset Led

          Waitms 150

          Set Led

          Waitms 300

          Reset Led

          Waitms 150

          Set Led

         End Sub



          Sub 4asiki



            End Sub



             '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"






А вот пример из хелпа
Код: Выделить всёРазвернуть
'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"

Вот. Зарание спасибо тем кто откликнется :wink:
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск

Re: Русский в Bascom Avr

Сообщение Skyline » 07 дек 2010, 19:24

Можно узнать про контроль заряда АКБ. На какое напряжение аккума рассчитано?
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Русский в Bascom Avr

Сообщение Gelios » 07 дек 2010, 19:34

Можно узнать про контроль заряда АКБ. На какое напряжение аккума рассчитано?

На 5 (4.8V) Вольт.
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск

Re: Русский в Bascom Avr

Сообщение Skyline » 07 дек 2010, 19:50

Напряжение подается на прямую с аккума, без всяких резисторных делителей?
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Русский в Bascom Avr

Сообщение Gelios » 07 дек 2010, 21:41

По ка что для теста резисторный делитель не применяю , но в дальнейшем планируется .
Ведь в моем устройстве рабочее напряжение , при котором робот стабильно работает, является 4.2 - 5.0 V .
Поэтому в дальнейшем подбором резисторов и написанием соответствующей программы робот будет судить о разряди АКБ от 0 до 100% в промежутке напряжений от 4.2 до 5.0 V соответственно . :)
p.s. У тебя примера нет случайно для работы с DS 1307 ? :wink:
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск

Re: Русский в Bascom Avr

Сообщение Radist » 07 дек 2010, 22:37

С часами этими работал, но на асме. Думаю проблема в протоколе и2ц, если часы правильно подключены. Попробуйте что-то записать по какому-то адресу, а потом считать и сравнить. Если не получится - ищите примеры по работе с и2ц.
Аватара пользователя
Radist
 
Сообщения: 2233
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: Русский в Bascom Avr

Сообщение Skyline » 08 дек 2010, 13:35

Gelios писал(а):p.s. У тебя примера нет случайно для работы с DS 1307 ? :wink:

Нет, пока с часиками не работал. Вбей в поиске "DS 1307" вот здесь- это форум по Bascom'у (если что гугл переводчик в помощь). Посмотри в темках есть примеры кода, может что и найдешь полезное!
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Русский в Bascom Avr

Сообщение Skyline » 20 дек 2010, 13:39

Вот пример работы с DS 1307 на Баскоме! Там где "Простые часы-термометр радиолюбителя".
http://bascom.at.ua/publ/1
Последний раз редактировалось Skyline 23 дек 2010, 20:00, всего редактировалось 1 раз.
Аватара пользователя
Skyline
 
Сообщения: 278
Зарегистрирован: 12 май 2010, 13:30
Откуда: Уральск-Самара
Skype: sky-jap
прог. языки: Bascom AVR Basic
ФИО: Полулях Сергей Валерьевич

Re: Русский в Bascom Avr

Сообщение Gelios » 22 дек 2010, 23:12

Вот уже больше 2х недель борюсь с этими часами :cry:
Все безрезультатно ...
Программа 100% рабочая . Все подключено по даташиту и неработает ...
Вот на дисплей выводит эту надпись
DSC00053.JPG

Что это может быть ?
з.ы. На дисплее должно быть время по нулям
Программа прилогается
Код: Выделить всёРазвернуть
$regfile = "m16def.dat"

$crystal = 16000000

$lib "lcd4.lbx"
                                          ' for smaller code
$lib "ds1307clock.lib"

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7


Config Lcd = 16 * 2                                         ' modified lib

'configure the scl and sda pins
Config Sda = Portc.1

Config Scl = Portc.0

'address of ds1307
Const Ds1307w = &HD0
                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1

Config Clock = User
                                         ' this will dim the bytes automatic
'dim other needed variables
Dim Weekday As Byte


Lcd "DS1307"

Waitms 100

' assigning the time will call the SetTime routine
Time$ = "00:00:00"
                                          ' to watch the day changing value
Date$ = "00-00-00"
                                          ' 13 november 2002
Do

Cls

  Lcd "  " ; Date$

  Lowerline

  Lcd " " ; Time$

  Waitms 500

Loop

End

'called from ds1307clock.lib
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
Последний раз редактировалось Gelios 22 дек 2010, 23:16, всего редактировалось 1 раз.
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск

Re: Русский в Bascom Avr

Сообщение =DeaD= » 22 дек 2010, 23:14

Divide'et'Empera спасёт вас :wink:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24053
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: Pascal / C++ / PHP / 1C
ФИО: Антон Ботов

Re: Русский в Bascom Avr

Сообщение Gelios » 21 янв 2011, 17:44

Решил новую тему не создавать , задам вопрос тут :
Каким образом мне можно выйти из цикла с помощью нажатия кнопки пульта .
Возможно не конкретно поставил вопрос :oops:

В этой программе при нажатии кнопки с пульта ( к примеру 1 ) у нас начинается выполнятся программа 1 , но выйти я с нее никак не могу . Выйти с программы нужно после нажатия кнопки офф . Уже пробывал и так и сяк и ничего не выходит :cry:
Вот это злосчастная программа
Код: Выделить всёРазвернуть
 'Version 3.1

'Creator - Sorokin Oleg akk "Gelios"

'Programm Robot RS5N5p2v3 (прошлая версия робота RC5N5p2)

$regfile = "m16def.dat"                                    'используемый Микроконтроллер

Print "Привет ! Робот RS5N5p2 готов к работе !"

$crystal = 16000000                                        'Частота работы микроконтроллера 16 МГц

$baud = 19200

Print "Подготовка робота к работе"

$lib "ds1307clock.lib"

Print "подключение библеотеки DS1307"

$lib "lcd4.lbx"

Print "Подключение библиотеки для дисплея 16*2"

'генерация частоты 36kHz 50% скважностью

Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle

' Расчитываем Compare1a

' тактовая частота (kHz) / частота TSOPa (kHz) / 2 = Compare

' 16000 / 36 / 2 = 222

Compare1a = 222

Config Pind.5 = Output                                     'Выход ИК сигнала тоесть 36 KHz

'Библиотека lcd4.lbx использует следующее подключение -

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

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7

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

Cls                                                        'Чистим дисплей                                                        '

Cursor Off                                                 'Убираем курсор (чтоб немешал )

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

'configure the scl and sda pins

Config Sda = Portc.1

Config Scl = Portc.0

Config Pind.2 = Input                                      'PD2 - вход RC-5

Config Rc5 = Pind.2

Config Clock = User

'Двигатели используют следующие подключение

Config Porta.1 = Output : Prav_nazad Alias Porta.1

Config Porta.2 = Output : Prav_vpered Alias Porta.2

Config Porta.3 = Output : Lev_vpered Alias Porta.3

Config Porta.4 = Output : Lev_nazad Alias Porta.4

'Pord.0 and Portd.1 используем для связи через USART

Config Portd.3 = Input : Ir_bamper Alias Portd.3           'Показания с Ик бампера Придут сюда

Config Portd.5 = Output : Dinamik Alias Portd.5            'На этой ножке ожидаем звук )

'Прерываниями нужно подключить кнопку SB1 для исполнения программы

'Подключаем датчики линии

Config Portc.5 = Input : Dat_1 Alias Portc.5

Config Portc.6 = Input : Dat_2 Alias Portc.6

Config Portc.7 = Input : Dat_3 Alias Portc.7

'Ну и остальную ерунду подключаем

Config Portc.4 = Output : Led_1 Alias Portc.4

Config Portc.3 = Output : Led_2 Alias Portc.3

Config Portc.2 = Output : Led_3 Alias Portc.2

Declare Sub N_1

Declare Sub N_2

Declare Sub On_off

Declare Sub P_plis

Declare Sub P_minys

Declare Sub Vol_plis

Declare Sub Vol_minys

Declare Sub Zariad

Declare Sub Leds

Declare Sub Demo

Declare Sub 4asiki

Declare Sub Test

Dim Address As Byte                                        'Объявляем переменные

Dim Command As Byte

Dim A As Byte

Dim P_plis As Byte

Dim P_minys As Byte

Dim Vol_plis As Byte

Dim Vol_minys As Byte

Dim On_off As Byte

Dim Zariad As Byte

Dim W As Word

Dim Volt As Single

Dim Leds As Byte

Dim Demo As Byte

Dim Q As Integer

Dim S As Integer

Dim V As Integer

Dim X As Integer

Dim Weekday As Byte

Dim 4asiki As Byte

Dim Test As Byte

Dim N_1 As Byte

Dim N_2 As Byte


'Объявляем константы

Const Ds1307w = &HD0
                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1

Time$ = "00:00:00"                                         ' to watch the day changing value

Date$ = "00-00-00"                                         ' 19 december 2010

'Запускаем все что можно запустить =)

Enable Interrupts                                          'Разрешаем прерывания

Start Timer1                                               'запускаем таймер 1

Start Adc

Print "Робот готов к работе !"

Locate 1 , 3

Lcd "PoІoї ґoїoі"

Locate 2 , 5

Lcd "є paІoїe "

Waitms 500

Ocnovnoi:                                                   'Основной цикл программы

Do

Cls

Getrc5(address , Command)                                  'Прием команды ПДУ

  If Address = 0 Then                                       'Затем – ее выполнение

  Command = Command And &B01111111



   If Command = 12 Then                                     'Выключаем все (клавиша ОN-OFF)

    Call On_off

   End If



    If Command = 32 Then                                    'Средний вперед (клавиша P+)

     Call P_plis

    End If



     If Command = 33 Then                                   'Средний назад (клавиша P-)

      Call P_minys

     End If



      If Command = 16 Then                                  'Резко направо (клавиша VOL+)

       Call Vol_plis

      End If



       If Command = 17 Then                                 'Резко налево (клавиша VOL-)

        Call Vol_minys

       End If



        If Command = 8 Then                                 'Заряд в %

         Call Zariad

        End If




         If Command = 9 Then                                ' Включаем Фары

          Call Leds

         End If


          If Command = 7 Then                               'Демонстрация возможностей

           Call Demo

          End If


           If Command = 5 Then                              'Показываем время

            Call 4asiki

           End If

            If Command = 4 Then

              Call Test

            End If

             If Command = 1 Then                            'Тест обьезд препятствия

              Call N_1

             End If





End If

Loop



'************************************************************************************

'''''''''''''''''''''''''''''''''Конец программы'''''''''''''''''''''''''''''''''''''

'************************************************************************************

';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Sub On_off                                                 'Выкл все

   For A = 0 To 7

    Cls

    Reset Porta.a : Reset Portb.a : Reset Portc.a : Reset Portd.a

    Next A

End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   Sub P_plis

    Cls

    Cursor Off


    Waitms 30

    Locate 1 , 4

    Lcd "Bѕepeг P+ "                                        'Вперед

    Prav_vpered = 1 : Lev_vpered = 1                        'Включаем М1, М2 вперед

    Waitms 300                                              'и через 300 мс выключаем

    Prav_vpered = 0 : Lev_vpered = 0


  End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

   Sub P_minys

    Cls

    Cursor Off

    Waitms 30

    Locate 1 , 4

    Lcd "Ha·aг P-"                                          'Назад

    Prav_nazad = 1 : Lev_nazad = 1                          'Включаем М1, М2 назад

    Waitms 300                                              'и через 300 мс выключаем

    Prav_nazad = 0 : Lev_nazad = 0

   End Sub

';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     Sub Vol_plis

      Cls

      Cursor Off

      Waitms 30

      Locate 1 , 4

      Lcd "Haѕpaіo VOL+"                                    'Направо

      Prav_vpered = 1 : Lev_nazad = 1                       'Включаем M1 назад, М2 вперед

      Waitms 300                                            'и через 300 мс выключаем

      Prav_vpered = 0 : Lev_nazad = 0

     End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

       Sub Vol_minys

          Cls

          Cursor Off

          Waitms 30

          Locate 1 , 4

          Lcd "Ha»eіo VOL-"                                 'Налево

          Prav_nazad = 1 : Lev_vpered = 1                   'Включаем M1 назад, М2 вперед

          Waitms 300                                        'и через 80 мс выключаем

          Prav_nazad = 0 : Lev_vpered = 0

          End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

             Sub Zariad

              S = 0

              While S <= 10

              Cls

              Cursor Off

              Waitms 10

               'Volt = W / 10.35

               Lcd "Ёpoіepєa ·apЗгa"                        'Проверка заряда

               W = Getadc(0)                                'считываем результат с пина 0 порта А.

               Lowerline                                    ' позиция курсора

               Lcd "AбЁ(0):" ; W ; " "                      'АЦП

               Waitms 100

               S = S + 1

               Wend

              End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                 Sub Leds                                   'Фарами моргаем и включаем их

                  Set Led_3

                  Waitms 300

                  Reset Led_3

                  Waitms 150

                  Set Led_3

                  Waitms 300

                  Reset Led_3

                  Waitms 150

                  Set Led_3

                 End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                  Sub Demo

                   Q = 0

                   Cursor Off

                   Locate 1 , 2

                   Lcd "аeјoЅcїpaеёЗ"                       'Демонстрация

                   Locate 2 , 2

                   Lcd "Ёoє»oЅГ :)"                         'Поклоны :)

                   While Q <= 4

                   Prav_vpered = 1 : Lev_vpered = 1

                   Waitms 500

                   Prav_vpered = 0 : Lev_vpered = 0

                   Waitms 50

                   Led_1 = 1

                   Waitms 150

                   Led_1 = 0

                   Waitms 150

                   Led_1 = 1

                   Waitms 30

                   Prav_vpered = 1 : Lev_nazad = 1

                   Waitms 300

                   Prav_vpered = 0 : Lev_nazad = 0

                   Waitms 30

                   Q = Q + 1

                   Wend

                   'повторить 4 раза
                  End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                   Sub 4asiki

                   Q = 0

                   While Q = 1

                      Cls

                      Locate 1 , 4

                      Lcd " " ; Date$

                      Locate 2 , 4

                      Lcd " " ; Time$

                      Waitms 500

                      Wend

                   End Sub
';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

'Конфигурация DS 1307

'called from ds1307clock.lib

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


';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Sub Test

If Ir_bamper = 0 Then

  Led_3 = 1

  Else

  Led_3 = 0

End If

End Sub

';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Sub N_1

Locate 1 , 4

Lcd "OІВe·г "

Locate 2 , 2

Lcd "ЁpeѕЗгcїіё№"

  Do

  If Ir_bamper = 0 Then

  Cls

  Lcd "ЁpeѕЗгcїіё№ HET"

  Prav_vpered = 1 : Lev_vpered = 1

  Else

  Cls

  Lcd "ЁpeѕЗгcїіёe !!!"

  Led_3 = 1

  Waitms 100

  Led_2 = 1 : Led_1 = 1

  Waitms 20

  Prav_nazad = 1 : Lev_nazad = 1

  Waitms 180

  Prav_nazad = 0 : Lev_nazad = 0

  Waitms 20

  Prav_vpered = 1 : Lev_nazad = 1

  Waitms 80

  Prav_vpered = 0 : Lev_nazad = 0

  Waitms 20

  Prav_vpered = 1 : Lev_vpered = 1

  Waitms 100

  Prav_vpered = 0 : Lev_vpered = 0

  Waitms 20

  Lev_vpered = 1 : Prav_nazad = 1

  Waitms 80

  End If

  Loop Until Command = 12

End Sub





Буду рад помощи с вашей стороны .
Любая высокоразвитая технология похожа на волшебство
Gelios
 
Сообщения: 219
Зарегистрирован: 16 июл 2010, 16:25
Откуда: Беларусь , Минск


Вернуться в Микроконтроллеры

Кто сейчас на конференции

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

Mail.ru counter