西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
西北师范大学《大学计算机基础》实验报告
第二篇:中山大学实验报告模板+微机交通灯报告
中山大学 实验报告
SUN YAT-SEN UNIVERSITY
院(系) 学 号 审批
专 业 实验人
实验题目:实验八:交通灯控制
四.实验流程图
五、实验程序:
data segment
io8255a equ 28ah
io8255b equ 28bh
io8255c equ 288h
io8253a equ 280h
io8253b equ 281h
io8253c equ 283h
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
mesg1 db 0dh,0ah,'Input a num (1--9),other key is exit:','$'
mesg2 db 0dh,0ah,'Error!','$'
second db ?
tl db ?
now db ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov dx,io8255b ;设8255为A口输出,C口输入
mov ax,89h
out dx,al
mov dx,io8253c ;设8253计数器0为方式3
mov al,36h
out dx,al
mov dx,io8253a
mov ax,10000 ;写入计数器0初值10000
out dx,al
mov al,ah
out dx,al
mov ax,cs
mov ds,ax
mov dx,offset int3
mov ax,250bh
int 21h ;设置IRQ3的中断矢量
in al,21h ;读中断屏蔽寄存器
and al,0f7h ;开放IRQ3中断
out 21h,al
mov ax,data
mov ds,ax
input:mov dx,offset mesg1 ;显示提示信息
mov ah,9
int 21h
mov ax,0c01h ;清空缓存并读入一个字符
int 21h
cmp al,'1' ;检测是否为1--9
jl exit
cmp al,'9'
jg exit
jmp next
exit: mov dx,2a8h
mov al,0
out dx,al
mov dx,io8255c
mov al,0
out dx,al
mov ah,4ch
int 21h
next: sub al,30h ;字符经过处理后为绿灯亮的秒数,存入second的第二位
mov bl,10
mul bl
sub al,5
mov second,al
mov tl,al
sti ;开中断
ld: mov al,second ;亮灯1
mov ah,0
mov cx,ax
mov dx,2a8h
mov al,81h
out dx,al
mov now,al
l1: call delay
mov ah,0bh
int 21h
cmp al,0ffh
jz input
loop l1
mov dx,2a8h ;亮灯2
mov al,82h
out dx,al
mov now,al
mov cx,5
l2: mov al,tl
mov bx,offset led ;使BX指向段码管首址
xlat
mov dx,io8255c
out dx,al
call delay
dec tl
mov ah,0bh
int 21h
cmp al,0ffh
jz input
loop l2
mov al,5
mov tl,al
mov dx,io8255c ;关数码管
mov al,0
out dx,al
mov al,second ;亮灯3
mov ah,0
mov cx,ax
mov dx,2a8h
mov al,24h
out dx,al
mov now,al
l3: call delay
mov ah,0bh
int 21h
cmp al,0ffh
jnz next1
jmp input
next1:loop l3
mov dx,2a8h ;亮灯4
mov al,44h
out dx,al
mov now,al
mov cx,5
l4: mov al,tl
mov bx,offset led ;使BX指向段码管首址
xlat
mov dx,io8255c
out dx,al
call delay
dec tl
mov ah,0bh
int 21h
cmp al,0ffh
jnz next2
jmp input
next2:loop l4
mov al,5
mov tl,al
mov dx,io8255c ;关数码管
mov al,0
out dx,al
jmp ld
int3: push ax
push cx
push dx
push ds
mov dx,io8255c ;关数码管
mov al,0
out dx,al
mov dx,2a8h ;亮两个红灯
mov al,84h
out dx,al
che: mov dx,io8255a ;检查是否关闭紧急开关
in al,dx
and al,40h
cmp al,40h
jz che
mov dx,2a8h ;恢复之前的led状态
mov al,now
out dx,al
pop ds
pop dx
pop cx
pop ax
mov al,20h
out 20h,al
sti
iret
delay proc near ;延时子程序
mov dx,io8253c
mov al,70h ;设计数器1为工作方式0
out dx,al
mov dx,io8253b
mov ax,100 ;写入计数器1初值
out dx,al
mov al,ah
out dx,al
ag : mov dx,io8255a
in al,dx
and al,80h
cmp al,80h
jnz ag
yel: in al,dx
and al,20h
cmp al,20h
jnz back
mov al,now
mov ah,0
push ax
call yellow
pop ax
mov now,al
mov dx,2a8h
out dx,al
back: ret
delay endp
yellow proc near
bg: mov al,42h
mov now,al
mov dx,2a8h
out dx,al
mov dx,io8253b
mov ax,50 ;写入计数器1初值
out dx,al
mov al,ah
out dx,al
mov dx,io8255a
ag2: in al,dx
and al,80h
cmp al,80h
jnz ag2
mov al,0
mov now,al
mov dx,2a8h
out dx,al
mov dx,io8253b
mov ax,50 ;写入计数器1初值
out dx,al
mov al,ah
out dx,al
mov dx,io8255a
ag3: in al,dx
and al,80h
cmp al,80h
jnz ag3
in al,dx
and al,20h
cmp al,20h
jz bg
ret
yellow endp
code ends
end start