Проектування мікрокомп’ютера

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2004
Тип роботи:
Курсова робота
Предмет:
Мікропроцесорні системи
Група:
КСМ-41

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет “Львівська політехніка” Курсова робота з предмету: “Мікропроцесорні системи” тема: “Проектування мікрокомп’ютера” Зміст Початкові дані на проектування. 3 Опис процесора AT87C5112 4 Ключові особливості процесора 4 Внутрішня структура AT87C5112 5 Вбудована пам’ять 9 Опис схеми електричної функціональної та основних режимів функціонування. 15 Загальна структурна схема системи 15 Формування магістралі адрес 15 Формування магістралі даних 16 Опис схеми електричної принципової по вузлах з часовими діаграмами в основних режимах функціонування. 18 Блок синхронізації 18 Блок початкового скидання 19 Підключення зовнішньої пам’яті 20 Підключення периферійного пристрою 23 Опис блок-схеми та програми початкової iнiцiалiзацiї. 25 Блок-схема алгоритму 25 Програма початкової ініціалізації 26 Висновок 31 Література 32 Початкові дані на проектування. 1. Тип мікропроцесора - AT87С5112 2. Постійна пам’ять: тип м/сх - 3. Оперативна пам’ять: тип м/сх. - 4. Підсистема вводу-виводу: тип м/сх. - Опис процесора AT87C5112 Ключові особливості процесора Побудований на архітектурі 80С51: 5 портів вводу-виводу 2 16-бітних таймерів-лічильників 256 байт RAM 8Кбайт вбудованої пам’яті програм з 64 байтами зашифрованого масиву та 3 рівня захисту. Високошвидкісна архітектура: 33 МГц на напрузі живлення 5В (еквівалент 66МГц) поліпшена система виконання команд X2 (6 тактових імпульсів/машинний цикл) 10-бітний, 8-канальний АЦП апаратна система захисту від зависань програмований ввід-вивід: стандартний С51, тільки для вводу, двотактний асинхронний порт RESET повно дуплексний розширений UART з генератором швидкості двійкової передачі Подвійна системна синхронізація Керамічний або осцилятор на кристалі (33/40 MHz) Вбудований RC-осцилятор (12МГц) Програмований попередній поділювач частоти Апаратні переривання: 8 джерел переривання 4 рівня пріоритету Живлення 3 режими контролю живлення: режим очікування режим пониженого споживання прапорець виключення живлення Напруга живлення: 2,7 – 5,5В Діапазон температур: - 40 ,,, 85С Корпус LQFP48 (Body 7*7*1.4 mm), PLCC52 Внутрішня структура AT87C5112 AT8xC5112 призначений для застосування в аналогових системах. Для цього, це має 10-бітний, 8 канальний A/D конвертор (АЦП)і п'ятиканальний програмований масиву лічильників. Крім того, AT8xC5112 має вбудований контролер захисту від збоїв (Watchdog), багатолінійний послідовний канал зв’язку, який забезпечує мультипроцесорний зв'язок (EUART) з незалежним генератором швидкості двійкової передачі, контролер послідовного порту SPI і X2 механізм поліпшення швидкості. X2 особливість дозволяє, утримати потужність споживання CPU на тому ж рівні при частоті роботи вдвічі меншій від попередньої. AT87C5112 має 3 програмні режими обмеженої активності для подальшого обмеження потужності споживання. В режимі очікування процесор „заморожується” під час того, як периферія продовжує роботу. Цей режим також потрібний для економії потужності. В „тихому” режимі (auiet mode) працює лише АЦП. В режимі пониженого споживання зберігається вміст RAM а вся інша периферія виключається.  Рисунок 1 – Внутрішня структура AT87C5112  Рисунок 2 – Цокольовка мікросхеми AT87C5112 Таблиця 1 – Призначення виводів Назва Тип Назва і функція  XTAL1 I XTAL1 : Вхід до інвертуючого підсилювача осцилятора і вхід до кола внутрішнього генератора тактових імпульсів  XTAL2 O XTAL2 : Вихід з інвертуючого підсилювача осцилятора Output from the inverting oscillator amplifier.  VCC I Power Supply: напруга живлення для normal, idle and power-down режиму.  AVSS I Analog Ground: OV рекомендований.  AVCC I Analog Power Supply: напруга живлення для normal and idle режиму АЦП  VREF I VREF рекомендований позитивний вхід конвертора.  VPP I Vpp : Programming Supply Voltage: на цей пін подається 12В програмуючий імпульс, який виконує програмування EPROM та тестові методи виробника.  P1.0-P1.7 I/O Port 1: двонаправлений 8-канальний з внутрішнім pull-ups Альтернативні функції порту:   I/O WR (P1.0): строб запису в зовнішню пам’ять даних   I/O RD (P1.1): строб читання з зовнішньої пам’яті даних   I/O ECI (P1.2): Зовнішні тактові імпульси для PCA   I/O CEXO (P1.3): Приймання/порівняння зовнішнього I/O для PCA module 0   I/O CEX1 (P1.4): Приймання/порівняння зовнішнього I/O для PCA module 1   I/O CEX2 (P1.5): Приймання/порівняння зовнішнього I/O для PCA module 2   I/O CEX3 (P1.6): Приймання/порівняння зовнішнього I/O для PCA module 3   I/O CEX4 (P1.7): Приймання/порівняння зовнішнього I/O для PCA module 4  P3.0 - P3.7 I/O Port 3: двонаправлений 8-канальний з внутрішнім internal pull-ups. Може бути використаний як вхід. P3.6 – працює тільки на вхід. Port 3 порт .   I/O RXD (P3.0): Вхід послідовного порту   I/O TXD (P3.1): Вихід послідовного порту   I/O INTO (P3.2): Зовнішнє переривання 0   I/O TO (P3.3): зовнішній вхід Timer 0   I/O Port 4: є 8-бітовим двонаправленим I/O портом. Кожний біт може використовуватись для вводу CMOS або для двотактного виводу. Порт може використовуватись як порт АЦП і для осцилятора і скиду.   I/O AINO (P4.0): Вхід АЦП 0  P4.0-P4.7 I/O AIN1 (P4.1): Вхід АЦП 1 T1: зовнішній вхід Timer 1   I/O AIN2 (P4.2): Вхід АЦП 2 SS: Вибір входу Slave для SPI контролера   I/O AIN3 (P4.3): Вхід АЦП 3 INT1: Зовнішнє переривання 1   I/O AIN4 (P4.4): Вхід АЦП 4 MISO: Master IN, Slave OUT для SPI контролера   I/O AIN5 (P4.5): Вхід АЦП 5 MOSI: Master OUT, Slave IN для SPI контролера   I/O AIN6 (P4.6): Вхід АЦП 6 SPSCK: Тактовий вхід I/O для SPI контролера   I/O AIN7 (P4.7): Вхід АЦП 7  P0.0-P0.7 I/O Port 0: є відкрито-дренажний, двонаправлений I/O порт. Піни порту 0, час запису до яких 1s, змінні і можуть бути використані як високоімпедансні входи. Порт 0 є також мультиплексованою молодшою шиною адрес і даних для доступу до зовнішньої пам’яті програм і даних.  P2.0-P2.7 I/O Port 2: є 8-бітовим двонаправленим I/O портом. Через порт 2 може передаватись старша частина адреси на шину адрес до зовнішньої пам’яті. Коли використовується 8-ми бітна адресація, то на порт 2 видається вміст P2 SFR.  RST I RST: Сигнал високої напруги на цей вхід протягом двох циклів виконує скид пристрою. Якщо значення WD активує скид, то RST стає виходом на протязі часу внутрішнього скиду.  ALE O Address Latch Enable: Вихідний імпульс для визначення молодшої адреси для доступу до зовнішньої пам’яті програм. В нормальному режимі роботі, ALE створюється постійно 1/6 від частоти осцилятора. При доступі до зовнішньої пам’яті даних один імпульс ALE пропускається.  PSEN O Program Store Enable: Строб читання зовнішньої пам’яті програм. Коли виконується код з зовнішньої програмної пам’яті, PSEN активний двічі кожного машинного циклу, і навпаки, PSEN не активний протягом доступу до пам’яті даних. PSEN не активний протягом роботи з внутрішньою пам’яттю.  EA I External Access Enable: EA повинен бути встановлений в низький рівень для використання зовнішньої пам’яті програм, розміщених в адресному просторі більше 1FFFH.  Вбудована пам’ять EPROM Пам’ять AT87C5112 поділена на 2 різні масиви: Масив коду: 8Кбайт Зашифрований масив: 64байт На додаток існує третій не програмований масив – підписи розміром 4 байт. Програма блокує систему, коли програмується, захищаючи тим самим вбудоване програмне забезпечення від несанкціонованого копіювання. Зашифрована область пам’яті розміром 64 байти при ініціалізації очищується (всі байти встановлюються в FF). Кожен раз, коли адресується один байт протягом виконання програми, використовуються 6 адресних ліній для вибору одного байту з даного масиву пам’яті. Цей байт потім додається з байтом коду використовуючи виключне АБО, і створює зашифрований байт верифікації. При потребі алгоритм повертає оригінальний незашифрований код програми, коли зашифрована пам’ять пуста, тобто після ініціалізації. Коли використовується зашифрована пам’ять необхідно зважати на наступне. Якщо байт має значення FFh, верифікація байту створить значення байту опису. Коли залишається непрограмованим блок пам’яті більший за 64-байт, підпрограма верифікації буде показувативміст массиву опису. Тому всі незапрограмовані значення байт коду слід заповнювати випадковими значеннями. Біти блокування програми. 3 біти, які розташовані в байті конфігурації CONF, забезпечують захист різних рівнів надійності для вбудованого коду та даних. Значення бітів та відповідний їм рівень захисту внутрішніх даних приведено в таблиці 1. Скорочення в таблиці: U - непрограмований P - програмований Таблиця 2 Байти блокування програми Опис захисту  Secutity level LB1 LB2 LB3   1 U U U Немає программного блокування. Верифікація коду буде виконуватися масивом шифровання. Інструкція MOVC при виконанні із зовнішньої пам’яті повернее незашифровані дані.  2 P U Я Інструкція MOVC при викоаннні із зовнішньої пам’яті буде перекрита витягнутими з внутрішньої пам’яті байтами коду.  3 U P U Так само як при другому випадку будь-яка верифікація буде заборонена. Цей рівень захисту наявний тому що верифікація даних з постійної пам’яті ROM буде можлива за допомогою використання іншого метода.  4 U U P Так само як і в третьому випадку, але будь-яке зовнішнє виконання буде заборонено   Порти Всі піни порта 1, 3 та 4 можуть бути программно скофігуровано для одного з 4 типів передачі, як показано в таблиці 3. 2 регістри конфігурації для кожного порту дозволяють вибрати тип кожного піна. Для контролю запису та читання використовують наступні сигнали ALE, PSEN, EA, Reset; RD and WR. За замовчуванням конфігурацію виводів встановлено на першому режимі – 2-напрямлена передача даних. Таблиця 3 PxM1.yBit PxM2.y Bit Port Output Mode  0 0 Квазі 2-напрямлений  0 1 двотактний  1 0 Тільки ввід (високоімпедансний)  1 1 Відкритий  Апаратний таймер захисту від збоїв Watchdog Таймер захисту від збоїв Watchdog виористовується як захист метод відновлення в ситуаціях коли процессор може программно скинутий. Він складається з 14-бітного лічильника та таймера скидування Watchdog Timer Reset. По замовчуванню таймер деактивовано. Для його включення користувач повинен записати 01ЕН та 0Е1Н послідовно в WDTRST, SFR. Коли тайер активовано, він буде збільшуватися на одиницю кожен машинний цикл (6 внутрішніх періодів тактових імпульсів) та не може бути скинутий ніяким способом крім скидання (апаратне або скидання при переповненні таймеру). Біт Т0 в керуючому регістрі WDTPRG використовується для вибору межу переповнення між 10 або 14 біт. Коли таймер переповниться він згенерує внутрішнє переривання. Він також згенерує зовнішнє переривання. Довжина імпульсу цього переривання буде 24 періодів тактових імпульсів. Периферія процесора Послідовний порт Вбудований послідовний інтерфейс дозволяє повно дуплексну, синхронну передачу даних між процесором та периферійними пристроями, включаючи інші процесори. Можливе підключення декількох периферійних пристроїв, вибір яких здійснюється за допомогою керуючих сигналів MISO та MOSI. Процесор веде передачу даних в режимі „господар-слуга” (master-slave). Основні можливості модуля послідовного порту наступні: Повнодуплексний, 3-лінійний зв’язок 8 програмованих тактовий керуючих частот для різних ведених прстроїв тактова частота з програмованою полярністю та фазою флаг захисту від колізій флаг захисту від помилок Послідовний інтерфейс Він надає як синхронний так і асинхронний режим зв’язку. Працює як універсальний асинхронний приймач-передавач в 3 повнодуплексних режимах. Асинхронна передач може проходити одночасно із прийомом та на різних смугах пропускання. Включає в себе наступні вдосконалення: Виявлення помилок кадрів Автоматичне розпізнавання адрес Виявлення помилок кадрів. Для відслідковування помилок кадрів в 3 асинхронних режимах є біт детектування помилок. Для включення можливості перевірки необхідно встановити біт SMOD0 в регістрі PCON Коли включена перевірка, отримувач перевіряє кожен кадр даних на значення стоп-біту. Спотворений стоп-біт може утворитися внаслідок шуму на лініях та одночасній передачі даних 2 процесорами. Якщо немає стоп-біту встановлюється влаг FRAMING ERROR в регістрі SCON. Программа може перевіряти значення цього біту після кожного приймання даних для перевірки на помилки. Якщо біт FE встановився, тільки програма, або апаратне скидання може очистити його. Пізніше отримані кдри з нормальними стоп-бітами не можуть очистити біт помилки SЕ. Автоматичне розпізнавання адрес. Дана можливість для універсального асинхронного приймача-передавача, коли включено режим мультипроцесорної комунікації. Розпізнавання адрес розширює можливості мультипроцесорної комунікації надаючи змогу послідовному порту перевіряти адресу кожного командного кадру даних, що надходить. Тільки тоді коли порт розпізнає свою власну адресу, отримувач встановлює біт RI в регістрі SCON для генерації переривання. Це перевіряє що процесор не переривається командними кадрами, адресованими на інші пристрої. Вбудований АЦП 8 каналів АЦП можуть надавати доступ для відповідно для 8 зовнішніх джерел. Аналоговий мультиплексом дозволяє вибирати один з 8 каналів для подальшої роботи з ним (ADCIN). Перетворення відбувається за допомогою 10-бітного каскадного потенціометра АЦП. Можливі 3 види перетворення: Стандартне (7-8 біт) Точне (8-9 біт) Підвищеної точності (10 біт) Типи перетворення задаються в системному регістрі ADCON. При точному перетворенні CPU не працює, тоді як вся периферія працює в нормальному режимі. Такий режим роботи називається режимом псевдо очікування. Основні властивості: 8-каналів з мультиплексованими вводами час конверсії менший 10мкс зовнішня напруга від 2,4 до Vcc ADCIN від 0 до Vcc Флаг завершення конверсії або переривання завершення конверсії Тактова частота, що вибирається програмно Виводи АЦП можуть використовуватися як вводи-виводи загального призначення. Всі виводи AIN є вводами-виводами загального призначення та є наявними для каналів АЦП. Канал вибирається для перетворення шляхом вказування в керуючому регістрі ADCF. Запис до каналу, який не вибрано не буде мати ніякого ефекту. Програмований массив лічильників (ПМЛ) ПМЛ надає більші можливості по програмуванню таймерів, незалежно від втручання процессора, ніж стандартні таймери-лічильники. Його перевагою є обмежені програмні затримки та покращена точність. ПМЛ скаладається з спеціалізованого таймеру-лічильника, котрий обслуговує масив з 5 модулів порівняння/фіксації. Система переривань Процесор має 8 вектороів переивань: 2 зовнішніх переривання (INT0 та INT1), 2 переривання від таймеру (0,1), переривання від послідовного інтерфейсу, РСА, SPI та A/D. Кожне перериваня може ындивыдуально будти встановлено або виключене в регістрі Interrupt Enable. Цей регістр також містить біт загального виключення всіх переривань. Кожне з джерел переривання може бути запрограмовано на 1 з 4 рівнів пріоритету, встановленням відповідного біту в регістрах Interrupt Priority та Interrupt Priority High. Опис схеми електричної функціональної та основних режимів функціонування. Загальна структурна схема системи АТ87С5112 представляє собою мікросхему високого ступеню інтеграції. Вона містить в собі деякі периферійні пристрої. Тому для побудови мікропроцесорної системи на базі даної мікросхеми не виникає потреби для під’єднання багатьох периферійних пристроїв. Мікрокомп’ютер, що проектується буде містити в собі наступні компоненти: процесор, пам’ять, периферійний пристрій, блок синхронізації та блок скидання.  Рисунок 3 – Загальна структурна схема мікрокомп'ютера Формування магістралі адрес Оскільки в АТ87С5112 лінії порт Р0 мультиплексовані для передачі молодшої частини адреси і передачі/приймання даних, то виникає необхідність використання регістру для проміжного зберігання молодшої частини адреси. Сигнал ALE визначає тип передачі: дані чи адреса.  Рисунок 4 – Схема формування магістралі адресу Формування магістралі даних В мікроконтролері АТ87С5112 дані які передаються до зовнішньої пам'яті, також як і молодша частина адреси, передаються через порт Р0. Але завдяки тому, що мікроконтролер має сигнал ALE, який визначає тип сигналів на виході Р0, а також завдяки сигналу PSEN, який визначає звертання до пам'яті програм чи пам'яті даних, відпадає необхідність формувати магістраль даних за допомогою шинних формувачів та інших схем проміжного зберігання даних. Подача даних на зовнішню пам'ять відбувається напряму з порту Р0.  Рисунок 5 – Формування магістралі даних Як видно з рисунку 5, передача даних в схему індикації відбувається по магістралі даних завдяки тому, що вона знаходиться в адресному просторі пам'яті даних. Це означає, що передача даних проводиться за допомогою команд пересилки в пам'ять даних. Таке виконання спрощує написання програм, а також дозволяє використовувати вільні порти мікроконтролера за іншим призначенням, що суттєво розширює можливості проектованого мікрокомп'ютера, а відповідно і області його застосування. Контроль схемою індикації відбувається за допомогою ліній порту мікроконтролера Р1. Опис схеми електричної принципової по вузлах з часовими діаграмами в основних режимах функціонування. Блок синхронізації Система осциляторів процесора надає надійну систему синхронізації з повним керуванням швидкості процесора. Є наступні режими синхронізації: Підключення зовнішнього джерела тактових імпульсів; Високошвидкісний кристальний або керамічний осцилятор; Вбудований високо швидкісний RC-осцилятор. Процесор вимагає 6 періодів синхронізації за 1 цикл. Тактова частота керується декількома регістрами загального призначення: OSCON, CKCON0, CKCON1, CKRL. Процесор включає в себе наступні осцилятори: кристальний осцилятор, інтегрований високошвидкісне RC-осцилятор, з типовою частотою 12МГц. Кристальний осцилятор використовує 2 зовнішні виводи, XTAL1 для входу та XTAL2 для виходу. Можуть бути використані обидва осцилятори. Біт OSCAEN в OSCCON-регістрі використовується як сигнал запуску кристального осцилятора або для включення зовнішнього осцилятора. CKS біт в CKS-регістрі використовується для вибору RC-осцилятора або кристалу. OSCBEN біт в OSCCON-регістрі використовується для включення RC-осцилятора. OSCAEN bit in OSCCON біт в OSCCON-регістрі використовується для включення кристального або зовнішнього осцилятора. Діаграма тактових імпульсів приведена на рисунку 6.  Рисунок 6 – Діаграма тактових імпульсів Основні параметри імпульсів приведені в таблиці 4. Таблиця 4 – часові параметри тактових імпульсів Symbol Parameter Min Max Units  TCLCL Період 25  ns  TCHCX Тривалість високого імпульсу 5  ns  TCLCX Тривалість низького імпульсу 5  ns  TCLCH Період фронту  5 ns  TCHCL Період спаду  5 ns  TCHCX/TCLCX Циклічний коефіцієнт в режимі X2 40 60 %   Блок початкового скидання Початкове ініціалізація необхідна для нормального початку роботи, встановлення необхідних режимів роботи процесора, пам’яті та інших компонент мікропроцесорної системи. Ініціалізація відбувається при включенні живлення системи. Для ручного скидання необхідно під’єднати до входу скидання процесора відповідний перемикач, який зображено на рисунку.  Рисунок 7 – Перемикач для ручного скидання мікропроцесорної системи Коли напруга вимикається, не гарантується зберігання даних. Флаг Power-off дозволяє уникнути цього. Цей біт може бути встановлений тільки після першого скидання. Він дозволяє в подальшому при пропаданні живлення, або при збої консервувати дані внутрішньої пам’яті. Підключення зовнішньої пам’яті В мікрокомп’ютері, що проектується передбачено використання 2 типів зовнішньої пам'яті – пам'ять програм та пам'ять даних. Розрізняються вони за допомогою спеціальних керуючих сигналів для визначення пам'яті - PSEN, а також типу сигналів на шині ALE. На рисунку 10 показана схема під’єднання зовнішньої постійної та оперативної пам’яті до мікроконтролера. Програма початкової ініціалізації зберігається в постійній пам'яті. Тип мікросхеми постійної пам'яті, яка використана при проектуванні мікрокомп'ютера, - 27С512, вона має об'єм 64Кб. Тип мікросхеми для пам’яті даних (RAM)– 62256.Об'єм пам'яті даних має 32Кб. Часові діаграми роботи контролера з зовнішньою пам'яттю представлені на рисунках 8 та 9.  Рисунок 8 – Часова діаграма циклу читання з пам'яті програм (ROM)  Рисунок 9 – Часова діаграма циклу запису в пам'ять даних (RAM) Рисунок 10 – Схема під'єднання зовнішньої пам'яті до мікроконтролера Підключення периферійного пристрою В мікрокомп’ютері в якості периферійного пристрою використовується інший процесор АТ87С558. Процесори утворюють між собою систему типу „ведучий-ведений”, тобто 1 процесор є головним, а другий, керується першим. Для зв’язку з зовнішним пристроєм використовується стандартний послідовний інтерфейс.  Рисунок 11 – Підключення до системи інших процесорів використовуючи полсодвний інтерфейс Керуючий пристрій працює з периферійним пристроєм використовуючи наступні сигнали. Master Output Slave Input (MOSI) – використовується для передачі даних послідовно від головного до веденого процесора, тобто це є вихідний сигнал для головного, і вхідний для веденого процесора Master Input Slave Output (MISO) - використовується для передачі даних послідовно від веденого до головного процесора, тобто це є вихідний сигнал для веденого, і вхідний для головного процесора SPI Serial Clock (SCK) – використовується для синхронізації пересилки даних між всіма пристроями між якими ведеться передача даних. Він керується головним процесором та поділяє передачу даних на 8 циклів, що дозволяє передавати дані побайтово, використовуючи послідовний порт Slave Select (SS) – використовується для вибору одного периферійного пристрою з поміж інших, якщо їх підключено декілька. В мікрокомп’ютері, що проектується не використовується, так як периферійний пристрій використовується лише один.  Рисунок 12 – Часова діаграма роботи послідовного інтерфейсу Опис блок-схеми та програми початкової iнiцiалiзацiї. Блок-схема алгоритму  Програма початкової ініціалізації ;Warm boot application example ;***************************************************************************** ; Automatic Baud Rate Detection Test ;***************************************************************************** $Title(Automatic Baud Rate Detection Test) $Date(12-16-91) $MOD552 RX BIT P3.0 ;Location of serial receive pin. CharH DATA 30h ;Holds high byte of frame timer result. CharL DATA 31h ;Holds low byte of frame timer result. BaudRate DATA 32h ;Holds final baud rate determination. Display EQU P4 ;Port to display result for debug. ;***************************************************************************** ; Reset and Interrupt Vectors ;***************************************************************************** ORG 8000h Start: ACALL AutoBaud ;Go try to get a baud rate value. MOV Display,BaudRate ;Display baud rate value for debug. SJMP Start ;***************************************************************************** ; Subroutines ;***************************************************************************** ; AutoBaud Rate Detect Routine. ; Attempts to detect baud rate from first received character, by measuring ; the length of the character. Some characters may not work properly, ; primarily those that end with more than 3 (4?) ones in a row. ; Returns with ACC = baud rate pointer. AutoBaud: MOV TMOD,#01h ;Initialize timer 0 (UART baud rate timer). MOV TH0,#0 ;Put timer 0 in 16-bit counter mode. MOV TL0,#0 MOV TCON,#0 MOV CharH,#0 ;Initialize timer result. MOV CharL,#0 AB0: JB RX,AB0 ;Wait for serial start bit. SETB TR0 ;Start timer. AB1: JB TF0,AB3 ;Check for timer overflow. JNB RX,AB1 ;Check for a rising edge on serial data. MOV CharH,TH0 ;Capture timer value at this serial edge. MOV CharL,TL0 AB2: JB TF0,AB3 ;Check for timer overflow. JB RX,AB2 ;Check for falling edge on serial data. SJMP AB1 ;Go back and repeat sampling. AB3: CLR TR0 ;Maximum sample time has expired, check result. CLR TF0 ;Begin by stopping timer and clearing flag. MOV BaudRate,#19 ;Set up table pointers. CmpLoop: MOV A,BaudRate MOV DPTR,#CmpTable MOVC A,@A+DPTR ;Get a table entry for comparison. DEC BaudRate CJNE A,CharH,Cmp1 ;Check result range. SJMP CmpLow ;High byte table = timed value, check low byte. Cmp1: JC CmpMatch ;A match if table value is < timed value. DJNZ BaudRate,CmpLoop ;Check for end of comparison table. SJMP CmpMatch CmpLow: MOV A,BaudRate MOVC A,@A+DPTR ;Get a table entry for comparison. CJNE A,CharL,Cmp2 ;Check result range. SETB C ;Match if equal. Cmp2: JC CmpMatch ;C set if A < low byte of result. DJNZ BaudRate,CmpLoop ;Check for end of comparison table. CmpMatch: MOV A,BaudRate ;Comparison complete, CLR C ; get final baud rate index, RRC A MOV BaudRate,A ; and save. RET ; Compare table holds timer values for the transition points of the accepted ; baud rates. Entries are LSB, MSB. These values are for 12 MHz operation. CmpTable: DB 40h,0 ;0 - out of range, value too low. DB 80h,0 ;1 - 38400 baud. DB 0,01h ;2 - 19200 baud. DB 0,02h ;3 - 9600 baud. DB 0,04h ;4 - 4800 baud. DB 0,08h ;5 - 2400 baud. DB 0,10h ;6 - 1200 baud. DB 0,20h ;7 - 600 baud. DB 0,40h ;8 - 300 baud. DB 0,80h ;9 - out of range, value too high. MAIN: MOV R0,#WARM ;Pointer for first byte. CJNE @R0,#WARM1,COLD ;Test first byte. INC R0 ;Pointer for second byte. CJNE @R0,#WARM2,COLD ;Test second byte. INC R0 ;Pointer for third byte. CJNE @R0,#WARM3,COLD ;Test third byte. INC R0 ;Pointer for fourth byte. CJNE @R0,#WARM4,COLD ;Test fourth byte. SETB WARMBT ;This is a warm start. JMP INIT ;Continue with rest of application. COLD: CLR WARMBT ;This is a cold boot. MOV R0,#WARM ;Pointer for first byte. MOV @R0,#WARM1 ;Load the four bytes for future test. INC R0 ; MOV @R0,#WARM2 ; INC R0 ; MOV @R0,#WARM3 ; INC R0 ; MOV @R0,#WARM4 ; INIT: ;Continue with the application. ;************************************************************************** ; 87C752 A/D and PWM inition Program $Title(87C752 A/D and PWM Test) $Date(07/26/89) $MOD752 ;************************************************************************** BaudVal EQU -139 ;Timer value for 9600 baud @ 16 MHz. ;(one bit cell time) XmtDat DATA 10h ;Data for RS-232 transmit routine. BitCnt DATA 12h ;RS-232 transmit bit count. Flags DATA 20h TxFlag BIT Flags.0 ;Transmit-in-progress flag. ADFlag BIT Flags.1 ;A/D conversion complete flag. TxD BIT P1.5 ;Port bit for RS-232 transmit. ;************************************************************************** ; Interrupt Vectors ORG 0 ;Reset vector. AJMP Reset ORG 0BH ;Timer 0 interrupt. AJMP Timr0 ;Baud rate generator. ORG 2Bh ;A/D conversion complete interrupt. SETB ADFlag ;Tell mainline. RETI ;***************************************************************************** Reset: MOV SP,#30h MOV Flags,#0 ;Clear RS-232 flags. MOV TCON,#00h ;Set up timer controls. MOV IE,#82h ;Enable timer 0 interrupt. MOV DPTR,#Msg1 ;Point to message string. ACALL Mess ;Send message. MOV R1,#0 ;Start with A/D channel 0. Loop1: MOV A,R1 ACALL ADConv ;Start A/D conversion. MOV R2,A MOV DPTR,#Msg2 ;Point to message string. ACALL Mess ;Send message. MOV A,R1 ACALL PrByte ;Print channel #. MOV DPTR,#Msg3 ;Point to message string. ACALL Mess ;Send message. MOV A,R2 ACALL PrByte ;Print A/D value. INC R1 ;Advance R1 value. CJNE R1,#5,Loop1 MOV DPTR,#CRLF ;Point to message string. ACALL Mess ; Now use A/D channel 0 value to control the PWM. MOV IE,#0C2h ;Now enable the A/D interrupt. MOV PWMP,#80h ;Set up PWM prescaler. MOV PWCM,#0 ;Set initial PWM value. MOV PWENA,#01h ;Start PWM. Loop2: MOV A,#0 ;Read A/D channel 0. ACALL ADStart ;Start A/D conversion. JNB ADFlag,$ ;Wait for A/D conversion complete. MOV A,ADAT CPL A ;Complement the value for the PWM. MOV PWCM,A ;Set PWM value. ACALL PrByte ;Print PWM value. MOV DPTR,#Msg4 ;Point to message string. ACALL Mess SJMP Loop2 ; A/D Conversion Routines. ; The following shows way to use the A/D. Both routines are used by ; different portions of the sample program. ADStart: CLR ADFlag ;Clear A/D conversion complete flag. ORL A,#28h ;Add control bits to channel #. MOV ADCON,A ;Start conversion. RET ADConv: ORL A,#28h ;Add control bits to channel #. MOV ADCON,A ;Start conversion. ADC1: MOV A,ADCON JNB ACC.4,ADC1 ;Wait for conversion complete. MOV A,ADAT ;Read A/D. RET ; Print byte routine: print ACC contents as ASCII hexadecimal. PrByte: PUSH ACC SWAP A ACALL HexAsc ACALL XmtByte POP ACC ACALL HexAsc ;Print nibble in ACC as ASCII hex. ACALL XmtByte RET ; Hexadecimal to ASCII conversion routine. HexAsc: ANL A,#0FH ;Convert a nibble to ASCII hex. JNB ACC.3,NoAdj JB ACC.2,Adj JNB ACC.1,NoAdj Adj: ADD A,#07H NoAdj: ADD A,#30H RET Msg1: DB 0Dh, 0Ah, 'This is a test of the 87C752 A/D and PWM.' CRLF: DB 0Dh, 0Ah, 0 Msg2: DB 0Dh, 0Ah, 'A/D Channel ', 0 Msg3: DB ' = ', 0 Msg4: DB ' ', 0 END Висновок В створеній мікропроцесорній системі використовується мікропроцесор AT87С5112. Він представляє завершену систему яка інтегрована на одному чіпі та включає в себе пам’ять SRAM розміром 256 байт та пам’ять програм розміром 8К, аналогово-цифровий перетворювач. Створена мікропроцесорна система містить зовнішню пам’ять (пам’ять програм і пам’ять даних), що надає можливість завантажування програм великих обсягів. В якості зовнішнього пристрою використовується інший процесор AT87С5112, який під’єднано до системи через спеціальний послідовний порт. Література 1. Конспект лекцій з курсу “Мікропроцесорні системи”( 2. Микропроцессоры и микропроцессорные комплекты интегральных микросхем : Справочник. В 2 т. / В.-Б. Б. Абрайтис, Н. Н. Аверьянов, А. И. Белоус и др.; Под ред. В. А. Шахнова. – М.: Радио и связь, 1988. – Т.1. – 368 с.: ил. 3. AT87С5112 8-bit Microcontroller with A/D Converter . Atmel Corporation 2002.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!