
- •Тема: Дослідження засобів динамічної індикації мпс.
- •Р ис.2.16. Структурна схема динамічної індикації.
- •Виконання роботи
- •Запишимо приклад програми керування динамічним індикатором:
- •4. За заданим варіантом розробимо програму виконання операції віднімання двохбайтових чисел:
- •5. Виведемо на динамічний семисегментний світлодіодний індикатор hl2 відємник 00ff:
- •Висновок:
4. За заданим варіантом розробимо програму виконання операції віднімання двохбайтових чисел:
FF00 – 00FF = FE01
Виведемо на динамічний семисегментний світлодіодний індикатор HL2 зменшуване FF00:
ORG 0 ;розміщення програми з адреси 0000.
mov DPTR, #0A004h ;гасіння розрядів
mov A,#00Fh ;статичного індикатора.
movx @DPTR, A
Continue:
;підготовка першого ліворуч (№0) розряду HL2.
mov A, #0000b ;запис в А адреси 00 розряду №0 HL2.
mov DPTR,#8002h ;запис в DPTR адреси 8002 (порту С).
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A,# 000111001b ;запис семисегментного коду 000111001 ;цифри 2 в А.
mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В
movx @DPTR, A ;записати вміст А в порт В.
call DELAY10 ;затримка
;підготовка другого ліворуч (№1) розряду HL2.
mov DPTR, #8002h ;запис в DPTR адреси 8002 (порту С).
mov A,#0001b ;запис в А адреси розряду №1 індикатора HL2.
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A,#000111001b ;запис коду 000111001 цифри 0 в А.
mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В,
;звідки дані виводяться на HL2.
movx @DPTR,A ;записати вміст А за адресою, що міститься
;в DPTR, тобто засвітити сегменти A,B,C,D,E,F цифри 0,
;та сегмент H - ':' для розділення годин та хвилин
call DELAY10 ;затримка
;підготовка розряду №2 індикатора HL2.^
mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).
mov A,#0010b ;запис в А адреси розряду №2 індикатора HL2.
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A, # 000111111b ;запис коду 000111111 горіння цифри 1 в А.
mov DPTR, #8001h ;запис у DPTR адреси 8001 порту В.
movx @DPTR, A
;записати вміст А за адресою, що міститься
; в DPTR, тобто в розряд №2 HL2,
call DELAY10 ;затримка.
;підготовка розряду №3 індикатора HL2.
mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).
mov A,#0011b ;запис в А адреси розряду №3 HL2.
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A,# 000111111b ;запис коду 000111111 горіння цифри 2 в А.
mov DPTR,#8001h ;запис у DPTR адреси 8001 порту В.
movx @DPTR,A ;в розряді №3 HL2 засвітити сегменти A,B, ;C, D, E, F,G що формують цифру 8.
call DELAY10 ;затримка.
Jmp Continue
;перехід на початок програми
DELAY10: ;затримка 10 мс
MOV R3, #01h ;0АН = 10D
TCD: LCALL DELAY1
DJNZ R3, TCD ;10 разів зовнішний цикл по 1 мс
RET
DELAY1:
MOV R1, #19h ;1 мкс, (19Н = 25D)
LREX: MOV R2, #012h ;1 мкс, (12Н = 18D)
LRIN: DJNZ R2, LRIN ;(36) мкс на 12 МГц
DJNZ R1, LREX ;25 разів внутрішній цикл по 37 мкс
MOV R0, #8h ;1 мкс,
M1: DJNZ R0, M1 ;2?8=16 мкс,
RET ;2 мкс
End
5. Виведемо на динамічний семисегментний світлодіодний індикатор hl2 відємник 00ff:
ORG 0 ;розміщення програми з адреси 0000.
mov DPTR, #0A004h ;гасіння розрядів
mov A,#00Fh ;статичного індикатора.
movx @DPTR, A
Continue:
;підготовка першого ліворуч (№0) розряду HL2.
mov A, #0000b ;запис в А адреси 00 розряду №0 HL2.
mov DPTR,#8002h ;запис в DPTR адреси 8002 (порту С).
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A,# 000111111b ;запис семисегментного коду 000111111 ;цифри 2 в А.
mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В
movx @DPTR, A ;записати вміст А в порт В.
call DELAY10 ;затримка
;підготовка другого ліворуч (№1) розряду HL2.
mov DPTR, #8002h ;запис в DPTR адреси 8002 (порту С).
mov A,#0001b ;запис в А адреси розряду №1 індикатора HL2.
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A,#000111111b ;запис коду 000111111 цифри 0 в А.
mov DPTR,#8001h ;запис в DPTR адреси 8001 порту В,
;звідки дані виводяться на HL2.
movx @DPTR,A ;записати вміст А за адресою, що міститься
;в DPTR, тобто засвітити сегменти A,B,C,D,E,F цифри 0,
;та сегмент H - ':' для розділення годин та хвилин
call DELAY10 ;затримка
;підготовка розряду №2 індикатора HL2.^
mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).
mov A,#0010b ;запис в А адреси розряду №2 індикатора HL2.
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A, # 000111001b ;запис коду 000111001 горіння цифри 1 в А.
mov DPTR, #8001h ;запис у DPTR адреси 8001 порту В.
movx @DPTR, A
;записати вміст А за адресою, що міститься
; в DPTR, тобто в розряд №2 HL2,
call DELAY10 ;затримка.
;підготовка розряду №3 індикатора HL2.
mov DPTR,#8002h ;запис у DPTR адреси 8002 (порту С).
mov A,#0011b ;запис в А адреси розряду №3 HL2.
movx @DPTR, A ;вміст А записати в порт С.
;завантаження даних в розряд.
mov A,# 000111001b ;запис коду 000111001 горіння цифри 2 в А.
mov DPTR,#8001h ;запис у DPTR адреси 8001 порту В.
movx @DPTR,A ;в розряді №3 HL2 засвітити сегменти A,B, ;C, D, E, F,G що формують цифру 8.
call DELAY10 ;затримка.
Jmp Continue
;перехід на початок програми
DELAY10: ;затримка 10 мс
MOV R3, #01h ;0АН = 10D
TCD: LCALL DELAY1
DJNZ R3, TCD ;10 разів зовнішний цикл по 1 мс
RET
DELAY1:
MOV R1, #19h ;1 мкс, (19Н = 25D)
LREX: MOV R2, #012h ;1 мкс, (12Н = 18D)
LRIN: DJNZ R2, LRIN ;(36) мкс на 12 МГц
DJNZ R1, LREX ;25 разів внутрішній цикл по 37 мкс
MOV R0, #8h ;1 мкс,
M1: DJNZ R0, M1 ;2?8=16 мкс,
RET ;2 мкс
End