📄
字号:
mov ah,0
out dx,ax
inc di
loop dlo
ret
black: mov dx,con8279
mov ax,0d1h
out dx,ax
mov cx,80h
clsb: nop
nop
loop clsb
ret
code ends
end start
!设计实验:用3个开关输入作为编码0-7,根据输入LED显示相应的0-7。
返回目录
----------------------------------------------------------------
实验七 定时器计时显示实验
硬件连线: 8253OUT0接74LS244的SI0,
地址译码输出CS0与8253的片选CS相连;
地址译码输出CS2与74LS244的片选CS相连
实验效果: LED显示定时器的计时数。
----------------------------------------------------------------
汇编程序:
;=========================================================================
;
; This program use 8253 and LED show time in mm-ss-nn,n:1/100 second
;
;=========================================================================
con8279 equ 0492h ; LED CONTROL PORT
dat8279 equ 0490h ; LED DATA PORT
assume cs:code
code segment public
org 100h
start: jmp start1
table1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
disbuf db 6 dup(0)
;------------------------------------start initial
start1:mov di,offset disbuf
mov cx,6
ini0: mov byte ptr es:[di],3fh
inc di
loop ini0 ; show 00:00:00 first
;-------------------------------------------
mov dx,04a6h ; initial ctc8253
mov al,36h ; ctc0 16bits mode3 cycle
out dx,al
mov dx,04a0h
mov al,24h
out dx,al
mov al,0fh
out dx,al ; SET CTC0 16 bits DATA
;------------------------------------------
mov ax,0
mov bx,0
mov cx,0
push ax
push bx
push cx ; time in ax,bx,cx
mov ax,sp
mov bp,ax
;------------------------------------show number
kplay2:call disply
call dislay
mov dx,04c0h ; check ctc
in11: in al,dx
test al,1
jz in11
in12: in al,dx
test al,1
jnz in12
mov cx,[bp]
inc cl
cmp cl,10
jne nextcm
mov cl,0
inc ch
cmp ch,10
jne nextcm
mov ch,0
mov bx,[bp+2]
inc bl
cmp bl,10
jne nextbx
mov bl,0
inc bh
cmp bh,6
jne nextbx
mov bh,0
mov ax,[bp+4]
inc al
cmp al,10
jne nextax
mov al,0
inc ah
cmp ah,6
jne nextax
mov ah,0
jmp nextax
nextcm:jmp nextcx
nextax:mov [bp+4],ax
showah:push cx
push bx
mov bl,ah
mov bh,0
mov si,bx
mov bx,offset table1
mov cl,es:[bx+si]
mov di,offset disbuf
mov es:[di],cl
showal:mov ah,0
mov si,ax
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+1],al
pop bx
pop cx
nextbx:mov [bp+2],bx
showbh:push cx
mov ax,bx
mov bl,ah
mov bh,0
mov si,bx
mov bx,offset table1
mov cl,es:[bx+si]
mov di,offset disbuf
mov es:[di+2],cl
showbl:mov ah,0
mov si,ax
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
pop cx
nextcx:mov [bp],cx
showch:mov bl,ch
mov bh,0
mov si,bx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+4],al
showcl:mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+5],al
;-----------------------------------
jmp kplay2
;-----------------------------------
dislay:mov bx,2eeh
disla2:dec bx
jnz disla2
mov ax,0c2h
mov dx,con8279
out dx,ax
ret
;-----------------------------------
disply:call black
mov ax,90h
mov dx,con8279
out dx,ax
mov dx,dat8279
mov cx,8
mov di,offset disbuf
dlo: mov al,es:[di]
mov ah,0
out dx,ax
inc di
loop dlo
ret
;----------------------------------
black: mov dx,con8279
mov ax,0d1h
out dx,ax
mov cx,80h
clsb: nop
; nop
loop clsb
ret
code ends
end start
!设计实验:给实验六加上暂停功能,即开关控制计时可暂停、继续。
返回目录
----------------------------------------------------------------
实验八 模拟交通灯显示综合实验
硬件连线: 8253OUT0接74LS244的SI0,地址译码输出CS0与8253的片选CS相连;
8个发光二极管与74LS273的SO相连,地址译码输出CS1与74LS273的片选CS相连
地址译码输出CS2与74LS244的片选CS相连
实验效果: 类似路口交通灯显示,LED显示时间。
----------------------------------------------------------------
汇编程序:
;==================================================================
;
; This program use 8253 show time and control light
;
;==================================================================
con8279 equ 0492h
dat8279 equ 0490h
assume cs:code
code segment public
org 100h
start: jmp start1
table1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
disbuf db 6 dup(0)
second db 9
;------------------------------------start initial
start1: mov di,offset disbuf
mov cx,6
ini0: mov byte ptr es:[di],0h
inc di
loop ini0 ; show 00:00:00 first
mov dx,04a6h ; initial ctc8253
mov al,36h ; ctc0 16bits mode3 cycle
out dx,al
mov dx,04a0h
mov al,24h
out dx,al
mov al,0fh
out dx,al ; out ctc data 16 bits
;------------------------------------show number
kplay2: mov cl,9
mov second,cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
call disply
call dislay
;---------------------------------cycle 1
mov dx,04b0h
mov al,21h
out dx,al ; show 1
mov bx,4
push bx
c11: mov cx,100
c12: call c100s
loop c12 ; 1 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c11
pop bx
mov bx,5
push bx
c13: mov dx,04b0h
mov al,1h
out dx,al ; flash
mov cx,30
c14: call c100s
loop c14 ; 0.3 second
mov dx,04b0h
mov al,21h
out dx,al ; show 1
mov cx,70
c15: call c100s
loop c15 ; 0.7 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c13
;---------------------------------cycle 2
mov cl,8
mov second,cl
mov dx,04b0h
mov al,12h
out dx,al ; show 2
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
call disply
call dislay
pop bx
mov bx,3
push bx
c21: mov cx,100
c22: call c100s
loop c22 ; 1 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c21
pop bx
mov bx,5
push bx
c23: mov dx,04b0h
mov al,2h
out dx,al ; flash
mov cx,30
c24: call c100s
loop c24 ; 0.3 second
mov dx,04b0h
mov al,12h
out dx,al ; show 2
mov cx,70
c25: call c100s
loop c25 ; 0.7 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c23
pop bx
jmp kplay2
c100s: mov dx,04c0h ; ctc 1/100 s
in11: in al,dx
test al,1
jz in11
in12: in al,dx
test al,1
jnz in12
ret
dislay: mov bx,2eeh
disla2: dec bx
jnz disla2
mov ax,0c2h
mov dx,con8279
out dx,ax
ret
disply: call black
mov ax,90h
mov dx,con8279
out dx,ax
mov dx,dat8279
mov cx,8
mov di,offset disbuf
dlo: mov al,es:[di]
mov ah,0
out dx,ax
inc di
loop dlo
ret
black: mov dx,con8279
mov ax,0d1h
out dx,ax
mov cx,80h
clsb: nop
; nop
loop clsb
ret
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -