Приклад програми для лабораторної роботи №10
Приклад програми для лабораторної роботи №10
Здійснити прийом/передачу даних по RS-485. На вхід драйвера мікросхеми RS-485 приходить число, яке може мати значення (1.. 8), контролер приймає число і засвічує відповідну кількість світлодіодів (по порядку в напрямку LED15…LED8), при цьому відсилає у відповідь число на одиницю більше від отриманого. Швидкість передачі 115200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта. Початковий стан: світлодіодна лінійка погашена до початку прийому першого байта.
$include (mod841)
DAT equ R0 //дані
ADDR equ R1 //адрес
org 0
JMP Start //перехід на мітку Start
ORG 023H //вектор переривання UART
jmp UART_ISR //перехід на опрацюваня переривання UART
ORG 030H
Start:
call Init_UART //виклик ініціалізації UART
call clear_buff //очистка діних буферів
setb EA //дозвіл глобальних переривань
setb ES //дозвіл переривань від UART
clr P2. 7 //налаштування RS-485 на прийом
mov R7, #00h //початковий стан прийнятих бат
BEGIN:
cjne R7, #0, write_led //перевірка на наявність прийнятих даних
JMP BEGIN //якщо дані не прийняли, то перехід на BEGIN
write_led: //якщо прийняли дані по UART
mov a, R7 //запис прийнятих даних в акумулятор
mov DPTR, #DANI_LED //запис в DPTR таблиці для світодіодів
movc A, @A+DPTR //звертання до балиці DANI_LED
mov DAT, a //запис заних на вивід
mov ADDR, #07h //запис адресу лінійки світлодіодів
call write //виклик процедури виведення
inc R7 //інкремент отриманого значення прийнятого байта
setb P2. 7 //налаштування RS-485 на передачу
call puch_char //пересилання байту даних по UART
jnb TI, $ //очікування завершення пересилання байта
clr P2. 7 // налаштування RS-485 на прийом
mov R7, #0 //обнуління прийнятого значення
JMP BEGIN
Init_UART:
mov T3FD, #20h //за відповідною формулою
mov T3CON, #82h //11, 0592MHz, 115200 bod
mov SCON, #52h // SM = 1, TI = 1
ret
write:
setb P3. 6
mov P0, DAT //moving data to bus buffer
mov P2, ADDR //set periferals address
nop
nop
mov P2, #000h //clock
ret
clear_buff:
mov A, #7h
nex_buff:
mov DAT, #0ffh
mov ADDR, A
call write
dec a
cjne a, #0h, nex_buff
ret
puch_char:
jnb TI, $ //очікування якщо дані з SBUF не передано
clr TI //очищення біта готовності передачі TI
mov SBUF, R7 //запис в SBUF значення з R7
ret
UART_ISR:
jnb RI, exit_uart // якщо переривання відбулося не при прийомі даних, то виходимо з переривання
clr RI //інакше скидаємо ознаку готовності прийнятих біт
mov R7, SBUF //перезаписуємо значення з SBUF в R7
exit_uart:
RETI
DANI_LED: //масив даних для світлодіодної лінійки
DB 11111111b //0
DB 01111111b //1
DB 00111111b //2
DB 00011111b //3
DB 00001111b //4
DB 00000111b //5
DB 00000011b //6
DB 00000001b //7
DB 00000000b //8
END
Варіанти індивідуальних завдань
№
| Текст індивідуального завдання
|
| Здійснити прийом даних по RS-485. На вхід драйвера мікросхеми RS-485 приходить число, що може мати значення (1.. 8), яке відповідає за швидкість переміщення світної точки по світлодіодній лінійці (кількість сегментів в секунду), напрямок LED15…LED8. Швидкість передачі 9600 бод, режим роботи: 8-бітний, асинхронний. Початковий стан: світлодіодна лінійка погашена до початку прийому першого байта.
|
| Здійснити передачу даних по RS-485. Контролер передає однобайтне число, яке відповідає значенню старших 8-біт від 7 каналу АЦП, дані передаються з дискретністю не більше 10Гц. Швидкість передачі 19200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
|
| Здійснити прийом даних по RS-485. На вхід драйвера мікросхеми RS-485 приходить число, що може мати значення (1.. 4), яке відповідає за кількість засвічених світлодіодів на лінійці, які переміщуються з сталою швидкістю 1сегмент в секунду, напрямок LED8…LED15. Швидкість передачі 57600 бод, режим роботи: 8-бітний, асинхронний. Початковий стан: світлодіодна лінійка погашена до початку прийому першого байта.
|
| Здійснити передачу даних по RS-485. Контролер передає однобайтне число, яке відповідає значенню старших 4-біт від 6 каналу АЦП, дані передаються з дискретністю не більше 10Гц. Швидкість передачі 115200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
|
| Здійснити прийом даних по RS-485. На вхід драйвера мікросхеми RS-485 приходить число, що може мати значення (0.. 255), отримане число відображати на статичному семисегменому індикаторі. Швидкість передачі 9600 бод, режим роботи: 8-бітний, асинхронний. Початковий стан: індикатор погашено до почотку прийомому першого числа.
|
| Здійснити передачу даних по RS-485. Контролер передає однобайтне число, яке відповідає за номер натиснутою кнопки на матричній клавіатурі, натискання кнопки «#» i «*» программа ігнорує. Швидкість передачі 19100 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
|
| Здійснити прийом даних по RS-485. На вхід драйвера мікросхеми RS-485 приходить однобайтне число, старша тетрада якого вказує на координати світної точки на матричному індикатор по горизонталі, молодша тетрада вказує на координати світної точки на матричному індикаторі по вертикалі. Нумерація індикатора з лівого нижнього кута (тобто при отриманні цифри 011Н, засвічується нижній лівий сегмент матричного світлодіодного індикатора, при отримані цифри 057Н, засвічується верхній правий сегмент матричного світлодіодного індикатора). Швидкість передачі 57600 бод, режим роботи: 8-бітний, асинхронний. Початковий стан: матричний світлодіодний індикатор погашена до початку прийому першого байта.
|
| Здійснити передачу даних по RS-485. Контролер передає однобайтне число, яке відповідає значенню змінної, дане значення інкрементується на одиницю при натисканні кнопки на енкодері і декриментується при натисканні кнопки на джойстику, при досягнені значення 0 - змінна не зменшується, при досягненні значення 99 - змінна не збільшується. Швидкість передачі 115200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта. Початковий стан: передається значення змінної.
|
| Здійснити прийом даних по RS-485. На вхід драйвера мікросхеми RS-485 приходить число, що може мати значення (0.. 9), яке відповідає за яскравість світіння світлодіодної лінійки (0 – індикатори погашено, 1 – мінімальна яскравість засвітки, 9 – максимальна яскравість засвітки індикатора). Швидкість передачі 9600 бод, режим роботи: 8-бітний, асинхронний. Початковий стан: світлодіодна лінійка погашена до початку прийому першого байта.
|
| Здійснити передачу даних по RS-485. Контролер передає однобайтне число, яке відповідає значенню змінної, яка задається обертанням ручки енкодера, при повороті в напрямку за годинниковою стрілкою змінна інкрементується, при обертанні в напрямку проти годинникової стрілки змінна декриментується, значення зміноє відображається у двійковому коді на світлодіодній лінійці. Швидкість передачі 19100 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
|
Воспользуйтесь поиском по сайту: