Новичок
Джуниор
Регистрация: 14.12.2011
Сообщений: 1
|
Разработать микропроцессорную систему управления с матричным светодиодным табло (Assembler)
Табло состоит из 16 строк по 8 светодиодов в каждой строке. Обеспечить вывод на табло символ «Л», временной интервал между выводом строк 2 секунды. Полностью выведенный символ отображается в течении 10 и секунд. Для управления использовать микропроцессор К1810ВМ86 аналог Intel 8086. Для работы использовать эмулятор EMU 8086
Способ Вывода: Динамический
Наличие ОЗУ: Нет
Есть исходники:
1) ОЗУ нет, вывод статистический
Код:
name "BM86"
org 100h
Start:
mov AX,3
int 10h
mov CH, 32
mov AH, 1
int 10h
mov AX, 0
mov SI, AX
NewStr:
mov DH , Data + SI
mov DL ,0
NewDiod:
mov CX, DX
mov DX, SI
mov DH, DL
mov DL, CL
mov BH, 0
mov AH, 2
int 10h
mov DX, CX
mov BL,0
rol DH,1
mov AL, DH
and AL, 01
jz ColorGen
mov BL,5
ColorGen:
add BL,9h
mov CX ,01h
mov BH, 00h
mov AH, 9
mov AL, 254
int 10h
inc DL
inc DL
mov AL, DL
xor AL, 10h
jnz NewDiod
inc SI
mov AH, 00
int 1Ah
mov BX, DX
add BX, 36
jae ClockStr
CloackStrRound:
mov AH, 00
int 1Ah
and DX, 8000h
jnz CloackStrRound
ClockStr:
mov AH, 00
int 1Ah
mov AX, BX
sub AX, DX
jae ClockStr
mov AX, SI
xor AX, 16
jnz NewStr
mov AH, 00
int 1Ah
mov BX, DX
add BX, 182
ClockOut:
mov AH, 00
int 1Ah
mov AX, BX
sub AX, DX
jae ClockOut
jmp Start
ret
Data db 00FH, 01FH, 033H, 033H, 033H, 033H, 033H, 033H, 033H, 033H, 033H, 033H, 033H, 033H, 073H, 073H
2) ОЗУ есть, вывод динамический
Код:
org 100h
name "Tablo"
org 100h
jmp start
msg1: db "00001111", 0Dh, 24h
msg2: db "00011111", 0Dh, 24h
msg3: db "00110011", 0Dh, 24h
msg4: db "00110011", 0Dh,, 24h
msg5: db "00110011", 0Dh,, 24h
msg6: db "00110011", 0Dh, 24h
msg7: db "00110011", 0Dh, 24h
msg8: db "00110011", 0Dh,, 24h
msg9: db "00110011", 0Dh,, 24h
msg10: db "00110011", 0Dh, 24h
msg11: db "00110011", 0Dh, 24h
msg12: db "00110011", 0Dh, 24h
msg13: db "00110011", 0Dh, 24h
msg14: db "00110011", 0Dh, 24h
msg15: db "01110011", 0Dh, 24h
msg16: db "01110011", 0Dh, 24h
msg17: db "00001111", 0Dh,0Ah, 24h
msg18: db "00011111", 0Dh,0Ah, 24h
msg19: db "00110011", 0Dh,0Ah, 24h
msg20: db "00110011", 0Dh,0Ah, 24h
msg21: db "00110011", 0Dh,0Ah, 24h
msg22: db "00110011", 0Dh,0Ah, 24h
msg23: db "00110011", 0Dh,0Ah, 24h
msg24: db "00110011", 0Dh,0Ah, 24h
msg25: db "00110011", 0Dh,0Ah, 24h
msg26: db "00110011", 0Dh,0Ah, 24h
msg27: db "00110011", 0Dh,0Ah, 24h
msg28: db "00110011", 0Dh,0Ah, 24h
msg29: db "00110011", 0Dh,0Ah, 24h
msg30: db "00110011", 0Dh,0Ah, 24h
msg31: db "01110011", 0Dh,0Ah, 24h
msg32: db "01110011", 0Dh,0Ah, 24h
clear: db " ",0Dh,0Ah,24h
start:
mov dx,msg17
next_str:
mov ah,09h
int 21h
add dx,11
cmp dx,msg32
jg end_cycle
call Time_1
jmp next_str
end_cycle:
mov ax,6
mov al,0
mov bh,7
mov ch,0
mov cl,0
mov dh,15
mov dl,15
int 10h
mov bp,0030
start_din:
mov dx,msg1
next_str_din:
mov ah,09h
int 21h
push dx
mov ah,09h
mov dx,clear
int 21h
pop dx
add dx,10
cmp dx,msg16
jg end_cycle2
jmp next_str_din
end_cycle2:
mov ax,6
mov al,0
mov bh,7
mov ch,0
mov cl,0
mov dh,15
mov dl,15
int 10h
dec bp
cmp bp,0
je delay
jmp start_din
delay:
call Time_2
jmp start
Time_1 PROC
mov cx, 00fh
m1: nop
loop m1
ret
Time_1 ENDP
Time_2 PROC
mov cx, 00fh
m2: nop
loop m2
ret
Time_2 ENDP
Переделать надо одну из них, лишь бы работала в соответствии с заданием.
|