交通灯控制实验
- 格式:doc
- 大小:87.50 KB
- 文档页数:6
交通灯控制实验
学院:信息技术学院班级:计07_2
第一完成人:王双卿学号:200707111093
第二完成人:王万昭学号:200707111078
第三完成人:张博学号:208070711104
第四完成人:曹然学号:208070711166
第四完成人:张伟学号:208070711173
实验目的:综合运用8259A,8253,8255A三个接口芯片,学会它们之间的配合使用实验内容:如下图所示,L7,L6,L5作为南北路口的交通灯,与PC7,PC6,PC5相
连;L2,L1,L0作为东西路口的交通灯,与PC2,PC1,PC0相连,编程使六个交通灯,按交通灯变化规律,循环点亮或熄灭。
实验中各个芯片间的连线:
程序流程图:
实验程序:
data segment
count dw 0
data ends
stack segment stack ‘stack’
db 100 dup(?)
stack ends
code segment
main proc far
assume cs:code,ds:data,es:data,ss:stack
start:
mov ax,stack
mov ss,ax
mov ax,data
mov ds,ax
mov al,00110101B ;8253控制字:通道0,先写低字节,后写高字节,方式2,二进制计数mov dx,283h
out dx,al ;写入控制字
mov al,00h
mov dx,280h ;先送出低字节
out dx,al
mov al,50h ;后送出高字节
out dx,al
mov al,01110111b ;8253控制字:通道1,先写低字节,后写高字节,方式3,二进制计数mov dx,283h
out dx,al ;写入控制字
mov al,00h
mov dx,281h ;先送出低字节
out dx,al
mov al,20h ;后送出高字节
out dx,al
mov al,10000000b ;8255A控制字:
mov dx,28bh ;写入控制字
out dx,al
mov al,ofh ;得到原中断向量
mov ah,35h
int 21h
push es ;存储原中断向量
push bx
push ds
mov dx,offset qq ;设置中断向量
mov ax,seg qq
mov ds,ax
mov al,0fh
mov ah,25h
int 21h
pop ds
in al,21h ;设置中断屏蔽位
and al,7fh
out 21h,al
sti
wai:
mov ah,1
int 16h
jz wai
pop dx
pop ds
mov al,0fh
mov ah,25h
mov ah 4ch
int 21h
ret
main endp
delay proc near ;延时子程序
push di
push si
mov di,2000
delay1:mov si,3000
delay2: dec si
jnz delay2
dec di
jnz delay1
pop si
pop di
ret
delay endp
qq proc near ;中断服务子程序
push ds
push ax
push cx
push dx
mov ax,data
mov ds,ax
sti
cmp count ,0
jnz pp
mov cx,3
mov al,0 ;东西路口的绿灯灭mov dx,28bh
out dx,al
mov al,00001111b ;南北路口的红灯亮out dx,al
loop1: ;东西路口的黄灯闪mov al,00000011b
out dx,al
call delay
mov al,00000010b
out dx,al
call delay
jnz loop1
mov al,00001110b ;南北路口的红灯灭
out dx,al
mov al,00001011b ;南北路口的绿灯
out dx,al
mov al,00000101b ;东西路口的红灯同时亮out dx,al
inc count
jmp exit
pp:
mov cx,3
mov al,00001010b ;南北路口的绿灯灭
mov dx,28bh
out dx,al
loop2: ; 南北路口的黄灯闪mvo al,00001101b
out dx,al
call delay
mov al,00001100b
out dx,al
call delay
dec cx
jnz loop2
mov al,00001111b ;南北路口的红灯亮out 28bh,al
mov al,00000100b ;东西路口的红灯灭out dx,al
mov al,1 ;东西路口的绿灯亮
out dx,al
dec count
exit:cli
mov al,20h
out 20h,al
pop dx
pop cx
pop ax
pop ds
iret
qq endp
code ends
end start