Основные фонды предприятий
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЛЬВІВСЬКИЙ ДЕРЖАВНИЙ ІНСТИТУТ НОВІТНІХ ТЕХНОЛОГІЙ ТА
УПРАВЛІННЯ ІМ. В.ЧОРНОВОЛА
Факультет інформаційних технологій
Кафедра КСМ
ПОЯСНЮВАЛЬНА ЗАПИСКА
ДО КУРСОВОГО ПРОЕКТУ
з дисципліни
«МІКРОПРОЦЕСОРНІ СИСТЕМИ»
«Розробка програми передачі даних через
послідовний порт мікро контролера»
Варіант №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-ий режим роботи.
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
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. А.В. Фрунзе.
Микроконтроллеры? Это же просто