微机原理与应用实验报告-实验五 走马灯控制实验

1. 实验目的
通过控制八个LED交替闪烁,实现走马灯的效果。
2. 实验内容
1) 现有1MHz的脉冲,利用8253芯片(方式3)输出2s的方波,通过8255C口(任何一位)检测上升沿(或下降沿),控制8255A口输出,依次循环点亮8个LED灯,实现走马灯的效果。
2) 按图11虚线连接电路。

程序清单(注意中英标点符号)

data segment
Ioport8253 equ 280h
Io82530 equ 280h
Io82531 equ 281h
Io8253k equ 283h

Ioport8255 equ 288h
Io8255a equ 288h
Io8255c equ 28ah
Io8255k equ 28bh
data ends
Code segment
Assume cs:code

Start:
Mov dx,Io8253k; 设8253计数器0为工作方式3,先低后高
Mov al,27h
Out dx,al
Mov dx,Io82530; 向计数器0送初值1000.
Mov ax,10h
Out dx,al
Mov dx,Io8253k; 设8253计数器1工作方式3,先低后高
Mov al,67h
Out dx,al
Mov dx,Io82531; 向计数器1送初值2000
Mov ax,20h
Out dx,al

Mov dx,Io8255k; 设8255C口输入,A口输出
Mov al,89h
Out dx,al

Loop1:
mov bl,80h;设A口输出BUF为80h

Loop2:
mov dx,Io8255c
In al,dx

Loop3:
mov ah,al
In al,dx
Cmp al,ah; 检测PC0是否是上升沿
Jle loop3
Mov dx,Io8255a; 设8255A口输出BUF
Mov al,bl
Out dx,al
Shr bl,1; BUF右移一位
Cmp bl,0
Jz loop1; 若BUF为0则跳转
Mov ah,06; 判断键盘有无输入
Mov dl,0ffh
Int 21h
Jz loop2
Mov ah,4ch
Int 21h
Code ends
End start

发表回复