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