Меню English Ukrainian російська Головна

Безкоштовна технічна бібліотека для любителів та професіоналів Безкоштовна технічна бібліотека


Що таке PIC? Енциклопедія радіоелектроніки та електротехніки. Енциклопедія радіоелектроніки та електротехніки

Безкоштовна технічна бібліотека

Енциклопедія радіоелектроніки та електротехніки / Мікроконтролери

Коментарі до статтіКоментарі до статті

Вступ. PIC16CXX - це 8-розрядні мікроконтролери з RISC архітектурою, що виробляються фірмою Microchip Technology. Це сімейство мікроконтролерів відрізняється низькою ціною, низьким енергоспоживанням і високою швидкістю.

Мікроконтролери мають вбудоване ЕППЗУ програми, ОЗУ даних і випускаються в 18 і 28 вивідних корпусах.

PIC OTP - це однократно програмовані користувачем контролери, призначені для повністю відтестованих і закінчених виробів, в яких не буде відбуватися подальших змін коду. Ці контроллери випускаються в дешевих пластикових корпусах з попередньо заданим типом зовнішнього генератора - кварцевим або RC.

Для налагодження програм і макетування випускається варіант контролерів з ультрафіолетовим стиранням. Ці контрольи допускають велику кількість циклів запису / стирання і мають дуже малий час стирання - зазвичай 1-2 хвилини.

Однак ціна таких контрольників істотно вище, ніж однократно програмованих, тому їх невигідно встановлювати в серійну продукцію.

Для виробів, програма яких може змінюватися, або містить які-небудь змінні частини, таблиці, параметри калібрування, ключі і т.д., випускається електрично стирається і перепрограмований контроль PIC16C84. Він також містить електрично перепрограмоване ПЗУ даних. Саме такий контроль ми і будемо використовувати для експериментів.

Щоб отримати максимальну користь від цієї статті, вам знадобиться персональний комп'ютер, сумісний з IBM PC, програматор, що підключається до паралельного порту комп'ютера, мікросхема PIC16C84, макетна плата, 8 світлодіодів з резисто.

Ми будемо набирати маленькі шматочки програми для PIC, асемблювати їх, записувати в мікросхему і потім спостерігати результат на світлодіодах. Ми будемо використовувати основні мнемоніки MICROCHIP у цій статті, щоб Ви могли легше користуватися іншими прикладами застосування та лістингами, поміщеними в книзі "Embedded Control Handbook".

Сімейство PIC16CXX Ми почнемо детальний опис мікросхем сімейства PIC з тих особливостей і переваг, які виділяють ці мікроконтролери серед інших. Для застосувань, пов'язаних із захистом інформації, кожен PIC має біт секретності, який може бути запрограмований для заборони зчитування програмного коду і ПЗУ даних. При програмуванні спочатку записується програмний код, перевіряється на правильність запису, а потім встановлюється біт секретності. Якщо спробувати прочитати мікросхему з встановленим бітом секретності, то для PIC16C5X старші 8 розрядів коду будуть зчитуватися як 0, а молодші 4 розряди будуть скрембовані 12 розрядів команди. Для PIC16C84 аналогічно 7 старших розрядів будуть зчитуватися нулями, а 7 молодших розрядів будуть представляти скрембовані 14 розрядів команди. Електрично перепрограмоване ПЗУ даних PIC16C84 при установці біта захисту не може бути раховано. На малюнку 1 представлені всі випускаються в даний час мікроконтролери і дано їх короткі характеристики. (Рис на стор 2-1) Мікроконтролери сімейства PIC мають дуже ефективну систему команд, що складається всього з 35 інструкцій. Всі інструкції виконуються за один цикл, за винятком умовних переходів і команд, що змінюють програмний лічильник, які виконуються за 2 цикли. Один цикл виконання інструкції складається з 4 періодів тактової частоти. Таким чином, при частоті 4 МГц, час виконання інструкції становить 1 мксек. Кожна інструкція складається з 14 біт, що діляться на код операції і операцій (можлива маніпуляція з реєстрами, осередками пам'яті та безпосередніми даними). Система команд мікроконтролерів PIC16CXX представлена ​​на малюнку 2. (таблиця 7.2 на стор 2-569) Висока швидкість виконання команд в PIC досягається за рахунок використання двошинної Гарвардської архітектури замість традиційної одношинної Фон-H. Гарвардська архітектура грунтується на наборі реєстрів з розділеними шинами і адресним простором для команд і для даних. Hабоp регістрів означає, що всі програмні об'єкти, такі як порти вводу / виводу, комірки пам'яті і таймер, є фізично реалізовані апаратні регістри.

Пам'ять даних (ОЗУ) для PIC16CXX має розрядність 8 біт, пам'ять програм (ППЗУ) має розрядність 12 біт для PIC16C5X і 14 біт для PIC16CXX. Використання Гарвардської архітектури дозволяє досягти високої швидкості виконання бітових, байтових і регістрових операцій. Крім того, Гарвадська архітектура допускає конвеєрне виконання інструкцій, коли одночасно виконується поточна інструкція і зчитується наступна. У традиційній же Фон-Hеймановской архітектурі команди і дані передаються через одну шину, що розділяється або мультиплексується, тим самим обмежуючи можливості конвеєризації. На малюнку 3 показана блок-схема двошинної структури PIC16CXX. (рис B на стор 2-536) Як Ви можете бачити, внутрішні фізичні і логічні компоненти, з яких складається PIC16CXX аналогічні будь-якому іншому мікроконтролеру, з яким Ви могли працювати до цих пір. Тому писати програми для PIC не складніше, ніж для будь-якого іншого процесу. Логіка, і лише логіка...

Звичайно, Гарвардська архітектура і велика розрядність команди дозволяють зробити код для PIC значно більш компактним, ніж для інших мікроконтролерів і істотно підвищити швидкість виконання програм.

HАБІР РЕЄСТРІВ PIC Всі програмні об'єкти, з якими може працювати PIC, є фізичними реєстрами. Щоб зрозуміти, як працює PIC, потрібно розібратися з тим, які реєстри у нього існують і як з кожним з них працювати. На малюнку 4 показані всі реєстри PIC16C84. (Рис 3.7.1 на стор.

2-541) Hачнем з набору операційних регістрів. Цей набір складається з регістру непрямої адресації (f0), регістру таймера/лічильника (f1), програмного лічильника (f2), регістру слова стану (f3), регістру вибору (f4) і регістру вводу/.

Цілком необхідно, щоб Ви зрозуміли як використовувати ці реєстри, оскільки вони представляють основну частину програмно доступних об'єктів мікроконтролера. Оскільки нам в основному потрібно зрозуміти, "як керувати", а не "як це робиться всередині", ми включили дуже прості приклади, що показують можливі способи використання кожного регістра.

f0...РЕЄСТР КОСВЕHHОЙ АДРЕСАЦІЇ IND0 Регістр непрямої адресації f0 фізично не існує. Він використовує реєстр вибору f4 для непрямої виборки одного з 64 можливих реєстрів.

Будь-яка команда, що використовує f0, насправді звертається до реєстру даних, на який вказує f4.

f1...РЕЄСТР ТАЙМЕРА/ЛІЧИЛЬНИКА TMR0 Реєстр таймера/лічильника TMR0 може бути записаний і рахований як і будь-який інший реєстр. TMR0 може збільшуватися за зовнішнім сигналом, що подається на висновок RTCC, або за внутрішньою частотою, що відповідає частоті команд.

Основне застосування таймера/лічильника - підрахунок числа зовнішніх подій і вимір часу. Сигнал від зовнішнього або внутрішнього джерела також може бути попередньо поділений за допомогою вбудованого в PIC програмованого дільника.

f2...ПРОГРАМНИЙ ЛІЧИЛЬНИК PCL Програмний лічильник (PC) використовується для генерації послідовності адрес осередків ПЗУ програми, що містять 14-розрядні команди. PC має розрядність 13 біт, що дозволяє прямо адресувати 8Кх14 осередків ПЗУ. Для PIC16C84 однак, тільки 1К осередків фізично доступно. Молодші 8 розрядів PC можуть бути записані і лічені через регістр f2, старші 5 розрядів завантажуються з регістра PCLATCH, що має адресу 0Ah.

f3...РЕЄСТР СЛОВА СТАНУ STATUS Регістр слова стану схожий на реєстр PSW, що існує в більшості мікропроцесорів. У ньому знаходяться біт переносу, десяткового переносу і нуля, а також біти режиму включення і біти сторінкової адресації.

f4...РЕЄСТР ВИБОРУ FSR Як було вже сказано, реєстр вибору FSR використовується разом з реєстром непрямої адресації f0 для непрямої виборки одного з 64 можливих реєстрів. Фізично задіяно 36 реєстрів ОЗУ користувача, розташованих по адресах 0Ch-2Fh і 15 службових реєстрів, розташованих по різних адресах.

f5, f6...РЕЄСТРИ ВВЕДЕННЯ/ВИСНОВКУ PORTA, PORTB Регістри f5 і f6 відповідають двом портам вводу/виводу, наявним у PIC16C84. Порт A має 5 розрядів PA4-PA0, які можуть бути індивідуально запрограмовані як входи або виходи за допомогою реєстру TRISA, що має адресу 85h. Порт B має 8 розрядів PB7-PB0 і програмується за допомогою реєстру TRISB, що має адресу 86h. Завдання 1 в розряді регістра TRIS програмує відповідний розряд порту як вхід. При читанні порту зчитується безпосередній стан виводу, при записі в порт запис відбувається в буферний реєстр.

f8, f9...РЕЄСТРИ ЕППЗУ EEDATA, EEADR PIC16C84 має вбудоване електрично перепрограмоване ПЗУ розміром 64 байта, яке може бути зчитане і записано за допомогою реєстру даних EEDATA і рег. Запис нового байта триває близько 10 мсек і керується вбудованим таймером. Керування записом і зчитуванням здійснюється через регістр EECON1, що має адресу 88h. Для додаткового контролю за записом служить реєстр EECON2, що має адресу 89h.

РЕЄСТРИ ЗАГАЛЬНОГО ЗАХОДЖЕННЯ Регістри загального призначення являють собою статичне ОЗУ, розташоване по адресах 0Ch-2Fh. Усього в PIC16C84 можна використовувати 36 осередків ОЗУ.

СПЕЦІАЛЬНІ РЕЄСТРИ W, INTCON, OPTION У завершення розглянемо спеціальні реєстри PIC. До них відносяться робочий реєстр W, що використовується в більшості команд як реєстр акумулятора і реєстри INTCON і OPTION. Регістр переривань INTCON (адреса 0Bh) служить для управління режимами переривання і містить біти дозволу переривань від різних джерел і прапори переривань. Регістр режимів OPTION (адреса 81h) служить для завдання джерел сигналу для попереднього дільника та таймера/лічильника, а також для завдання коефіцієнта поділу попереднього дільника, активного фронту сигналу для RTCC і входу переривання. Крім того за допомогою реєстру OPTION можуть бути включені навантажувальні резистори для розрядів порту B, запрограмованих як входи.

СТОРОЖОВИЙ ТАЙМЕР WDT Сторожовий таймер WDT призначений для запобігання катастрофічних наслідків від випадкових збоїв програми. Він також може бути використаний в додатках, пов'язаних з рахунком часу, наприклад, в детекторі пропущених імпульсів. Ідея використання сторожового таймера полягає в регулярному його скиданні під управлінням програми або зовнішнього впливу до того, як закінчиться його витримка часу і не відбудеться скидання процесу. Якщо програма працює нормально, то команда скиду сторожового таймера CLRWDT повинна регулярно виконуватися, перешкоджаючи процесор від скидання. Якщо ж мікропроцесор випадково вийшов за межі програми (наприклад, від сильної перешкоди по ланцюгу живлення) або зациклився на якій-небудь ділянці програми, команда скидання сторожового таймера швидше за все не буде виконана протягом достатнього часу. , що ініціалізує всі реєстри і приводить систему в робочий стан.

Сторожовий таймер в PIC16C84 не вимагає будь-яких зовнішніх компонентів і працює на вбудованому RC генераторі, причому генерація не припиняється навіть у разі відсутності тактової частоти процесора. Типовий період сторожового таймера 18 мсек. Можна підключити попередній дільник на сторожовий таймер і збільшити його період аж до 2 сек.

Ще однією функцією сторожового таймера служить включення процесора з режиму зниженого енергоспоживання, в який процесор переводиться командою SLEEP. У цьому режимі PIC16C84 потребує дуже малий струм - близько 1 мкА. Перейти з цього режиму в робочий режим можна або за зовнішньою подією натискання кнопки, використання датчика, або за сторожовим таймером.

ТАКТОВИЙ ГЕHЕРАТОР Для мікроконтролерів сімейства PIC можливе використання чотирьох типів тактового генератора: XT кварцевий резонатор HS високочастотний кварцевий резонатор LP у процесі програмування мікросхеми. У разі завдання варіантів XT, HS і LP до мікросхеми підключається кварцевий або керамічний резонатор або зовнішній джерело тактової частоти, а у випадку завдання варіанта RC - резистор і конденсатор. Звичайно, керамічний і, особливо, кварцевий резонатор значно точніше і стабільніше, але якщо висока точність відліку часу не потрібна, використання RC генератора може зменшити вартість і габарити пристрою.

СХЕМА СКИДАННЯ Мікроконтролери сімейства PIC використовують внутрішню схему скидання по включенню живлення в поєднанні з таймером запуску генератора, що дозволяє в більшості ситуацій обійтися без традиційного резистора і конденсатора.

Досить просто підключити вхід MCLR до джерела живлення. Якщо при включенні живлення можливі імпульсні перешкоди або викиди, то краще використовувати послідовний резістор 100-300 Ом. Якщо харчування наростає дуже повільно (повільніше, ніж за 70 мсек), або Ви працюєте на дуже низьких тактових частотах, то необхідно використовувати традиційну схему скидання з резистора і конденсатора.

ВІД ТЕОРІЇ - ДО ПРАКТИКИ...

Ми вкратце познайомилися з основними елементами, з яких складаються мікроконтролери сімейства PIC. Тепер перейдемо до практичних вправ.

Ми будемо писати короткі програми, асемблювати їх, записувати в мікросхему і дивитися, що вийшло.

Для цього нам знадобляться такі речі: - мікросхема PIC16C84; - асемблеp MPALC; - програматор PROPIC; - Джерело живлення постійного або перемінного струму 18-36 В; - макетна плата з пристроєм індикації.

Принципова схема пристрою індикації, яке ми будемо використовувати для демонстрації роботи основних команд PIC16C84, приведена на малюнку 5. (треба малювати) Як Ви можете бачити, пристрій складається просто з 8 світлодіодів з струмоограничующими. Кожен висновок мікроконтролерів сімейства PIC може безпосередньо управляти світлодіодом без додаткових підсилювачів.

Що таке PIC?

Hачнем з опису базового коду, який буде використаний в наших прикладах. Коли Ви починаєте писати код для Вашого проекту, секція заголовка (весь код до рядка з виразом ORG 0) повинна враховувати особливості Вашого застосування. У секції заголовка визначаються логічні імена для всіх використовуваних у проекті ресурсів - портів, бітових і байтових змінних і реєстрів. Hаш заголовок також встановлює порти введення/виводу, так що всі розряди портів A і B будуть встановлені як виходи після виконання наступних команд: MOVLW INITA виконувати програму з адреси 16h. Базовий код показано на малюнку 6. (треба малювати) Щось таке: ; Приклад базового коду для демонстраційної програми; LIST P=16C84, E=2; ; Секція заголовка; ; опис операційних реєстрів TMR0 EQU 01h PC EQU 02h STATUS EQU 03h FSR EQU 04h; регістри введення/виводу CNTRLPORT EQU 05h DATAPORT EQU 06h ; осередки ОЗУ SCRATCH EQU 0Ch DIGIT EQU 0Dh; біти регістра STATUS C EQU 0h DC EQU 1h Z EQU 2h PD EQU 3h TO EQU 4h RP EQU 5h; керуючі регістри TRISA EQU 85h TRISB EQU 86h ; слова ініціалізації для портів введення/виведення INITA EQU B'00000000' INITB EQU B'00000000' ; ; Робоча секція; ; початок виконуваного коду ORG 0 GOTO BEGIN; ORG 100h BEGIN MOVLW INIT MOVWF TRISA MOVLW INIT B MOVWF TRISB; ; Сюди вставте код прикладу; END; При необхідності повертайтеся до малюнку 4, поки ми обговорюватимемо базовий код. По-перше, всі рядки, що починаються зі знака ";", сприймаються асемблером як коментарі. Перейдемо до вираження TMR0. Ми задали асемблеру, що кожен раз, коли зустрінеться слово TMR0, необхідно підставити значення 01h (01 шістнадцяткове). Слово "EQU" означає рівність. Таким чином, ми надали TMR0 значення 1h. Як видно з малюнку 4, реєстр TMR0 дійсно має адресу 1h. Ви можете використовувати 01h кожен раз, коли ви хочете адресувати реєстр TMR0, але це буде значно складніше налагоджувати, оскільки Ви повинні будете весь час пам'ятати, що 01h означає RTCC. У Вас можуть існувати і дані, рівні 01h. Використання символьних імен усуває двозначність і дозволяє полегшити читання вихідного тексту. Ви також можете бачити вирази для визначення реєстрів PC, STATUS і FSR. Ім'я PC відповідає регістру з адресою 02h, ім'я STATUS відповідає реєстру з адресою 03h, ім'я FSR - реєстру з адресою 04h і так далі. Ми також задали імена для портів введення/виводу, CNTRLPORT (05h) та DATAPORT (06h). Осередки ОЗП також можуть мати імена. Ми вибрали імена "SCRATCH" для комірки з адресою 0Ch і "DIGIT" для комірки з адресою 0Dh. Якщо Ви читаєте до кінця цей текст, то побачите, що ми ніде не використовуємо PC безпосередньо, хоча це ім'я і визначено. У цьому немає помилки - можна визначити імена і потім не використовувати їх, хоча, звичайно, не можна використовувати ім'я, якщо воно не було попередньо визначено. Не дуже турбуйтеся за це - робота асемблера як раз і полягає в перевірці тексту на дотримання всіх правил, і Ви отримаєте повідомлення про помилки, якщо щось не буде відповідати. Ви можете не тільки іменувати реєстри, але і окремі біти всередині реєстрів. Зверніть увагу на секцію, що задає регістр STATUS. На малюнку 7 показано, з чого складається реєстр STATUS. (рис 3.9.1 на с 2-544) Символу С надано значення 0h, оскільки C або CARRY, це нульовий біт слова стану STATUS. Щоразу, коли ми повинні будемо перевірити біт CARRY (біт 0), ми будемо користуватися попередньо визначеним символом "C". Щоразу, коли ми захочемо звернутися до біта 2, або біта ZERO, ми будемо використовувати символ "Z" замість 02h. Ви можете визначити повну структуру бітів регістра, навіть якщо Ви потім не всі з них будете використовувати. Тепер нам стало ясно, як описуються реєстри, і ми можемо перейти до виконуваного коду. Перед тим, як почати виконуваний код, ми повинні задати вираз ORG 0. Це покажчик для асемблера, що код, що йде за цим вираженням, починається з нульового адреси ЕППЗУ. Вираз "ORG" використовується для розміщення сегментів коду по різних адресах в межах розмірів ЕППЗУ. Ще одне вираз ORG знаходиться перед позначкою BEGIN, що має адресу 100h, як задано виразом ORG 100h. Виконуваний код повинен закінчуватися директивою END, що означає, що за цією директивою відсутні команди, що виконуються. При включенні живлення PIC16C84 переходить на адресу 000h. Перша інструкція, яка буде виконана процесором, це команда GOTO BEGIN, яка передасть управління на адресу 100h і подальша робота триватиме з цієї адреси. BEGIN - це ім'я мітки, що вибирається користувачем (мітки завжди повинні починатися з першої позиції рядка), яке асемблер використовує в якості адресного посилання. У процесі роботи асемблер визначає розташування мітки BEGIN і запам'ятовує, що якщо це ім'я буде зустрінуто ще раз, замість нього буде підставлений адресу мітки. Команди CALL та GOTO використовують мітки для посилань у вихідному тексті. Тепер поглянемо на наступні команди, що виконуються процесором. Команда MOVLW INITA завантажує в робочий реєстр W значення, присвоєне імені INITA. Це значення задано в заголовку і рівно B'00000000', тобто 00h. Символи B' означають, що дані задані у двійковому форматі. Можна було б написати в цьому ж місці 0 (десятковий) або 0h (шістнадцятковий) і отримати той же результат. Двійкове представлення зручніше використовувати в тих випадках, коли передбачається операція з бітами в реєстрі. Наступна команда MOVWF TRISA завантажує значення з робочого реєстру W в реєстр управління конфігурацією порту A TRISA. Завдання 0 в розряді цього регістра визначає, що відповідний розряд порту A є виходом. У нашому випадку всі розряди порту A встановлюються виходами. Зверніть увагу, що порт A має тільки 5 розрядів, і старші 3 біта значення, що записується в реєстр TRISA, також має 5 розрядів, не використовуються. Якби ми захотіли, наприклад, встановити молодший розряд порту A як вхід, ми б задали в секції опису реєстрів значення INITA рівним B'00000001'. Якщо по ходу роботи програми нам потрібно перевизначати призначення окремих розрядів портів, наприклад, при двонаправленій передачі, то найзручніше задати всі необхідні слова конфігурації в секції опису, як ми зробили для INITA і INIT. Наступні дві команди MOVLW INITB і MOVWF TRISB визначають конфігурацію порту B. Ми могли б заощадити і не писати команду MOVLW INITB, оскільки в нашому випадку INITB також дорівнює 0h. Однак ми не стали цього робити, оскільки це може призвести до важких помилок, якщо згодом нам потрібно змінити призначення якого-небудь одного розряду. Замість того, щоб змінити тільки один розряд в одному порту, зміняться два розряди з однаковим номером у двох портах. Тому поки програма не закінчена, таку економію робити не бажано, хоча в кінці, на етапі оптимізації коду, такі повтори можна видаляти. Що ж ми вже встигли зробити? 1. За допомогою рядків з EQU ми вказали асемблеру, які символьні імена ми збираємося використовувати. 2. Ми встановили вектор скидання на адресі 000h. 3. Ми встановили початкову адресу виконання програми з мітки BEGIN на адресі 100h. 4. Ми сконфігурували всі розряди портів A і B як виходи. Тепер ми можемо вставляти код прикладу між заголовком і закінченням нашого базового коду замість закоментованого рядка "Сюди вставте код прикладу". Ми будемо замінювати цей рядок на реальні команди, асемблювати отриману програму, записувати її в мікросхему, переставляти мікросхему на макетну плату з пристроєм індикації і дивитися, що вийшло. ПЕРША ПРОГРАМА Для першої програми нам вистачить всього трьох команд: MOVLW k MOVWF f GOTO k Ми вже використовували ці команди в заголовку нашого базового коду. Команда MOVLW завантажує байтовий літерал або константу в робочий реєстр W. Наступна команда MOVWF пересилає байт з робочого реєстру W в заданий реєстр f. Команда GOTO передає управління на адресу k. Наступна програма записує в робочий реєстр W значення 01010101 і потім видає його вміст на порт B. Після запуску цієї програми Ви побачите світіння чотирьох світлодіодів. MOVLW B'01010101 '; завантажити 01010101 в реєстр W MOVWF DATAPORT; записати W в порт B (DATAPORT) GOTO $; зациклитися назавжди Директива асемблера "$" означає поточне значення програмного лічильника. Тому команда GOTO$ означає перехід туди, де ми зараз перебуваємо. Такий цикл нескінченний, оскільки не існує способу (крім переривання) вийти з нього. Команда GOTO $ часто застосовується для зупинення коду при налагодженні. АСЕМБЛІРУВАННЯ Ми будемо використовувати макроассемблеp MPALC, оскільки він поширюється фірмою MICROCHIP вільно, і містить усі необхідні нам можливості. Якщо Ви віддаєте перевагу використати інший асемблер, скористайтеся його описом для асемблювання нашої програми. Командна рядок для запуску макроассемблера MPALC дуже проста: MPALC <вихідний_текст> [опції] де <вихідний_текст> - ім'я файлу, що містить вихідний текст, який повинен бути асембльований, а опцій може бути досить багато. Повний опис опцій видається асемблеpом по опції /? Hа перших часах нам не потрібно вказувати жодної опції. Єдине, що нам ще потрібно зробити, це вказати тип процесора, для якого написана наша програма і тип помилок, які повинен видавати асемблер. Це робиться за допомогою директиви асемблера LIST (рис. 6). За замовчуванням розширення файлу вихідного тексту - .ASM. Інше розширення має бути явно вказано. Отже, візьміть файл EXAMPLE.ASM, що містить текст, наведений на малюнку 6, і запустіть асемблер: MPALC EXAMPLE У результаті роботи асемблера створюються файли з наступними розширеннями: * OBJ об'єктний файл * LST файл листингу * Об'єктний файл створюється в 16-річному форматі і містить код, який повинен бути записаний в мікросхему. Файл лістингу містить повний лістинг програми разом із завантажувальним кодом. У файл помилок і попереджень записуються всі помилки і попередження, що виникають у процесі асемблювання. Вони також присутні і у файлі лістингу. Таблиця символьних позначок, що записується в символьний файл, призначена для подальшої роботи з відладчиком. Після обробки нашої програми асемблер повинен був видати повідомлення "No errors were found by the assembler", що означає, що помилок виявлено не було. Файл помилок не повинен створюватися. Якщо у Вас асемблеp видав будь-які повідомлення про помилки, або не створилися файли EXAMPLE.OBJ, EXAMPLE.LST і EXAMPLE.SYM, перевірте ще раз, чи все правильно Ви зробили. ПРОГРАМУВАННЯ Тепер Ви маєте об'єктний файл EXAMPLE.OBJ, який повинен бути записаний в мікросхему. Запис здійснюється за допомогою програми і програми PROPIC. Командна рядок для запуску програми PROPIC аналогічна рядку для запуску асемблера: PROPIC <об'єктний_файл> [опції] де <об'єктний_файл> - ім'я об'єктного файлу, створеного асемблером, а опції визначають режим запису в мікро. Список опцій видається за опцією /? Як і у випадку з асемблером, на перших порах нам не потрібно вказувати жодної опції. Візьміть програматор, підключіть його кабель до роз'єму принтерного порту (до першого принтерного порту, якщо на Вашій машині встановлено 2 або 3 принтерних порту).

Що таке PIC? Що таке PIC?

Візьміть джерело живлення 18...36 У постійного або змінного струму, здатний забезпечити струм до 100 мА і підключіть його до програмного забезпечення. Приготуйте мікросхему PIC16C84, але поки не вставляйте її в панельку програматора. Тепер можна запустити програму:

PROPIC EXAMPLE { тут потрібно вставити про те, як працює програма програматора. } Тепер Ви маєте запрограмовану мікросхему і можна подивитися, як вона буде працювати. ОПИТУВАННЯ

Візьміть макетну плату і зберіть на ній схему, наведену на малюнку 5. Критичних деталей у цій схемі немає. Всі розистори можуть мати відхилення від номіналу +-30%, світлодіоди - будь-які з номінальним струмом не більше 10 мА. Для встановлення мікросхеми PIC16C84 використовуйте панельку. Для живлення нашої схеми можна використовувати той же блок живлення, яким Ви користувалися при програмуванні мікросхеми. Можна використовувати і лабораторний блок живлення на 5 В. У цьому випадку стабілізатор КР142ЕH5А, діодний місток і електролітичний конденсатор не потрібні, а напруження 5 подається в точку 2 на схемі.

Після того, як схема зібрана, ретельно перевірте, що все зібрано правильно, світлодіоди встановлені в правильній полярності, харчування на мікросхему підходить до потрібних ніжок і в правильній полярності. Візьміть запрограмовану мікросхему, вставте її в панельку на макетній платі і увімкніть живлення. Повинні загорітися 4 світлодіоди (через один). Ваша перша програма працює! HАБІР КОМАHД PIC

Тепер, коли Ви навчилися асемблювати програму, записувати її в мікросхему і спробувати на макетній платі, ми можемо перейти до опису всього набору команд мікроконтролерів сімейства PIC. Ми, як і раніше, будемо орієнтуватися на PIC16C84, хоча майже все, про що ми будемо говорити, застосовно і до інших мікроконтролерів сімейства PIC. По ходу опису ми будемо складати короткі програми, щоб краще зрозуміти, як працюють ті чи інші команди. Ви можете підставляти ці програми в базовий код, асемблювати їх, записувати в мікросхему і, вставляючи мікросхему в макетну плату, дивитися, як це працює. Якщо ж у черговому пункті Вам буде все абсолютно ясно, Ви можете не спробувати його, а переходити відразу до наступного пункту. NOP

Hачнем наш опис з команди NOP. Подивитися результат виконання цієї команди важко, оскільки вона не робить нічого. Ця інструкція зазвичай використовується в циклах тимчасової затримки або для точного настроювання часу виконання певної ділянки програми. CLRW

Ця команда очищає робочий реєстр W. Додамо одну строчку в наш приклад і побачимо, що всі світлодіоди загоряться.

MOVLW B'01010101'; завантажити 01010101 в реєстр W

CLRW; очистити регістр W

MOVWF DATAPORT ;записати W в порт B (DATAPORT)

GOTO $ ;зациклитися назавжди CLRF f

CLRF робить для будь-якого реєстру те ж, що CLRW робить для робочого реєстру W. Наступна команда встановить порт B в 0h.

CLRF DATAPORT ;очистити порт B (DATAPORT) SUBWF f,d ADDWF f,d

Відняти робочий реєстр W з будь-якого реєстру f. Ця команда також встановлює ознаки CARRY, DIGIT CARRY і ZERO в реєстрі STATUS. Після виконання команди можна перевірити ці ознаки і визначити, чи є результат нульовим, позитивним або негативним. Символ d після коми означає адресу, куди буде поміщений результат виконання команди. Якщо d=0, то результат поміщається в робочий реєстр W, а якщо d=1, то результат записується у використаний в команді реєстр f.

У нашому прикладі в регістр SCRATCH завантажується значення 0FFh, а в регістр W значення 01h. Потім виконується команда SUBWF і результат відображається на світлодіодах.

MOVLW 0FFh ;завантажити 0FFh в реєстр W

MOVWF SCRATCH; завантажити вміст W в реєстр SCRATCH

MOVLW 01h; завантажити 01h в реєстр W

SUBWF SCRATCH,0 ;виконати віднімання Світлодіоди повинні відобразити 11111110, де 1 відповідає загашеному світлодіоду, а 0 - палаючого.

Команда ADDWF працює повністю аналогічно, додаючи робочий реєстр W до будь-якого реєстру f і встановлюючи ті ж ознаки. Наступний приклад демонструє роботу команди ADDWF.

MOVLW 0h; завантажити 0 в реєстр W

MOVWF SCRATCH; завантажити вміст W в реєстр SCRATCH

MOVLW 1h; завантажити 01h в реєстр W

ADDWF SCRATCH,0 ;виконати додавання Світлодіоди повинні відобразити 00000001.

Зверніть увагу, що перед значенням FFh у прикладі віднімання коштує "0". Символ "0" для асемблеpа означає, що це число, а не мітка. Якби символу 0 не було, то асемблеp почав би шукати мітку з ім'ям FFh, якою в цій програмі не існує і, відповідно, виникла б помилка. символ "h", наступний за значенням 0FF, означає, що значення задано у шістнадцятковому форматі. SUBLW k ADDLW k

Ці дві команди працюють досконало аналогічно вищеописаним, за тим винятком, що операція проводиться між робочим реєстром W і байтовою константою, заданою в команді. Команда SUBLW віднімає робочий реєстр W з константи k, а команда ADDLW додає робочий реєстр W до константи k. Ці команди також встановлюють ознаки CARRY, DIGIT CARRY та ZERO. Результат виконання команди поміщається в робочий реєстр W. Наступний приклад зменшить SCRATCH на 5.

MOVLW 0FFh ;завантажити 0FFh в реєстр W

MOVWF SCRATCH; завантажити вміст W в реєстр SCRATCH

SUBLW 05h ;відняти 5 з робочого реєстру

MOVWF SCRATCH ;завантажити новий вміст SCRATCH Світлодіоди повинні відобразити 11111010. DECF f,d INCF f,d

Команда DECF зменшує заданий регістр на 1, а INCF збільшує заданий регістр на 1. Ресультат може бути поміщений назад у заданий регістр (при d=1) або в робочий регістр W (при d=0). У результаті виконання цих команд може встановитися ознака ZERO в реєстрі STATUS. Ось приклад використання цих команд:

MOVLW 0FFh ;завантажити 0FFh в реєстр W

MOVWF SCRATCH; завантажити вміст W в реєстр SCRATCH

DECF SCRATCH,0 ;зменшити SCRATCH на 1

Цей приклад збільшить SCRATCH з 0 до 1.

CLRF SCRATCH ;очистити SCRATCH

INCF SCRATCH,0 ;збільшити SCRATCH на 1 IORWF f,d ANDWF f,d XORWF f,d

Ці три команди виконують логічні дії АБО, І і ВИКЛЮЧНЕ АБО. Операція логічного складання АБО найчастіше використовується для встановлення окремих бітів в реєстрах. Скидаються ці біти потім операцією логічного множення І. Коли над однаковими бітами виконується операція ВИКЛЮЧАЮЧЕ АБО, результат дорівнює 0. Тому операція ВИКЛЮЧАЮЧЕ АБО часто використовується для перевірки стану (встановлені або скинуті). Наступна процедура встановить біт 1 у порті B за допомогою команди IORWF:

CLRF DATAPORT; очистити порт B

MOVLW B'00000010' ;установити маску в реєстрі W

IORWF DATAPORT,1; встановити біти в порті B по масці W

GOTO $ ;зациклитися назавжди Світлодіоди повинні показати 00000010. А тепер скинемо 2 біти за допомогою команди ANDWF:

MOVLW B'11111111'; завантажити 0FFh в реєстр W

MOVWF DATAPORT; встановити всі біти в порті B

MOVLW B'00000101' ;установити маску в реєстрі W

ANDWF DATAPORT,1 ;очистити біти в порті B по масці W

GOTO $ ;зациклитися назавжди Світлодіоди повинні показати 00000101.

Припустимо, що ми використовували реєстр SCRATCH і хочемо знати, чи він дорівнює значенню 04h. Це зручна нагода використовувати команду XORWF:

MOVLW 04h; завантажити 04h в реєстр W

MOVWF SCRATCH; завантажити регістp W в SCRATCH

XORWF SCRATCH,0 ;перевірити рівність W і SCRATCH Оскільки SCRATCH і W рівні, результат виконання операції XORWF дорівнює нулю (всі світлодіоди горять). У реєстрі STATUS встановиться біт ZERO, який реальна програма потім може перевірити і обробити. IORLW k ANDLW k XORLW k

Ці три команди виконують ті ж дії, що і їх вищеописані аналоги, за тим винятком, що операція проводиться між робочим реєстром W і маскою, заданою в команді. Результат виконання команди поміщається в робочий реєстр W. Hапример:

MOVLW 0FFh ;завантажити 0FFh в реєстр W

ANDLW 040h ;залишити 6-й біт Світлодіоди покажуть 01000000.

MOVLW 10h; завантажити 10h в реєстр W

IORLW 09h; встановити 0-й і 3-й біти Світлодіоди покажуть 00011001.

MOVLW B'00100000'; завантажити 40h в реєстр W

XORLW B'11111111' ;проінвертувати W Світлодіоди покажуть 11011111. MOVF f,d

Ця команда в основному використовується для пересилання регістра в робочий регістр W (d = 0). Якщо ж встановити d = 1, то ця команда завантажить реєстр сам в себе, але при цьому біт ZERO в реєстрі STATUS встановиться відповідно до вмісту реєстру. Наприклад, ми хочемо завантажити в реєстр SCRATCH 0Fh, а потім завантажити реєстр SCRATCH в робочий реєстр W.

MOVLW 0Fh; завантажити 0Fh в робочий реєстр W

MOVWF SCRATCH; завантажити регістp W в SCRATCH

CLRW ;очистити W

MOVF SCRATCH,0 ;завантажити SCRATCH в регістр W Якщо в процесі виконання програми ми хочемо перевірити регістр SCRATCH на нуль, ми можемо виконати наступну команду:

MOVF SCRATCH,1 Біт ZERO регістру STATUS буде встановлений, якщо умова буде виконана (SCRATCH = 0h). COMF f,d

Ця команда інвертує будь-який заданий реєстр. При d = 0 результат заноситься в робочий реєстр W, а при d = 1 інвертується вміст заданого реєстру. В якості прикладу проінвертируємо значення 01010101:

MOVLW B'01010101'; завантажити 01010101 в реєстр W

MOVWF SCRATCH; завантажити регістp W в SCRATCH

COMF SCRATCH,0 ;інвеpтиpувати SCRATCH Світлодіоди покажуть 10101010. DECFSZ f,d INCFSZ f,d

Коли Ви придбаєте деякий досвід роботи з асемблером PIC, Ви будете використовувати ці команди дуже часто. При d=1 команда DECFSZ зменшує на одиницю, а INCFZ збільшує на одиницю заданий реєстр і пропускає наступну команду, якщо реєстр став рівним нулю. При d=0 результат записується в реєстр W і наступна команда пропускається, якщо робочий реєстр W став рівним нулю. Ці команди використовуються для формування тимчасових затримок, лічильників, циклів і т.д. Ось типовий приклад використання циклу: START

MOVLW 0FFh ;завантажити FFh в регістр W

MOVWF SCRATCH ;завантажити реєстр W в SCRATCH LOOP

DECFSZ SCRATCH,1 ;зменшувати SCRATCH на 1

GOTO LOOP ;і переходити назад, поки не стане = 0

MOVF DIGIT; завантажити реєстр DIGIT в W

MOVWF DATAPORT; вивести на світлодіоди

DECF DIGIT,1 ;зменшити регістp DIGIT на 1

GOTO START ;перейти на початок У результаті світлодіоди будуть блимати з різною частотою. Світлодіод молодшого розряду буде блимати найчастіше, а світлодіод старшого розряду найрідше. При тактовій частоті 4 МГц частота миготінь світлодіоду старшого розряду буде приблизно 8 Гц, а кожен наступний блиматиме вдвічі частіше. Тепер розберемося, як це у нас вийшло. Команда DECFSZ тут працює в циклі затримки, що складається з двох команд - DECFSZ і GOTO LOOP. Оскільки ми попередньо завантажили в реєстр SCRATCH значення 0FFh, цей цикл виконається 255 разів, поки SCRATCH не стане рівним нулю. При тактовій частоті 4 МГц це дає затримку 1 мксек/команду * 2 команди * 255 = 510 мксек. У реєстрі DIGIT ми попередньо нічого не записували, тому там могло знаходитися будь-яке значення, яке і виводиться на світлодіоди на першому проході. Потім регістр DIGIT зменшується на 1 і цикл повторюється спочатку. У результаті регістр DIGIT перебирає всі значення за 256 циклів, тобто. за приблизно за 130 мсек.

Той же код можна використовувати і з командою INCFSZ, замінивши завантажуване в реєстр SCRATCH значення з FFh на 0h. Світлодіоди будуть блимати так само і якщо замінити команду DECF на команду INCF. SWAPF f,d

Ця команда змінює місцями півбайти в будь-якому реєстрі. Як і для інших команд, при d=0 результат записується в робочий реєстр W, а при d=1 залишається в реєстрі. Ось простий приклад використання цієї команди:

MOVLW B'00001111 '; завантажити 0Fh в реєстр W

MOVWF SCRATCH; завантажити регістp W в SCRATCH

SWAPF SCRATCH,0; поміняти напівбайти Світлодіоди покажуть 11110000. RRF f,d RLF f,d

В асемблері PIC є дві команди зсуву - зсув вправо через біт CARRY будь-якого регістра RRF і зрушення вліво через біт CARRY будь-якого регістра RRF. Як і для інших команд, при d=0 результат зсуву записується в реєстр W, а при d=1 залишається в реєстрі. Інструкції зсуву використовуються для виконання операцій множення і поділу, для послідовної передачі даних і для інших цілей. У всіх випадках біт, що зсувається з 8-бітного реєстру, записується в біт CARRY в реєстрі STATUS, а біт CARRY записується в інший кінець реєстру, в залежності від напрямку зсуву. При зрушенні вліво RLF CARRY записується в молодший біт регістра, а при зрушенні право RRF CARRY записується в старший біт регістра.

CLRF STATUS; очистити регістр STATUS

MOVLW 0FFh ;завантажити 0FFh в реєстр W

MOVWF SCRATCH; завантажити регістp W в SCRATCH

RRF SCRATCH,0; зрушити вправо Світлодіоди повинні показати 01111111, оскільки CARRY завантажився в старший біт. Тепер зрушимо вліво:

CLRF STATUS; очистити регістр STATUS

MOVLW 0FFH ;завантажити 0FFh в регістр W

MOVWF SCRATCH; завантажити регістp W в SCRATCH

RLF SCRATCH,1 ;зрушити вліво Світлодіоди повинні показати 11111110. BCF f,b BSF f,b

Команди очищення біта BCF і установки біта BSF використовуються для роботи з окремими бітами в реєстрах. Параметр b означає номер біта, з яким проводиться операція, і може приймати значення від 0 до 7. Спробуємо включити світлодіод, використовуючи команду BCF:

MOVLW 0FFh ;завантажити 0FFh в реєстр W

MOVWF DATAPORT ;вимкнути світлодіоди

BCF DATAPORT,7; очистити біт 7 у порті B

GOTO $ ;зациклитися назавжди У результаті загориться світлодіод, відповідний біту 7. Згадайте, ми робили аналогічні речі за допомогою використання маски і команди ANDWF. Різниця в тому, що команди ANDWF і IORWF вимагають попереднього формування маски і зберігання її в якому-небудь реєстрі, але в той же час здатні одночасно встановити або очистити кілька біт. Команди ж BCF і BSF оперують тільки з одним бітом. Крім того, команди BCF і BSF не змінюють регістр стану STATUS, тому вони часто використовуються в тих випадках, коли не потрібно наступна перевірка регістру стану. BTFSC f,b BTFSS f,b

Команди умовних переходів BTFSC і BTFSS перевіряють стан заданого біта в будь-якому реєстрі і в залежності від результату пропускають чи ні наступну команду. Команда BTFSC пропускає команду, якщо заданий біт скинутий, а команда BTFSS - якщо встановлений. Ось простий приклад:

MOVLW 0FFh ;завантажити 0FFh в реєстр W

MOVWF DATAPORT ;вимкнути світлодіоди

MOVLW B'00000001'; завантажити 01h в реєстр W

MOVWF SCRATCH ;завантажити реєстр W в SCRATCH LOOP

BTFSS CNTRLPORT,0 ;перевірити біт 0 в CNTRLPORT

GOTO LOOP ;чекати, поки біт 0 не встановиться

BCF DATAPORT,7 ;включити світлодіод

GOTO $ ;зациклитися назавжди У цьому прикладі перевіряється розряд 0 порту A (висновок 17 мікросхеми) і, якщо цей висновок встановлений у високий рівень, включається світлодіод. Спробуйте замінити BTFSS на BTFSC у цьому прикладі. Світлодіод буде включатися, коли розряд 0 порту A встановиться в низький рівень.

Раніше ми згадували про можливість перевірки бітів стану в реєстрі STATUS. Це також робиться за допомогою команд BTFSS і BTFSC:

;Проверка біта CARRY

BTFSS STATUS,C ;якщо C встановлений, пропустити GOTO

GOTO WHERE_EVER ; Аналогічно перевіряється біт ZERO:

;Проверка біта ZERO

BTFSS STATUS,Z ;якщо Z встановлений, пропустити GOTO

GOTO WHERE_EVER ; Можна з упевненістю сказати, що Ви будете використовувати ці приклади дуже часто. CALL k RETURN

Ці дві команди призначені для роботи з підпрограмами. Команда CALL використовується для переходу на підпрограму по адресу, що задається в команді, а команда RETURN - для повернення з підпрограми. Обидві команди виконуються за 2 цикли. Адреса, на якій знаходилася команда CALL запам'ятовується в спеціально організованих реєстрах, званих стеком. Ці реєстри недоступні для звернень і використовуються тільки при викликах підпрограм і повернення. Глибина стеку, тобто. число спеціальних регістрів - 8. Тому з основної програми можна зробити не більше 8 вкладених викликів підпрограм. Після повернення з підпрограми виконання триває з наступної після CALL команди. Регістр W і реєстр STATUS при виклику підпрограми не зберігаються, тому, якщо необхідно, їх можна зберегти в окремих осередках пам'яті. Ось простий приклад використання підпрограми: START

BSF DATAPORT,7; вимкнути світлодіод

CALL TURNON ;викликати підпрограму

GOTO START ;перейти на початок TURNON

BCF DATAPORT,7 ;включити світлодіод

RETURN ;повернутися з підпрограми У результаті світлодіод буде блимати з частотою близько 150 кГц. RETLW k RETFIE

Існують ще дві команди, призначені для повернення з підпрограм. Команда RETLW повертає в робочому реєстрі W константу, задану в цій команді, а команда RETFIE дозволяє переривання. Команда RETLW часто використовується для створення таблиць значень. Нехай у робочому реєстрі W міститься зміщення від початку таблиці. Тоді отримати потрібний елемент можна наступною процедурою:

MOVLW 02h ;задати зсув

CALL SHOWSYM ;викликати підпрограму

MOVWF DATAPORT ;вивести елемент таблиці в порт B

GOTO $ ;зациклитися назавжди SHOWSYM

ADDWF PC ;обчислити зміщення у таблиці

RETLW 0AAh; 1-й елемент таблиці

RETLW 0BBh; 2-й елемент таблиці

RETLW 0CCh ;3-й елемент таблиці Світлодіоди повинні відобразити 10111011. СПЕЦІАЛЬНІ КОМАHДИ

Нам залишилося згадати про дві спеціальні команди - CLRWDT і SLEEP. Команда CLRWDT призначена для скидання сторожового таймера, призначення якого ми вже обговорювали. Ця команда повинна бути в таких ділянках програми, щоб час виконання програми між двома сусідніми командами CLRWDT не перевищував часу роботи сторожового таймера. Команда SLEEP призначена для перекладу процесора в режим зниженого енергоспоживання. Після виконання цієї команди тактовий генератор процесора вимикається і зворотно в робочий режим процесор можна перевести або по входу скидання, або по роботі сторожового таймера, або по перериванню. ВИСНОВОК

Ця стаття не претендує на повний опис можливостей мікроконтролера PIC16C84. Для цього Вам варто ознайомитись з його технічним описом. Також для розуміння всіх можливостей асемблера MPALC, макрокоманд, опцій та ін. Вам буде корисно прочитати його керівництво. Для правильного завдання всіх необхідних опцій Вам слід прочитати інструкцію з користування програматором. Приклади застосування мікроконтролерів дадуть Вам серйозну основу для самостійних проектів. Якщо ж у Вас будуть виникати питання, Ви можете звернутися в регіональний центр підтримки виробів фірми MICROCHIP за адресою: м. Москва Рубцовська наб. д. 3 офіс 502, тел. (095)-263-9930 Тут завжди будуть готові відповісти на всі Ваші питання. Нові версії програмного забезпечення, приклади застосування, довідкову інформацію Ви також можете отримати на регіональній BBS за телефоном (095)-162-8405

AD micro BBS

Публікація: Н. Большаков, rf.atnn.ru

Дивіться інші статті розділу Мікроконтролери.

Читайте та пишіть корисні коментарі до цієї статті.

<< Назад

Останні новини науки та техніки, новинки електроніки:

Запрацювала найвища у світі астрономічна обсерваторія 04.05.2024

Дослідження космосу та її таємниць - це завдання, яка привертає увагу астрономів з усього світу. У свіжому повітрі високих гір, далеко від міських світлових забруднень, зірки та планети розкривають свої секрети з більшою ясністю. Відкривається нова сторінка в історії астрономії із відкриттям найвищої у світі астрономічної обсерваторії – Атакамської обсерваторії Токійського університету. Атакамська обсерваторія, розташована на висоті 5640 метрів над рівнем моря, відкриває нові можливості для астрономів у вивченні космосу. Це місце стало найвищим для розміщення наземного телескопа, надаючи дослідникам унікальний інструмент вивчення інфрачервоних хвиль у Всесвіті. Хоча висотне розташування забезпечує більш чисте небо та менший вплив атмосфери на спостереження, будівництво обсерваторії на високій горі є величезними труднощами та викликами. Однак, незважаючи на складнощі, нова обсерваторія відкриває перед астрономами широкі перспективи для дослідження. ...>>

Управління об'єктами за допомогою повітряних потоків 04.05.2024

Розвиток робототехніки продовжує відкривати перед нами нові перспективи у сфері автоматизації та управління різними об'єктами. Нещодавно фінські вчені представили інноваційний підхід до управління роботами-гуманоїдами із використанням повітряних потоків. Цей метод обіцяє революціонізувати способи маніпулювання предметами та відкрити нові горизонти у сфері робототехніки. Ідея управління об'єктами за допомогою повітряних потоків не є новою, проте донедавна реалізація подібних концепцій залишалася складним завданням. Фінські дослідники розробили інноваційний метод, який дозволяє роботам маніпулювати предметами, використовуючи спеціальні повітряні струмені як "повітряні пальці". Алгоритм управління повітряними потоками, розроблений командою фахівців, ґрунтується на ретельному вивченні руху об'єктів у потоці повітря. Система керування струменем повітря, що здійснюється за допомогою спеціальних моторів, дозволяє спрямовувати об'єкти, не вдаючись до фізичного. ...>>

Породисті собаки хворіють не частіше, ніж безпородні 03.05.2024

Турбота про здоров'я наших вихованців – це важливий аспект життя кожного власника собаки. Однак існує поширене припущення про те, що породисті собаки більш схильні до захворювань у порівнянні зі змішаними. Нові дослідження, проведені вченими з Техаської школи ветеринарної медицини та біомедичних наук, дають новий погляд на це питання. Дослідження, проведене в рамках Dog Aging Project (DAP), що охопило понад 27 000 собак-компаньйонів, виявило, що чистокровні та змішані собаки в цілому однаково часто стикаються з різними захворюваннями. Незважаючи на те, що деякі породи можуть бути більш схильні до певних захворювань, загальна частота діагнозів у обох груп практично не відрізняється. Головний ветеринарний лікар Dog Aging Project, доктор Кейт Криві, зазначає, що існує кілька добре відомих захворювань, що частіше зустрічаються у певних порід собак, що підтримує думку про те, що чистокровні собаки більш схильні до хвороб. ...>>

Випадкова новина з Архіву

Смартфони Poco X5 Pro 08.02.2023

Бренд Poco, що належить китайській компанії Xiaomi, представив смартфони Poco X5 та Poco X5 Pro. Новинки відносяться до середньої цінової категорії, вирізняючись привабливим для багатьох користувачів співвідношенням продуктивності та ціни.

Poco X5 Pro є наступником смартфона Poco X4 Pro 5G, представленого трохи більше року тому. Основним оновленням у порівнянні з попередником є ​​використання в новинці 6-нм процесора Snapdragon 778G з графічним Adreno 642L, який значно швидше за чіп Snapdragon 695, що є у моделі X4 Pro. Об'єм оперативної пам'яті нового смартфона LPDDR4X складає 6 або 8 Гбайт, ємність флеш-накопичувача UFS 2.2 – 128 або 256 Гбайт. Пристрій працює під керуванням Android 12 з MIUI 14 for Poco.

Також смартфон отримав покращений дисплей. Основні параметри у нього такі ж, як у моделі Poco X4 Pro: це 6,67-дюймова AMOLED-панель з роздільною здатністю 2400 х 1080 пікселів (FHD+) та частотою оновлення 120 Гц. Однак, на відміну від попередника, новинка забезпечує 10-бітну глибину кольору зі 100-відсотковим охопленням колірного простору DCI-P3. Максимальна яскравість дисплея становить 900 кд/м2, при цьому використовується механізм ШІМ із частотою 1920 Гц. Захист дисплея від подряпин забезпечує міцне скло Gorilla Glass 5.

Модуль основної камери оснащений 108-Мп датчиком розміром 1/1,52 дюйма, який доповнює 8-Мп надширококутний модуль із кутом огляду 120° та 2-Мп датчик для макрозйомки. Роздільна здатність фронтальної камери дорівнює 16 Мп.

Специфікації Poco X5 Pro також включають адаптери бездротового зв'язку Wi-Fi 6 та Bluetooth 5.2, ІЧ-модуль, чіп NFC, порт USB-C та 3,5-мм аудіороз'єм. Акумулятор ємністю 5000 мАг підтримує заряджання потужністю 67 Вт.

У свою чергу смартфон Poco X5 побудований на чіпі Snapdragon 695 разом з оперативною пам'яттю об'ємом 6 або 8 Гбайт і флеш-накопичувачем ємністю 128 або 256 Гбайт. Об'єм пам'яті можна збільшити завдяки слоту для карт ємністю до 1 Тбайт.

Дисплей Poco X5 з діагоналлю 6,67 дюйма має роздільну здатність FHD+ та частоту оновлення 120 Гц. Дисплей має максимальну яскравість 1200 кд/м2, а також забезпечує 8-бітове уявлення кольору. Для захисту екрану від подряпин використовують скло Gorilla Glass 3.

Тильна камера смартфона включає основний 48-Мп сенсор, 8-Мп сенсор із надширококутною оптикою (118 °) та 2-Мп датчик для макрозйомки. На передній панелі розміщена 13-Мп селфі-камера. Акумулятор має таку ж ємність, як у Poco X5 Pro, але потужність зарядки становить 33 Вт. Тим не менш, за допомогою зарядного пристрою на 33 Вт на зарядку батареї з 0 до 100% потрібно всього 68 хвилин.

Специфікації Poco X5 також включають адаптери Wi-Fi 5, Bluetooth 5.1, 3,5-мм аудіороз'єм для навушників, ІЧ-приймач і чіп NFC.

Вартість Poco X5 6/128 Гбайт складає 250 доларів, ціна моделі Poco X5 8/256 Гбайт дорівнює 300 доларів. Ціна Poco X5 Pro починається з 300 доларів для базової моделі з 6/128 Гбайт, вартість Poco X5 Pro 8/256 Гбайт дорівнює 350 доларів.

Інші цікаві новини:

▪ Колонізація Венери

▪ Бюджетний трекер із Bluetooth для контролю за дітьми

▪ Гриби зможуть врятувати людство

▪ Супутник для створення штучних зорепадів

▪ Томат виробляє вітамін D

Стрічка новин науки та техніки, новинок електроніки

 

Цікаві матеріали Безкоштовної технічної бібліотеки:

▪ Розділ сайту Телефонія. Добірка статей

▪ стаття Про хабарі Климичу читають, а він крадькома киває на Петра. Крилатий вислів

▪ стаття Звідки у змій береться отрута? Детальна відповідь

▪ стаття Меліса лікарська. Легенди, вирощування, способи застосування

▪ стаття Оптосимісторний комутатор потужного навантаження. Енциклопедія радіоелектроніки та електротехніки

▪ стаття Далекі родичі кіно. Фізичний експеримент

Залишіть свій коментар до цієї статті:

ім'я:


E-mail (не обов'язково):


коментар:





All languages ​​of this page

Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт

www.diagram.com.ua

www.diagram.com.ua
2000-2024