Отчет по практике: Мікропроцесорна техніка
Текст програми:
port equ0fffch | ;port адреса порту А |
regcon equ0ffffh | ;regcon адреса регістра керування |
cseg | ;директива початку сегмента коду |
mov a,#10010000b | ;порт А – вивід, У и С – уведення |
movdptr,#regcon | ;завантаження адреси регістра керування |
movx @dptr,a | ;настроювання ППИ |
mov dptr,#port | ;завдання адреси порту А |
mov a,#11010110b | ;установлюємо відповідні біти |
14. Записати "0" до 0,1, 4, 5, 7 бітів порту А стенда УУМС-2
Текст програми:
port equ 0fffch | ;port адреса порту А |
port equ 0fffdh | ;port |
regcon equ 0ffffh | ;regcon адреса регістра керування |
cseg | ;директива початку сегмента коду |
mov a,#10010000b | ;порт А – вивід, У и С – уведення |
movdptr,#regcon | ;завантаження адреси регістра керування |
movx @dptr,a | ;настроювання ППИ |
movdptr,#port | ;завантаження адреси порту В |
movA,@dptr | ;уведення інформації через порт В |
mov r1,#01001100b | ;вказівка бітів для скидання |
anla,r1 | ;скидання зазначених бітів |
movx@dptr,#port | ;завдання адреси порту А |
movx@dptr,a | ;вивід нформації через порт А |
15. Проінвертувати нформацію з порту В у відповідні одиничні біти акумулятора стенда УУМС-2
Текст програми:
port equ 0fffdh | ;port |
regcon equ 0ffffh | ;regcon адреса регістра керування |
cseg | ;директива початку сегмента коду |
mov a,#10010000b | ;порт А – вивід, У и С – уведення |
movdptr,#regcon | ;завантаження адреси регістра керування |
movx @dptr,a | ;настроювання ППИ |
movdptr,#port | ;завантаження адреси порту В |
movA,@dptr | ;уведення інформації через порт В |
movr0,a | ;зберігаємо уведене значення |
mova,#01010011b | ;слово відповідно до якого |
;буде зроблена інверсія | |
xrla,r0 | ;інверсія значення порту по Асс |
movx@dptr,#port | ;завдання адреси порту А |
movx@dptr,a | ;вивід нформації через порт А |
15. Прочитати стан перемикачів, зберегти в А, проінвертувати 0, 3, 6, 7 біти акумулятора й видати на лінійку світодіодів.
Текст програми:
Delay equ 0220h | Delay адреса затримки 1 сек. |
Button equ 0fff2h | button відповідає адресі перемикачів |
ldiodequ 0fff1h | ldood відповідає адресі світодіодів |
cseg | директива повідомляє про початок сегмента коду |
callDelay | затримки 2із для можливості установки |
callDelay | потрібного значення на перемикачах |
movdptr,#button | завантаження в dptr адреси перемикачів |
movxa,@dptr | збереження стану перемикачів в А |
xrl a,#11001001 | інвертування зазначених бітів А |
movdptr,#ldiod | завантаження в dptr адреси світодіодів |
movx @dptr,a |
відображення на лінійці світодіодів кінцевого значення |
16. Проінвертувати 1, 2, 4, 6, 7 біти порту В, і видати отримане слово на порт А стенда УУМС-2Текст програми:
Текст програми:
port equ0fffch | ;port адреса порту А |
port equ 0fffdh | ;port адреса порту В |
regcon equ0ffffh | ;regcon адреса регістра керування |
cseg | ;директива початку сегмента коду |
mov a,#10010000b | ;порт А – вивід, У и С – уведення |
movdptr,#regcon | ;запис в regcon керуючої інформації |
movx @dptr,a | ;настроювання ППИ |
movdptr,#port | ;завантаження адреси порту В (прийом) |
movxa,@dptr | ;зчитуємо значення з порту В |
xrla,#01101011b | ;інвертуємо зазначені біти |
mov dptr,#port | ;завдання адреси порту А |
movx @dptr,a |
;виводимо на порт А значення з ;проінвертованими бітами |
17. Програма видає вміст акумулятора в послідовному коді через зазначену лінію порту, залишаючи без зміни інші біти порту. Передача виробляється з молодшого біта.
Текст програми:
cseg | ;сегмент коду | |
org 2000h | ;початкова адреса програми | |
MOV R2, #8 | ;лічильник біт => R2 | |
MET: | RRC A | ;зрушення Асс через прапор З |
MOV P1.0, C | ;передача біта в Порт Р1 | |
NOP | ;виклик затримки | |
DJNZ R2, MET | ;зменшення лічильника й повтор |
18. Програма організує послідовну передачу даних акумулятора на зазначений вивід порту в манчестерському коді. Біт передається двома інтервалами: перший - інверсія, другий - пряме значення біта.
Текст програми:
cseg | ;сегмент коду | |
org 2000h | ;початкова адреса програми | |
mov R0,#8 | ;лічильник | |
loop: | rrc a | ;зсув А вправо через прапор переносу |
cpl c | ;інвертування біта | |
mov P2.0,c | ;передача нверсного значення біта | |
cpl c | ;відновлення прямого значення біта | |
call 0230h | ;затримка для вирівнювання тривалості інтервалів | |
mov P2.0,c | ;передача прямого значення біта | |
djnz R0,loop | ;цикл |
ІНДИВІДУАЛЬНІ ПРОЦЕДУРИ
1. Процедура відображення уведеної з перемикачів інформації на семисегментном індикаторі в шестнадцатеричном коді.
Уведення й відображення значень перемикачів здійснюється за допомогою регістра DPTR по адресах відповідно 0FFF2h й 0FFF1h.
Візуалізацію здійснює процедура visual, що послідовно виділяє те молодшу, те старшу частину слова для конвертування 4 біт двійкової системи вирахування в код семисегментного індикатора, відповідно до таблиці символів get_num.
Відповідно до алгоритму роботи програми варто написати код програми.
Текст програми:
cseg | ||
org 2000h | ||
jmp main | ||
main: | ||
loop: | mov DPTR,#0FFF2h | ;прийняття значень перемикачів |
movx A,@DPTR | ||
mov DPTR,#0FFF7h | ;завдання нач. адресі СС індикатора для процедури візуалізації | |
call visual | ;виклик процедури візуалізації | |
call 0203h | ;затримка для фіксації значення | |
sjmp loop | ;цикл сканування перемикачів | |
visual: | mov R0,A | ;в R0 зберігається тимчасове значення аккум. |
anl A,#0Fh | ;виділення мол. 4 біт | |
call get_num | ;конвертування в СС-код | |
movx @DPTR,A | ;вивід | |
inc DPTR | ;наступна цифра | |
mov A,R0 | ;перезапис значення | |
swap A | ; виділення ст. 4 біт | |
anl A#0Fh | ||
call get_num | ;конвертування в СС-код | |
movx @DPTR,A | ;вивід | |
ret | ||
get_num:inc A | ;функція одержання семисегметного коду | |
movx A,@A+PC | ;таблиця кодів | |
db 00111111b | ;0 | |
db 00000111b | ;1 | |
db 01011011b | ;2 | |
db 01001111b | ;3 | |
db 01100110b | ;4 | |
db 01101101b | ;5 | |
db 01111101b | ;6 | |
db 00000111b | ;7 | |
db 01111111b | ;8 | |
db 01101111b | ;9 | |
db 01110111b | ;A | |
db 01111101b | ;B | |
db 00111001b | ;C | |
db 01011110b | ;D | |
db 01111001b | ;E | |
db 01110001b | ;F | |
ret |
2. Функція уведення числа й паралельного його відображення з можливістю підтвердження уведення.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13