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

Приклад програми для лабораторної роботи №9




Приклад програми для лабораторної роботи №9

Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролер приймає число, яке відповідає номеру каналу АЦП, змінає дані і пересилає на ПЕОМ два байта даних виміряного значення аналогово сигналу (старший байт передається першим). При отриманні числа яке не відноситься до номера каналу АЦП, контролер повертає значення 0000Н. Швидкість передачі 115200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.

$include (mod841)

 

DAT   equ     R0       //дані

ADDR equ     R1       //адрес

 

org 0

JM P Start                           //перехід на мітку Start

 

ORG 023H                        //вектор переривання від UART

jmp UART                         //перехід на опрацювання переривання UART

 

ORG 030H

 

Start:

call ADCInit                      //виклик ініціалізації АЦП

call Init_UART                  //виклик ініціалізації UART

call clear_buff                   //очистка даних буферів

setb EA                                           //дозвіл глобальних переривань

setb ES                                              //дозвіл переривання від UART

 

BEGIN:

 

       cjne R7, #0, measure //перевірка на наявність прийнятих даних

       JMP BEGIN                          //якщо дані не прийняли, то перехід на BEGIN

measure:                             //якщо прийняли дані по UART

       call Measurev        //знімаємо значення аналогової величини з відповідного каналу АЦП

       call puch_char       //пересилаємо старший байт даних

       mov A, R6              //перезаписуємо молодший байт даних в акумулятор

       mov R7, A              //перезаписуємо акумулятор в R7

       call puch_char       //передаємо молодший байт даних

       mov R7, #0             //обнуляємо R7 BEGIN

 

JMP BEGIN                      //перехід на

 

ADCInit:

mov ADCCON1, #10111100b 

ret

 

Init_UART:

mov T3FD, #20h             //за відповідною формулою

mov T3CON, #82h                           //11, 0592MHz,  115200bot

mov SCON, #52h            //SM = 1, TI = 1,

ret

 

Measurev:

; In: -

; Out: R7: R6 -- ADC result

; Alters: a, PSW       

mov A, R7                                       //запис номера каналу для опитування АЦП в акумулятор

orl A, #00010000b                                        //логічне «або» вмісту акумулятора з константою (встановлення каналу АЦП)

   mov ADCCON2, A                                         //запис вмісту акумулятора в регістр налаштування АЦП, запуск вимірювання

jnb ADCI, $                                    //очікування завершення перетворення АЦП

mov a, ADCDATAH                       //запис старшого байта виміряного значення в акумулятор

anl a, #0fh                                       //очищення старшої тетради акумулятора

   mov R7, a                                        //запис старшого байта виміряного значення в R7

mov R6, ADCDATAL                     //запис молодшого байта виміряного значення в R6

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:

jnb RI, exit_uart               //якщо переривання відбулося не при прийомі даних, то виходимо з переривання

clr RI                               //інакше очищаємо RI

mov R7, SBUF                 //перезаписуємо значення з SBUF в R7

exit _uart:

RETI                                 // вихід з переривання

 

END

Варіанти індивідуальних завдань

Текст індивідуального завдання
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролеру передається число, яке може мати значення (0…9), і відображається на матричному індикаторі, на інші цифри програма не реагує. Швидкість передачі 9600 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта. Початковий стан: індикатор погашено.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролеру передається число, яке може мати значення (1…8), що відповідає швидкості переміщення бігучої точки на лінійці світло діодів (кількість сегментів за секунду), а напрямку LED8…LED15. Швидкість передачі 19200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. На ПЕОМ контролер передає число, яке відповідає номеру натиснутої клавіші клавіатур, на натискання клаваш “*” і “#” контролер не реагує. Швидкість передачі 57600 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролер передається число, яке може мати значення (0…9), що відповідає швидкості обертання крокового двигуна в напрямку за годинниковою стрілкою, 0 – двигун зупинено, 1 – мінімальна швидкість, 9 – максимальна швидкість. Швидкість передачі 115200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролеру передається число, яке може мати значення (0…9), що відповідає швидкості обертання двигуна постійного струму, 0 – двигун зупинено, 1 – мінімальна швидкість, 9 – максимальна швидкість. Управляти двигуном використовуючи вбудований ШІМ контролера, частота і розрядність довільна. Швидкість передачі 9600 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролеру передається двобайтне число, яке може мати значення (0000…9999), прийняте число відображається на статичному семи сегментному індикаторі. Швидкість передачі 19200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта. Початковий стан: до прийому першого числа по UART статичний семи сегментний індикатор погашено індикатор погашено.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролеру передається число, яке може мати значення (1…8), що відповідає яскравості світіння лінійки світлодіодів LED8…LED15, 1 – мінімальна яскравість, 8 – максимальна яскравість. Швидкість передачі 57600 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. З ПЕОМ контролер передається число, яке може мати значення (1…99), що відповідає кількості «кроків», які повинен виконати двигун в напрямку проти годинникової стрілки. Нове значення для швидкості не приймається поки двигун не відпрацював попереднє. Швидкість передачі 115200 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. На ПЕОМ контролер передає два байта даних при натисканні кнопки«*» на матричній клавіатурі стенда, які відповідають за виміряне значення аналогового рівня з 7 каналу АЦП. Швидкість передачі 9600 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта. Початковий стан: індикатор погашено.
Здійснити передачу даних по UART, на ПЕОМ прийом і передача виконується терміналом. На ПЕОМ контролер передає два байта даних при натисканні кнопки«#» на матричній клавіатурі стенда, які відповідають за виміряне значення аналогового рівня з 6 каналу АЦП. Швидкість передачі 57600 бод, режим роботи: 8-бітний, асинхронний, дозвіл встановлення біта ознаки закінчення передавання байта. Початковий стан: індикатор погашено.
Поделиться:





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



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