Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Приклад програми для лабораторної роботи №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-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.

 


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...