资源描述
实验二:利用8255A实现拨动开关和LED流水点亮实验安全0901 王宇航 09283020实 验 报 告1. 实验目的:该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。掌握使用8255并行接口连接拨动开关,控制LED显示输出的技术。2. 实验步骤:按图32将8255端口A与8位拨动开关连接,8255端口B与8位LED连接,选择 8255 为方式0工作,编程序完成LED实时显示开关状态的功能,即每位LED对应一位开关状态。开关往下拨动,对应LED灭,开关往上拨动,对应LED点亮。当执行程序后LED按K1-K8初始设定的值点亮,并向右流动(8255A工作在方式0)。同时在6位数码管显示:8255-1编程涉及8255端口地址有四个,由于8255片选信号线与地址译码区的2002FH连接,即8255的I/O偏移地址为03,加上前一个实验所获知的I/O基址,两者相加之后才是最终访问8255的I/O地址。注意,该地址一定是一个16位数,所以I/O操作要使用IN AL,DX 和OUT DX, AL指令。3. 实验代码:code segment ;定义代码段assume cs:codestart:;初始化,设置A口B口的工作方式movdx,203h ;8255命令口地址moval,10010000b ;控制字outdx,al;让数码管显示8255-A;显示A口输入的数并循环移位xorax,ax ;将ax清零mov bl,0lop: ;自定义的标号movdx,200h ;给dx赋值(送到寄存器中)inal,dx ;将200h送给寄存器al;mov dx,201h;out dx,al ;把al的值送给dx端口;jmp lop ;段内转移cmpal,ah ;al和ah进行比较jznext ;跳转到nextmovah,almovbl,ahrolbl,1 ;不带进位循环左移1位next:rorbl,1 ;不带进位循环右移1位moval,blmovdx,201houtdx,almovcx,3fffhlp: ; 从lp到最后都是表示显示8255-A这个字,它的作用是实现灯的延时,即保证灯的闪烁时间不至于过快,如果去除的话在人眼的视觉暂留情况下将可能产生连续不断的灯光闪烁,使得间隔时间太短。;8movdx,211hmoval,00000000boutdx,almovdx,210hmoval,7fhoutdx,almovdx,211hmoval,00100000boutdx,al ;2movdx,211hmoval,00000000boutdx,almovdx,210hmoval,5bhoutdx,almovdx,211hmoval,00010000boutdx,al ;5movdx,211hmoval,00000000boutdx,almovdx,210hmoval,6dhoutdx,almovdx,211hmoval,00001000boutdx,al ;5movdx,211hmoval,00000000boutdx,almovdx,210hmoval,6dhoutdx,almovdx,211hmoval,00000100boutdx,al ;-movdx,211hmoval,00000000boutdx,almovdx,210hmoval,40houtdx,almovdx,211hmoval,00000010boutdx,al ;Amovdx,211hmoval,00000000boutdx,almovdx,210hmoval,77houtdx,almovdx,211hmoval,00000001boutdx,alloop lp ;转至lpjmplop ;跳至lophlt ; 使处理器处于暂时停机状态.codeendsend start4. 实验程序流程图:
展开阅读全文