实验目的
掌握8254的基本要作原理和编程方法
实验代码
我就直接上实验代码了
Data segment
IOA equ 280H
IOcon equ 283H
Data ends
Code segment
assume cs:code,ds:data
;编程控制字
;D7 D6 D5 D4 D3 D2 D1 D0
;------------ --------------- -------------------------- -
; | | | |
;计数器选择 读写操作 工作方式选择 0 -> 二进制
;00 -> 计数器0 00 -> 锁定当前计数器 000 ~ 101 1 -> BCD码
;01 -> 计数器1 01 -> 读/写低8位 方式0 ~ 5
;10 -> 计数器2 10 -> 读/写高8位 110 ~ 111
;11 -> 不选择 11 -> 先读/写低8位后高 无效
start:
mov ax,data
mov ds,ax
mov dx,IOcon
mov al,11H ;计数器0,读写低8位,方式0,BCD码
out dx,al
again:
mov al,9H
mov dx,IOA
out dx,al ;初始化计数器0 ---> 9
input :
mov dx,IOA
in al,dx ;读取A口
and al,0FH ;高四位清零
call disp
cmp al,0h
jnz input
call delay
jmp again
mov ax,4c00H ;ah = 4cH 带返回码al结束 al = 0
int 21h
delay proc
push cx
mov cx,0ffffh
n:
nop
loop n
pop cx
ret
delay endp
disp proc near
push ax
push bx
push cx
push dx
mov dl,al
add dl,30h ;相当于显示al个位数字0 ~ 9
mov ah,2 ;显示输出,dl是输出的字符
int 21h
mov dl,0dh ;0dH --> 归位键
int 21h
mov dl,0ah ;0aH --> 换行键
int 21h
pop dx
pop cx
pop bx
pop ax
ret
disp endp
code ends
end start