На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > прогаем Микроконтроллеры!
      привет всем! вот недавно узнал что микроконтроллеры типа PIC прогаю.тся на АССEMBLER кто нибудь занимается такими вешами и можно ли прогать их на C++??
        Можно на C. Компиляторов C++ для микроконтроллеров я пока не встречал. Но если ты хочешь получить действительно качественный и оптимизированный код, пиши на ассемблере. Компиляторы C под микроконтроллеры генерируют такое количество мусора, что сам не рад будешь.
          Цитата

          можно ли прогать их на C++??

          да можно
          Цитата

          Компиляторы C под микроконтроллеры генерируют такое количество мусора, что сам не рад будешь.

          я бы не стал делать таких категоричных заявлений
          Сообщение отредактировано: potor -
            Цитата potor @
            я бы не стал делать таких категоричных заявлений
            Я бы не делал, если бы не пробовал. Сравните для примера программу сложения 2-х целых (!) чисел под любой 51-й Intel на ассемблере и на C. Тогда всё сразу станет ясно. На то он и микроконтроллер, чтобы пользоваться им оптимально, а не покупать контроллеры с огромными флешками за счёт конечного пользователя.
              Цитата

              Сравните для примера программу сложения 2-х целых (!) чисел под любой 51-й Intel на ассемблере и на C

              предлагаю выложить вам свой пример на ассемблере сюда, а после я выложу оттранслированный с С код и посмотрим у кого получится короче
                Цитата EL[michlen] @
                Сравните для примера программу сложения 2-х целых (!) чисел под любой 51-й Intel на ассемблере и на C
                Ну так выкладывайте сравнение. Свои исходники на ассемблере и C, на которых выполнялось сравнение. Посмотрим. :)
                Хотя у меня уже есть подозрение, с чем связаны такие выводы. :)
                  Цитата

                  Ну так выкладывайте сравнение. Свои исходники на ассемблере и C, на которых выполнялось сравнение. Посмотрим.

                  я готов хоть сейчас, но для начала жду от EL[michlen] его версию

                  Добавлено
                  давайте сразу уточним задачу
                  надо написать на ассемблере MCS51 функцию, которая принимает на входе 2 16-разрядных беззнаковых целых числа и выдает на выходе их сумму ввиде беззнакового целого 16-разрядного числа
                    Цитата potor @
                    я готов хоть сейчас, но для начала жду от EL[michlen] его версию
                    Мне хотелось бы увидеть сравнение именно от EL[michlen]. Т.е. как, что и на чем он сравнивал. :)
                      potor, на восьмиразрядном контроллере?
                        да, и в чем проблема???
                          Входные данные пишем в R0, R1, R2 и R3. Например для сложения 65000 и 50 делаем так:
                          ExpandedWrap disabled
                            mov R1, #0E8h
                            mov R2, #0FDh
                            mov R3, #32h
                            mov R4, #0
                          ExpandedWrap disabled
                            mov A, R1
                            add A, R3
                            mov R1, A
                            mov A, R2
                            addc A, R4
                            mov R2, A
                          В R1 и R2 результат. Компилятора под рукой нету (я на работе), так что сравнить с С сейчас не смогу. Только вечером.

                          Добавлено
                          Цитата potor @
                          да, и в чем проблема???
                          В том, что ещё и работать надо помимо форума. А вообще, я же просто уточнил.

                          Добавлено
                          На С я тогда пробовал вот что (если подгонять под наш вопрос):
                          ExpandedWrap disabled
                            int addition(int var1, int var2)
                            {
                                return var1+var2;
                            }
                             
                            void main()
                            {
                                int var1=123, var2=456;
                                addition(var1, var2);
                            }

                          Когда скомпилировал, получилось (если память не изменяет) около 5 Кб! После чего я обозлился на С и решил, что он здесь точно не катит. :wall:

                          trainer, чувствую подвох, а понять не могу...
                            вот тоже самое на сях
                            ExpandedWrap disabled
                              #include<at89x51.h>
                              unsigned int add(unsigned int a, unsigned int b)
                              {
                              return a+b;
                              }
                              main()
                              {
                              unsigned int a;
                               
                              a=add(50, 65000);
                              }

                            это то что получилось после компиляции
                            ExpandedWrap disabled
                                            ; FUNCTION _add (BEGIN)
                              ;---- Variable 'a' assigned to Register 'R6/R7' ----
                              ;---- Variable 'b' assigned to Register 'R4/R5' ----
                                                                         ; SOURCE LINE # 2
                                                                         ; SOURCE LINE # 3
                                                                         ; SOURCE LINE # 4
                              0000 EF                MOV     A,R7
                              0001 2D                ADD     A,R5
                              0002 FF                MOV     R7,A
                              0003 EE                MOV     A,R6
                              0004 3C                ADDC    A,R4
                              0005 FE                MOV     R6,A
                                                                         ; SOURCE LINE # 5
                              0006         ?C0001:
                              0006 22                RET    
                                           ; FUNCTION _add (END)
                               
                                           ; FUNCTION main (BEGIN)
                                                                         ; SOURCE LINE # 6
                                                                         ; SOURCE LINE # 7
                                                                         ; SOURCE LINE # 10
                              0000 7DE8              MOV     R5,#0E8H
                              0002 7CFD              MOV     R4,#0FDH
                              0004 7F32              MOV     R7,#032H
                              0006 7E00              MOV     R6,#00H
                              0008 120000      R     LCALL   _add
                              000B 8E00        R     MOV     a,R6
                              000D 8F00        R     MOV     a+01H,R7
                                                                         ; SOURCE LINE # 11
                              000F 22                RET    
                                           ; FUNCTION main (END)

                            один в один твой пример
                            и ничего лишнего я тут не вижу
                              potor, что за компилятор?

                              Добавлено
                              Кстати, если писать a=add(50, 65000);, то можно вообще без регистров обойтись - это ж константы. ;)
                                Цитата

                                potor, что за компилятор?

                                пакет keil uVision2 V2.04b
                                сам компилятор V6.00i

                                Цитата

                                Кстати, если писать a=add(50, 65000);, то можно вообще без регистров обойтись - это ж константы.

                                вот поэтому я и сделал это отдельной функцией
                                иначе бы он все это дело оптимизировал
                                  Цитата potor @

                                  пакет keil uVision2 V2.04b
                                  сам компилятор V6.00i
                                  Бум знать. ;) Доеду до дома - скажу, каким я пробовал.
                                    Подскажите кто нибуть как прогить USB?? кажется для этого нжны микроконтроллеры а мож уже готовые продаются? и ваше сложно ли это если найдется подкиньте статейку в нете!
                                      |DC|*Magnum*, есть контроллеры со встроенной поддержкой USB, например на http://www.atmel.com/dyn/products/devices.asp?family_id=655
                                      Можно, конечно, вручную написать программную поддержку этого интерфейса, но это дело не для слабонервных =) Стандарт USB и другую документацию можно скачать на http://www.usb.org/developers/docs/

                                      Сам софт для работы с USB из PC может использовать HID-интерфейс (если это стандартное устройство, например мышь) или придётся писать свой драйвер. Есть ещё возможность использовать готовые драйвера сторонних фирм.
                                        EL[michlen], слушай а книжги про это есть мож подскажешь авторов и названий парочку а то научиться хочу а в нете сложно
                                          |DC|*Magnum*, книжек не видел. Стандарт USB можно за книжку считать, только вот под конкретную ОС нет ничего, зато много по самой шине.

                                          В DDK XP есть несколько примеров по работе с USB, например usbview. Ещё посмотри здесь: http://junglewin.narod.ru/usb.html#ch3

                                          Есть ещё вариант работать с USB в режиме эмуляции COM-порта. Много информации можно найти на http://www.lvr.com/usb.htm
                                            EL[michlen], спасибо за эту ссылку http://junglewin.narod.ru/usb.html#ch3 давно такую искал! прога на с++ БИДЛЕРЕ это хороше тока вот я че вмчетал
                                            ExpandedWrap disabled
                                              Для начала рассмотрим аппаратную реализацию на примере популярного (в недавнем прошлом) чипсета i815. Обслуживанием всех устройств ввода/вывода в этом чипсете занимается специализированный контроллер - ICH (I/O Controller Hub) - 82801BA. Чтобы перечислить все его функции не хватит листа. Нас будет интересовать тот факт, что в состав этой микросхемы входит в том числе два независимых USB контроллера, каждый из которых имеет по два порта. Контроллеры поддерживают скорость передачи 12Мб/c (т.е USB 1.1). Каждый контроллер имеет в диапазоне ввода/вывода набор портов, через которые ими можно управлять.

                                            тута сказано какие устройства надо ЮЗАТЬ а я чето не логонаю или это ваше не то?? и как мне управлять чемто с компа или уже есть готовое устройство я мало че понимаю по этому много глупых вопросов с моей стороны!
                                            Сообщение отредактировано: |DC|*Magnum* -
                                              Цитата |DC|*Magnum* @
                                              на каком языке тама прогу пишут на си какомто а на каком??
                                              На Си и пишут, на Виндовом ;) Компилировать можно в MSVC и/или в DDK.

                                              Примеры по USB см. в DDK.

                                              Добавлено
                                              Цитата |DC|*Magnum* @
                                              тута сказано какие устройства надо ЮЗАТЬ а я чето не логонаю или это ваше не то?? и как мне управлять чемто с компа или уже есть готовое устройство я мало че понимаю по этому много глупых вопросов с моей стороны!
                                              Там просто пример, можно использовать любое своё устройство.
                                                EL[michlen], что такое DDK. я же незнаю! как понять любое свое устройство через что мне его подсоединить?
                                                Сообщение отредактировано: |DC|*Magnum* -
                                                  Цитата |DC|*Magnum* @
                                                  как понять любое свое устройство через что мне его подсоединить?
                                                  При подсоединении к компьютеру, Windows автоматически его находит. После чего, устройству посылается запрос на его Vendor ID, Product ID и др. информацию (подробнее см. в спецификации USB 2.0) и оно устанавливается с использованием своего драйвера или стандартного драйвера Windows. Microsoft DDK - Driver Development Kit, поиск по форуму поможет.
                                                    EL[michlen], я имел ввиду самодельного устройство! например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать? надо же чтобы он понимал ЮСБ тоесть какойто микроконтроллер? так я ваше думаю?
                                                      EL[michlen], я имел ввиду самодельного устройство! например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать? надо же чтобы он понимал ЮСБ тоесть какойто микроконтроллер? так я ваше думаю?
                                                      и еще хотелось бы вопрос вот тута http://www.cqham.ru/pix.htm на схемме изображен программатор? самодельный? тоесть я собираю такую схемку делаю все по инструкции а контакты
                                                      TxD(2)
                                                      GND
                                                      cts(5)
                                                      DTR(20)
                                                      RTS(4)
                                                      указанные на схемме мне надо воткнуть в СОМ порт тока в нужный контакт и программатор готов?
                                                      Сообщение отредактировано: |DC|*Magnum* -
                                                        Цитата |DC|*Magnum* @
                                                        EL[michlen], я имел ввиду самодельного устройство! например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать? надо же чтобы он понимал ЮСБ тоесть какойто микроконтроллер? так я ваше думаю?
                                                        Можно сделать на микроконтроллере с аппаратной поддержкой USB (таких полно), либо реализовать работу с USB в программе микроконтроллера. В любом случае, почитай спецификацию - там есть ответы на множество вопросов.
                                                          Цитата EL[michlen] @
                                                          либо реализовать работу с USB в программе микроконтроллера
                                                          Это вряд ли. Покажи мне хоть один действительно микроконтроллер(монстры вроде TMS430 не в счет), который был бы способен обрабатывать потоки данных со скоростью хотя бы мегабит в секунду. Только аппаратный контроллер(встроенный или внешний)

                                                          Цитата |DC|*Magnum* @
                                                          например я собрал робота или что угодно и надо им управлять через ЮСБ как это сделать
                                                          Ты определись, что ты там собрал. Может USB тебе и ни к чему и обычного UART/RS-232/RS-485 будет достаточно? :) Инструмент должен подбираться под задачу, а не наоборот.
                                                            trainer, С помошью LTP можно управлять тока 8 приборами личто я больше не умею! а вот через ЮСБ можно управлять намного большим! а что это такое?
                                                            UART/RS-232/RS-485 тоже порты?? и есль ли готовые устройстра для работы с ЮСБ и как называются чтоб мне найти?


                                                            и еще хотелось бы вопрос вот тута http://www.cqham.ru/pix.htm на схемме изображен программатор? самодельный? тоесть я собираю такую схемку делаю все по инструкции а контакты
                                                            TxD(2)
                                                            GND
                                                            cts(5)
                                                            DTR(20)
                                                            RTS(4)
                                                            указанные на схемме мне надо воткнуть в СОМ порт тока в нужный контакт и программатор готов?
                                                            Сообщение отредактировано: |DC|*Magnum* -
                                                              Цитата |DC|*Magnum* @
                                                              С помошью LTP можно управлять тока 8 приборами личто я больше не умею!
                                                              если ты не умеешь управлять более чем восемью линиями через LPT у тебя вряд-ли получится управлять хоть чем-нибудь через USB. Работа с USB на порядок более сложная вещь чем работа с LPT.

                                                              Цитата |DC|*Magnum* @
                                                              на схемме изображен программатор?

                                                              Да, это программатор. Эта схема известна как jdm-программатор. С этим железом может работать такой софт как IC-Prog, PonyProg.

                                                              Цитата |DC|*Magnum* @
                                                              и есль ли готовые устройстра для работы с ЮСБ и как называются чтоб мне найти?


                                                              Я вот такую штуку присмотрел DLP-USB245M сам хочу ее по-пользовать но что-то руки никак не доходят. Если будешь ее юзать поделись впечатлениями plz..
                                                                Цитата trainer @
                                                                Это вряд ли.

                                                                trainer а ты загляни сюда ;)
                                                                  SomeOtherOne, а как прогать больше чем 8 линий на LPT?? ну я например могу подать на 8 ногу а могу на все 8 а как мне сделать если напряжение на 1 ноге то горит 1 светодиод а если напряжение на 1 и 2 одновременно то горит 2 светодиод,? это же тоже микро.... наверно надо?
                                                                  DLP-USB245M а это вешшь полезная я присматрюсь к ней
                                                                    trainer, http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm

                                                                    Добавлено
                                                                    Oops, SomeOtherOne уже дал похожий линк...
                                                                      EL[michlen], реальтно! но я так понимаю что 1 и 2 схеммы это одно и тоже да? ана 2 схемме микро процессор ведь его надо за програмировать сначало а как тама не указанно вроде! кстати есть ася?? так проше обшаться
                                                                      стучись ко мне 148846357
                                                                        Цитата |DC|*Magnum* @
                                                                        но я так понимаю что 1 и 2 схеммы это одно и тоже да?
                                                                        Ты о чём?
                                                                          EL[michlen], http://www.cesko.host.sk/IgorPlugUSB/IgorP...20(AVR)_eng.htm тута
                                                                          а ася есть так проще буит!
                                                                          Сообщение отредактировано: |DC|*Magnum* -
                                                                            Цитата |DC|*Magnum* @
                                                                            но я так понимаю что 1 и 2 схеммы это одно и тоже да
                                                                            Разница в том, что во второй используется аппаратный интерфейс SPI.
                                                                              а допустим у меня есть программа для управления 4 СВД на контроллере PIC 16c54 пойдет ли этаже программа на PIC 16c84??

                                                                              вот например в учебнике был приведен пример это йпроги
                                                                              ExpandedWrap disabled
                                                                                ;
                                                                                LED3    =   ra.3
                                                                                LED2    =   ra.2
                                                                                LED1    =   ra.1
                                                                                LED0    =   ra.0
                                                                                org               0
                                                                                ;
                                                                                    device pic16c54, xt_osc, wdt_off, protect_off
                                                                                    reset          start
                                                                                iniport  mov    ra,#FFh
                                                                                     mov            !ra,#F0h
                                                                                ;
                                                                                comled       clrb LED0
                                                                                                      setb LED0
                                                                                mov                       ra,#11110110b
                                                                                mov                       ra,#11111111b
                                                                                mov                       ra,#F0h
                                                                                ;
                                                                                 end

                                                                              тока я незнаю в какой проге ее писать ! ну я ее написал в файле 1111.ASM и попробовал открыть в программе MPASM нече не получилось пишет 14 ошибок ! мож кто знает где эту прогу писать и в чем откоывать или мож в ней ошибки!?
                                                                              Сообщение отредактировано: |DC|*Magnum* -
                                                                                Эта конструкция известна уже несколько лет. И, тем не менее, никакой революции она не произвела. Почему? Ведь, казалось бы, завел USB на свободные выводы микроконтроллера и порядок. И не надо возиться и платить за аппаратную поддержку USB. Ответ, как мне представляется, достаточно прост. Если вместе с этим устройством подключить другое с большим траффиком, то этот Igor... захлебнется в потоке данных. :) Сам по себе USB никому не нужен. Если только ради спортивного интереса. :)
                                                                                Цитата |DC|*Magnum* @
                                                                                есть программа для управления 4 СВД
                                                                                СВД - это "снайперская винтовка Драгунова"? :D Солидно работаешь! :D На поток поставил? :D
                                                                                Цитата |DC|*Magnum* @
                                                                                нече не получилось пишет 14 ошибок
                                                                                Ну так ошибки-то покажи. Или будем гадать? Тебе гадать на чем больше нравится? :)

                                                                                Цитата |DC|*Magnum* @
                                                                                mov !ra,#F0h
                                                                                Это явно неверно.
                                                                                  trainer, ну для его задач скорости достаточно. Никто же не говорит, что таким образом можно реализовать режимы Full-speed или High-speed - дешевле будет купить контроллер с аппаратной поддержкой USB-интерфейса. Но как вариант, такое возможно. Другое дело, чип практически целиком работает на обслуживание порта, так что не всегда такой способ подойдёт.
                                                                                    trainer, я хотел написать не СВД а СИД опечатался тоесть свето излучающий диод
                                                                                    блин написанно именно так в книжке! а какие ошибки не пишет я делал все вот по это инструкции http://www.cqham.ru/pix.htm и прогу написал не ту что там дана. а ту что выложил! ну а в моей книжке описанны некоторые програмы типа MPALC и другие, новот каком написанна эта прога и где ее юзать не сказанО!
                                                                                    а и вот еще че сказанно! я не заметил написанно
                                                                                    эта программа показыввает как управлять светодиодами подключенными к параллельуму порту PIC 16Cxx во воспользовался прогой MPLAB написала ошибки такие

                                                                                    Building 1111.ASM...

                                                                                    Command line: "C:\PROGRA~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F84 /q 1111.ASM"
                                                                                    Error[113] E:\PIC\MPASM\1111.ASM 2 : Symbol not previously defined (ra.3)
                                                                                    Error[113] E:\PIC\MPASM\1111.ASM 3 : Symbol not previously defined (ra.2)
                                                                                    Error[113] E:\PIC\MPASM\1111.ASM 4 : Symbol not previously defined (ra.1)
                                                                                    Error[113] E:\PIC\MPASM\1111.ASM 5 : Symbol not previously defined (ra.0)
                                                                                    Warning[205] E:\PIC\MPASM\1111.ASM 6 : Found directive in column 1. (org)
                                                                                    Warning[207] E:\PIC\MPASM\1111.ASM 8 : Found label after column 1. (device)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 8 : Illegal opcode (pic16c54)
                                                                                    Warning[207] E:\PIC\MPASM\1111.ASM 9 : Found label after column 1. (reset)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 9 : Illegal opcode (start)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 10 : Illegal opcode (mov)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 13 : Illegal opcode (clrb)
                                                                                    Warning[207] E:\PIC\MPASM\1111.ASM 14 : Found label after column 1. (setb)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 14 : Illegal opcode (LED0)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 15 : Illegal opcode (ra)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 16 : Illegal opcode (ra)
                                                                                    Error[122] E:\PIC\MPASM\1111.ASM 17 : Illegal opcode (ra)

                                                                                    MPLAB is unable to find output file "1111.hex". This may be due to a compile, assemble, or link process failure.
                                                                                    Сообщение отредактировано: |DC|*Magnum* -
                                                                                      ты откуда этот пример взял
                                                                                      в микрочиповском ассемблере нет комады mov (если это макрос, то его надо где то определить), ra тоже надо определить
                                                                                        potor, блин написан в книжке! странно конечно но это самый первый листинг и самая первая программа!

                                                                                        Добавлено
                                                                                        potor, слух а ты не подкинешь сайтик с элементарной программой для PIC ну совсем простенькой . желательно с подобрвм описанием действий а то везде все сложное для меня! я просто хочу научиться прогать ПИКИ
                                                                                          сюда сходи:
                                                                                          http://pic16f84.narod.ru/nach.htm
                                                                                            писать программку для тебя некогда
                                                                                            к тому же здесь на форуме обсуждались разные примеры для пиков поищи
                                                                                            а вообще вот эту доку скачай, там все очень подробно расписано
                                                                                              SomeOtherOne,
                                                                                              potor, спасибо! вот это какраз то что надо начиинаюшему лузеру в деле PIC!
                                                                                              вот тока у мен есть вопрос!
                                                                                              PIC16F84 и PIC16С84; они одинаковы? или в чем их различия? просто у меня есть схемма программатора на PIC16С84 проше не придумать а вот под PIC16F84 такогоже простого не видел! мож подкините?
                                                                                                вот выкладываю схемку программатора на PIC16С84; :blink:
                                                                                                Прикреплённая картинка
                                                                                                Прикреплённая картинка
                                                                                                  Цитата

                                                                                                  PIC16F84 и PIC16С84; они одинаковы?

                                                                                                  они различаются только типом памяти
                                                                                                  PIC16F84 с флешью, многократно программируемый
                                                                                                  PIC16C84 с епромом, однократно программируемый

                                                                                                  приведенная тобой схема смущает номерами контактов разъема
                                                                                                    potor, вот мпасибо! я незнаешь эта схемка программатора будет работать с PIC16F84 ?? и ваше она рабочая? а то я сложный программатор не соберу! или если знаешь программаторы на PIC16F84 подкинь линку! ;)
                                                                                                    Сообщение отредактировано: |DC|*Magnum* -
                                                                                                      ну вот например простенький программатор
                                                                                                      только не спрашивай меня как развести плату и тп:)
                                                                                                      на самом деле подобных схем в инете до дури
                                                                                                      Прикреплённый файлПрикреплённый файлprog_pic.zip (88.36 Кбайт, скачиваний: 168)
                                                                                                        potor, спасиб ну как платты разводиитьь я знаю в крайнем случае макет возьму!

                                                                                                        Добавлено
                                                                                                        potor, блин ну она сложная для меня я такую не соберу! ну попробую спасиб
                                                                                                          MНЕ НУЖНО СОСТАВИТЬ ПРОГРАММУ ДЛЯ МИКРОКОНТРОЛЛЕРА PIC16F 628 КОТОРАЯ ИЗМЕРЯЕТ ДЛИТЕЛЬНОСТЬ МЕЖДУ ИМПУЛЬСАМИ НА ВХОДЕ 0 ПОРТА А И ПРЕОБРАЗУЕТ ЕЕ В ПРОПОРЦИОНАЛЬНУЮ ШИРИНУ ИМПУЛЬСА НА ВЫХОДЕ МОДУЛЯ ШИМ НЕСУЩАЯ ЧАСТОТА 1 кГЦ
                                                                                                          ПОМОГИТЕ МНЕ ПОЖАЛУЙСТА БО У МЕНЯ УМА НЕ ХВАТАЕТ :wall:
                                                                                                            Писать программу лениво, да и некогда
                                                                                                            но я отвечу на конкретные вопросы, если конечно ты их сформулируешь
                                                                                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                                            0 пользователей:


                                                                                                            Рейтинг@Mail.ru
                                                                                                            [ Script execution time: 0,1515 ]   [ 16 queries used ]   [ Generated: 23.04.24, 16:13 GMT ]