..微机原理实验报告——实验九交通灯控制实验姓名:学号:..一、实验要求用8255、8253芯片模拟实现交通灯控制,要求亮灯时间用8253控制二、延时置数设计提供的时钟频率为1MHz,而8253最大工作频率为2MHz,所以无需分频。延时5秒对应的计数初值为N=5秒/1MHz=5000000,因为8253有3个16位计数器,每个计数器最大计数初值为:655355000000,所以将两个计数器串联使用。计数器0计数初值为1000,计数器1计数初值为5000。三、实验内容1.实验电路原理图..2.实际电路图..2.实验流程图NY开始初始化南北路口绿灯亮,东西路口红灯亮延时5s南北路口黄灯亮,东西路口红灯亮延时3s南北路口红灯亮,东西路口绿灯亮延时5s南北路口红灯亮,东西路口黄灯闪延时3s有键按下?结束..3.实验代码IOPORTEQU5400H-280H;定义CPU输出地址CODESEGMENTASSUMECS:CODESTART:MOVAL,00100101B;设置8253用计数器0,只读高字节,方式2(自动重复),10进制MOVDX,IOPORT+293HOUTDX,ALMOVAL,10H;给计数器0置数1000(0001000000000000)MOVDX,IOPORT+290HOUTDX,ALMOVAL,10010000B;初始化8255,1--控制字,A口方式0输入,C口输出,B口输出MOVDX,IOPORT+28BHOUTDX,ALINOUT:MOVAL,00100100B;南北路口绿灯亮,东西路口红灯亮MOVDX,IOPORT+28AH;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUTDX,ALMOVAL,01100001B;设置8253通道1,只读高字节,方式0(不自动重复),10进制MOVDX,IOPORT+293HOUTDX,ALMOVAL,50H;置数5000,与计数器0串联即:延时5秒..MOVDX,IOPORT+291HOUTDX,ALLOP1:MOVDX,IOPORT+288H;A口查询,判断延时是否结束INAL,DXCMPAL,0JELOP1;延时结束,顺序执行,否则继续查询MOVAL,01000100B;南北路口黄灯亮,东西路口红灯亮MOVDX,IOPORT+28AH;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUTDX,ALMOVAL,01100001B;设置8253通道MOVDX,IOPORT+293HOUTDX,ALMOVAL,30H;延时3秒(1000*3000),原理与延时5秒一致MOVDX,IOPORT+291HOUTDX,ALLOP2:MOVDX,IOPORT+288H;A口查询,判断延时是否结束INAL,DXCMPAL,0JELOP2;延时结束,顺序执行,否则继续查询MOVAL,10000001B;南北路口红灯亮,东西路口绿灯亮MOVDX,IOPORT+28AH;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUTDX,AL..MOVAL,01100001B;设置8253通道1MOVDX,IOPORT+293HOUTDX,ALMOVAL,50H;延时5秒MOVDX,IOPORT+291HOUTDX,ALLOP3:MOVDX,IOPORT+288HINAL,DXCMPAL,0JELOP3MOVAL,10000010B;南北路口红灯亮,东西路口黄灯亮MOVDX,IOPORT+28AHOUTDX,ALMOVAL,01100001B;设置8253通道1MOVDX,IOPORT+293HOUTDX,ALMOVAL,30H;延时3秒MOVDX,IOPORT+291HOUTDX,ALLOP4:MOVDX,IOPORT+288HINAL,DXCMPAL,0JELOP4MOVAH,0BH;检查键盘状态(不等待),AL=FFH表示有键入,AL=00H表示无键入..INT21HCMPAL,0FFH;有键入,程序退出JNZINOUTMOVAH,4CHINT21HCODEENDSENDSTART四、实验中遇到的问题地址书上要求定义的范围是从280H开始的,而我们在编写程序的时候是从288H开始使用的,再连线的时候,忘记了这一点,而致使结果一直出不来,后来再检查连线的时候发现了这个问题,即使进行了改正,出现了预计效果,试验成功。五、心得体会这个实验是与现实生活是比较接近,通过这个实验,我大概知道了交通灯的工作原理,也加深了以前学的知识,更进一步认识了8255、8253芯片,并且掌握了对并行接口的使用。