Розробка програми передачі даних через послідовний порт мікроконтролера
Розробка програми передачі даних через послідовний порт мікроконтролера
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ЛЬВІВСЬКИЙ ДЕРЖАВНИЙ ІНСТИТУТ НОВІТНІХ ТЕХНОЛОГІЙ ТА УПРАВЛІННЯ ІМ. В.ЧОРНОВОЛА Факультет інформаційних технологій Кафедра КСМ ПОЯСНЮВАЛЬНА ЗАПИСКА ДО КУРСОВОГО ПРОЕКТУ з дисципліни «МІКРОПРОЦЕСОРНІ СИСТЕМИ» «Розробка програми передачі даних через послідовний порт мікро контролера» Варіант №30 Розробив студент групи КІ-31 Височанський Ярослав Михайлович «____»____________________2006 р. Керівник___________/ Колосов В.Р. / «____»____________________2006 р. Оцінка__________________________ Львів-2006 Розрахунок часових затримок для формування імпульсів у програмі Для формування нуля: Отже число, яке потрібно загрузити в перший таймер дорівнює 200. Для формування одиниці: Отже число, яке потрібно загрузити в перший таймер, після формування нуля дорівнює 158. Розрахунок швидкості передачі даних через послідовний порт Тут ми розраховуєм число, яке потрібно зарядити в таймер/лічильник для генерації потрібної швидкості послідовного порту, в залежності від режиму його роботи та заданої швидкості передачі даних. Швидкість передачі даних = 1750 біт/с; Режим роботи порту - 3; fclk=22,5МГц Формула, за допомогою якої визначаємо потрібні дані: Підставляємо у формулу дані, задані за умовою. Рахуємо, що SMOD=1. Примітка: при SMOD=1 швидкість передачі вдвоє більша ніж при SMOD=1 Дані для програмування регістрів спеціальних функцій 1. В регістр управління/статусу SCON встановлюємо одиниці у бітах SM0, SM1 для визначення режиму роботи послідовного порту. 2. В регістр масок переривання IE встановлюємо одиниці в бітах EA, ES для дозволу використання програмою переривань. 3. Накладаємо маску на регістр управління потужністю PCON - 10000000 для встановлення біта SMOD в одиницю. 4. В регістр режиму таймера/лічильника TMOD ми записуємо двійкове число 00100010, для встановлення таймерів у 2-ий режим роботи. 5. В TН0 таймера TMR0 записуємо число 189, для формування заданої швидкості передачі даних. 6. Встановлюємо біт RI в нуль, для використання переривання при прийомі байта даних. 7. В TL1 таймера TMR1 записуємо число 200, для формування нуля із заданою тривалістю на лінії порту. 8. В TL1 таймера TMR1 записуємо число 158, для формування одиниці із заданою тривалістю на лінії порту. Алгоритм 4.2 Алгоритм підпрограми обробки переривань від послідовного порту Лістинг програми org 0 jmp Osn ;Перехід на основну програму org 0023h mov @R0,SBUF ;Зчитування з SBUF в адрес, що знаходиться в R0 inc R0 ;Інкрементуєм лічильник початкової адреси масиву dec R5 ;Декрементуєм лічильник байт clr RI ;Скидаємо прапор переривання приймача reti ;Вихід з підпрограми обробки переривань Osn: setb SM0 ;Визначаєм режим роботи послідовного порту setb SM1 clr SM2 setb REN ;Встановлюємо біт дозволу прийому даних setb EA ;Знімаєм блокування переривань setb ES ;Встановлюєм дозвіл на переривання від посл. порту orl PCON,#10000000b ;Встановлюємо біт SMOD в одиницю mov TMOD,#00100010b ;Визначаємо режим роботи таймерів mov TH0,#189 ;Загружаєм TMR0 mov R0,#4eh ;Загружаєм лічильник початкової адреси масиву mov R5,#27 ;Загружаєм лічильник байт setb TR0 ;Запускаєм TMR0 Zagr: mov TH1,#200 ;Загружаєм TMR1 clr P0.7 ;Встановлюємо на лінії порту P0.7 нуль setb TR1 ;Запускаєм TMR1 Nul: jnb TF1,Nul ;Перевірка на переповнення TMR1 clr TR1 mov TH1,#158 setb P0.7 ;Встановлюємо на лінії порту P0.7 одиницю setb TR1 Odyn: jnb TF1,Odyn clr TR1 jmp Zagr ;Переходимо на мітку Zagr Список використаної літератури 1. В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева. Проектирование цифровых устройств на однокристальніх микроконтроллерах. 2. А.В. Фрунзе. Микроконтроллеры? Это же просто
|