资源描述:
《实验一 交通灯控制实验(8255).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一交通灯控制实验(8255)一、实验目的掌握8255方式0的工作原理及使用方法。二、实验内容通过并行接口8255实现十字路口交通灯的模拟控制。如下图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律燃灭。三、编程提示1、8255控制寄存器端口地址28BHA口的地址288HC口的地址28AH2、十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。(3)南北路口的红
2、灯、东西路口的绿灯同时亮3秒左右。(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5)转(1)重复。四、参考流程图五、编写程序前的初步工作1、应用程序中需要替换的地址记录下基址,并用记录下的基址值替换每个汇编程序头中定义行中的值。其中”0C400h”是TPC设备在微机中被动态分配的io基地址,相当于设备中的地址0280h。替换方法:用记录下的基址值替换每个汇编程序头中的定义行中的值,并重新编译链接后即可。io基地址为:ioportequ0C400h-0280h;ioport是TPC卡中设备的IO地址。如:并行接口芯片8255即:替换前替换后8255
3、控制寄存器地址28BH0C40BHC口地址28AH0C40AH端口地址程序IoPORTEQU0C400H-0280H;IoPORT是TPC卡中设备的IO地址Io8255CEQUIoPORT+28AH;Io8255C是8255C口的地址Io8255CTREQUIoPORT+28BH;Io8255CTR是8255控制寄存器地址2、(1)写工作方式控制字MOVAL,10000000B;A,B,C三个端口设为方式0,输出(2)各步骤的置/复位控制字步骤1:南北路口绿灯亮(L5置1),东西路口红灯亮(L2置1)MOVAL,00100100B步骤2:南北黄灯亮(L6置1),
4、东西红灯亮(L2置1)MOVAL,01000100B南北黄灯灭(L6置0),东西红灯亮(L2置1)MOVAL,00000100B步骤3:南北红灯亮(L7置1),东西绿灯亮(L0置1)MOVAL,10000001B步骤4:南北红灯亮(L7置1),东西黄灯亮(L1置1)MOVAL,10000010B南北红灯亮(L7置1),东西黄灯灭(L1置0)MOVAL,10000000B3、软件延时:由于位长只有16位,计数次数最多为FFFFH次,延时过短,肉眼难以分辨,故需进行嵌套,在此程序中采用双层嵌套即可,设置外层计数值为0FFFFH,内层长延时和短延时分别为0FFFFH和
5、05000H,即长延时为FFFFH*FFFFH*(机器周期),短延时为5000H*FFFFH*(机器周期)。4、如何判断有无键按下:调用DOS功能子程序中的6号功能。当(DL)=0FFH时,执行键盘输入操作,在执行功能子程序时:有键按下:ZF=0字符的ASCII码在AL中;无键按下:ZF=1。六、源程序DATASEGMENTIoPORTEQU0C400H-0280H;Io8255CEQUIoPORT+28AH;Io8255CTREQUIoPORT+28BH;DATAENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,Io8255CTR
6、;设置控制端口地址为0C40BHMOVAL,10000000B;A,B,C三个端口设为方式0,输出OUTDX,AL;写入控制端口LOP:MOVDX,Io8255C;C口地址为0C40AHMOVAL,00100100B;步骤1:南北路口绿灯亮(L5置1),东西路口红灯亮(L2置1)OUTDX,AL;写入C口CALLLDELAY;调用长延时子程序MOVCX,3;闪烁计数值3L1:MOVAL,01000100B;步骤2:南北黄灯亮(L6置1),东西红灯亮(L2置1)OUTDX,ALCALLSDELAY;调用短延时程序MOVAL,00000100B;南北黄灯灭(L6置0
7、),东西红灯亮(L2置1)OUTDX,ALCALLSDELAY;调用短延时子程序LOOPL1;计数值减一,跳至L1MOVAL,10000001B;步骤3:南北红灯亮(L7置1),东西绿灯亮(L0置1)OUTDX,ALCALLLDELAY;调用长延迟MOVCX,3L2:MOVAL,10000010B;步骤4:南北红灯亮(L7置1),东西黄灯亮(L1置1)OUTDX,ALCALLSDELAYMOVAL,10000000B;南北红灯亮(L7置1),东西黄灯灭(L1置0)OUTDX,ALCALLSDELAY;调用短延时子程序LOOPL2;计数值减一,跳至L2MOVDL,
8、0FFH;按任意键结束M