1.実験の目的
並列インターフェース8255を介して交差点の交通灯のアナログ制御を実現し、さらに並列インターフェースの使用を習得します。
2.実験原理と内容
3つのプログラミングのヒント
交差点での交通灯の法則の変更には、次のものが必要です。
4、回路配線図
5、プログラム設計フローチャート
六、いくつかの説明
この実験では、主に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