mov al,69h ;01101001南北红,东西绿(绿亮) mov dx,202h out dx,al call delay2
mov al,6fh ;01101111南北红(绿灭) mov dx,202h out dx,al call delay2
mov al,69h ;01101001南北红,东西绿(绿亮) mov dx,202h out dx,al call delay2
mov al,6fh ;01101111南北红(绿灭) mov dx,202h out dx,al call delay2
mov al,69h ;01101001南北红,东西绿(绿亮) mov dx,202h out dx,al call delay2
mov al,99h ;10011001南北红,东西黄 mov dx,202h out dx,al call delay1
jmp loop1
delay1 proc ;延迟 push cx push dx mov dx,100 dl500: mov cx,2801 dl10Ms: loop dl10Ms dec dx jnz dl500 pop dx pop cx ret delay1 endp
delay2 proc ;延迟 push cx push dx mov dx,10 dl5002: mov cx,2801 dl10Ms2: loop dl10Ms2 dec dx jnz dl5002 pop dx pop cx ret delay2 endp code ends
end start
实验总结:
1.本实验与上一个实验都是使用8255通用芯片,不同之处在于,该实验要写控制字的方对 C端口的输出进行控制,以达到控制红绿灯的目的。
2.写命令字的地址为203,通过写入90h命令字实验端口分配,A做输入,BC做输出。不 A、B端口都不会被使用。只是控制C端口就可以控制红绿灯。
3.根据C端口8个输出位于每个二极管的对应关系可以知道命令字形式与红绿灯情况的对 关系。通过地址203写入控制字,并在个命令之间加以适当的延迟,就可以控制红绿灯。 4.由于程序运行很快,所以要专门写延迟程序段delay1和delay2。而且由于一个延时计 范围有限,因此需要进行嵌套增加延时时间。
相关推荐: