微机接口实验三:交通灯控制实验(C口置位/复位控制字的使用)
程序员文章站
2022-03-15 14:04:25
...
一、实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
二、实验原理和内容
三、编程提示
十字路口交通灯的变化规律要求:
四、电路接线图
五、程序设计流程图
六、一些说明
这个实验主要用到了8255中的C口置位/复位控制字,实现一个灯变化而另外几个灯不变化的效果。
七、程序源代码
stack segment stack
db 200 dup(0)
stack ends
data segment
APORT equ 288h
CPORT equ 28ah
CTRL equ 28bh
data ends
code segment
assume cs:code,ds:data,ss:stack
delay MACRO x ;延时
local loop_delay
local flag
push cx
push bx
xor bx, bx
flag:mov cx, 0ffffh
loop_delay:loop loop_delay
inc bx
cmp bx, x
jnz flag
pop bx
pop cx
ENDM
put_data MACRO x, y ;x为端口 y为数据
push ax
push dx
mov al, y
mov dx, x
out dx, al
pop dx
pop ax
ENDM
main:mov ax,data
mov ds,ax
mov ax, stack
mov ss, ax
put_data CTRL, 10000000b ;C口输出
again:put_data CPORT, 00100100b ;南北绿灯(PC5)东西红灯(PC2)同时亮30秒
delay 3000 ;延时30秒
put_data CTRL, 00001010b ;先让南北绿灯熄灭
mov cx, 5 ;东西黄灯闪五次
loop1:put_data CTRL, 00001101b ;南北黄灯(PC6)亮同时东西红灯保持不变
delay 100 ;延时制造闪烁
put_data CTRL, 00001100b ;南北黄灯熄灭同时东西红灯保持不变
delay 100
loop loop1
put_data CPORT, 10000001b ;南北红灯(PC7)东西绿灯(PC0)同时亮30秒
delay 3000
put_data CTRL, 00000000b ;先让东西绿灯(PC0)熄灭
mov cx, 5 ;南北黄灯闪烁5次
loop2:put_data CTRL, 00000011b ;东西黄灯(PC1)亮同时南北红灯保持不变
delay 100 ;延时制造闪烁
put_data CTRL, 00000010b ;东西黄灯熄灭同时南北红灯保持不变
delay 100
loop loop2
jmp again ;循环往复
mov ah,4ch
int 21h
code ends
end main
上一篇: 使用JQUERY制作可移动列的表格