1《微机原理与接口技术》课程实验报告实验名称实验一8251可编程通信实验(与微机)姓名系院专业你的专业班级你的专业13-5班学号实验日期2015.5.20指导教师成绩一、实验目的和要求1、了解8251的内部结构、工作原理;了解8251与8086的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。二、实验内容(包括实验步骤和代码)(一)实验内容1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。2、连接线路,从微机接收一批数据,接收完毕,再将它们回送给微机。(二)实验步骤1、连线说明:C4区:CS(8253)、A0、A1——A3区:CS2、A0、A1C4区:CLK0——B2区:2MC4区:GATE——C1区的VCCC4区:OUT0——C3区:RxCTxCC3区:CS(8251)、C/D——A3区:CS4、A0C3区:CLK——B2区:4MC3区:RXD、TXD——D7区:RXD、TXD2、运行程序3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8251发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据一致。4、改变传输数据的数目,重复实验,观察结果。(三)实验代码.MODELTINY;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bpsCTL_ADDREQU0241H;控制字或状态字DATA_ADDREQU0240H;读写数据W_8253_T0EQU0260H;计数器0地址W_8253_CEQU0263H;控制字.STACK1002.DATAReceive_BufferDB10DUP(0);接受缓冲器Send_BufferEQUReceive_Buffer;发送缓冲器.CODESTART:MOVAX,@DATAMOVDS,AXMOVES,AXNOPCALLINIT_8253CALLINIT_8251START1:MOVCX,10CALLReceive_GroupMOVCX,10CALLSend_GroupJMPSTART1INIT_8253PROCNEARMOVDX,W_8253_CMOVAL,37H;定时器0,方式3OUTDX,ALMOVDX,W_8253_T0MOVAL,26H;BCD码26(2000000/26)=16*4800OUTDX,ALMOVAL,0OUTDX,ALRETINIT_8253ENDPINIT_8251PROCNEARCALLRESET_8251MOVDX,CTL_ADDRMOVAL,7EH;波特率系数为16,8个数据位OUTDX,AL;一个停止位,偶校验CALLDLTIME;延时MOVAL,15H;允许接收和发送发送数据,清错误标志OUTDX,ALCALLDLTIMERETINIT_8251ENDPReset_8251PROCNEARMOVDX,CTL_ADDRMOVAL,0OUTDX,AL;向控制口写入0CALLDLTIME;延时,等待写操作完成OUTDX,AL;向控制口写入0CALLDLTIME;延时3OUTDX,AL;向控制口写入0CALLDLTIME;延时MOVAL,40H;向控制口写入复位字40HOUTDX,ALCALLDLTIMERETReset_8251ENDP;接受一组数据,CX--接受数目Receive_GroupPROCNEARLEADI,Receive_BufferReceive_Group1:CALLReceive_ByteSTOSBLOOPReceive_Group1RETReceive_GroupENDP;接受一个字节Receive_BytePROCNEARMOVDX,CTL_ADDRReceive_Byte1:INAL,DX;读入状态TESTAL,2JZReceive_Byte1;有数据吗?MOVDX,DATA_ADDR;有INAL,DXRETReceive_ByteENDP;发送一组数据,CX--发送数目Send_GroupPROCNEARLEASI,Send_BufferSend_Group1:LODSBCALLSendByteLOOPSend_Group1RETSend_GroupENDP;发送一个字节SendbytePROCNEARPUSHAXMOVDX,CTL_ADDR;读入状态Sendbyte1:INAL,DXTESTAL,1JZSendbyte1;允许数据发送吗?POPAX;发送MOVDX,DATA_ADDR4OUTDX,ALRETSendbyteENDP;延时DLTIMEPROCNEARMOVCX,10LOOP$RETDLTIMEENDPENDSTART三、实验结果及其分析(一)实验结果由图1.1可知,使用串口助手每发送十个字节的十六进制数便可以接收到这十个字节的十六进制数。图1.1(二)实验扩展及思考1、请读者思考,如何修改程序实现8251的自发自收功能?答:将8251的TxD与RxD相连接,由TxD逐个发送字符,并用RxD逐个接收。52、8251与8250有何区别?答:8250是异步收发器UART,8251是同步异步收发器USART,在PC机中带的串行口是82506实验名称实验二8255控制交通灯实验姓名系院专业你的专业班级你的专业13-5班学号实验日期2015.6.8指导教师成绩一、实验目的和要求1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。2、熟悉8255内部结构和与8086的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。二、实验内容(包括实验步骤和代码)(一)实验内容1、编写程序:使用8255的PA0..2、PA4..6控制LED指示灯,实现交通灯功能。2、连接线路验证8255的功能,熟悉它的使用方法。(二)实验步骤1、连线说明:D3区:CS、A0、A1——A3区:CS1、A0、A1D3区:JP23(PA口)——F4区:JP182、观察实验结果,是否能看到模拟的交通灯控制过程。(三)实验代码.MODELTINYCOM_ADDEQU0273HPA_ADDEQU0270HPB_ADDEQU0271HPC_ADDEQU0272H.STACK100.DATALED_DataDB10111110B;东西绿灯,南北红灯DB10111111B;东西绿灯闪烁,南北红灯DB10111101B;东西黄灯亮,南北红灯DB11101011B;东西红灯,南北绿灯DB11111011B;东西红灯,南北绿灯闪烁DB11011011B;东西红灯,南北黄灯亮.CODESTART:MOVAX,@DATAMOVDS,AXNOP7MOVDX,COM_ADDMOVAL,80H;PA、PB、PC为基本输出模式OUTDX,ALMOVDX,PA_ADD;灯全熄灭MOVAL,0FFHOUTDX,ALLEABX,LED_DataSTART1:MOVAL,0XLATOUTDX,AL;东西绿灯,南北红灯CALLDL5SMOVCX,6START2:MOVAL,1XLATOUTDX,AL;东西绿灯闪烁,南北红灯CALLDL500msMOVAL,0XLATOUTDX,ALCALLDL500msLOOPSTART2MOVAL,2;东西黄灯亮,南北红灯XLATOUTDX,ALCALLDL3SMOVAL,3;东西红灯,南北绿灯XLATOUTDX,ALCALLDL5SMOVCX,6START3:MOVAL,4;东西红灯,南北绿灯闪烁XLATOUTDX,ALCALLDL500msMOVAL,3XLATOUTDX,ALCALLDL500msLOOPSTART3MOVAL,5;东西红灯,南北黄灯亮XLATOUTDX,ALCALLDL3SJMPSTART18DL500msPROCNEARPUSHCXMOVCX,60000DL500ms1:LOOPDL500ms1POPCXRETDL500msENDPDL3SPROCNEARPUSHCXMOVCX,6DL3S1:CALLDL500msLOOPDL3S1POPCXRETENDPDL5SPROCNEARPUSHCXMOVCX,10DL5S1:CALLDL500msLOOPDL5S1POPCXRETENDPENDSTART三、实验结果及其分析(一)实验结果全速运行程序,实验结果如图所示。910(二)实验扩展及思考1、如何对8255的PC口进行位操作?答:8255控制字D7=1时,D6~D0为口模式控制,D7=0时控制字为PC口的位操作模式,如控制字=00H,PC0复位;控制字=01H,PC0置位;控制字=0EH,PC7复位;控制字=0FH,PC7置位;其中D6~D4没定义,D3~D1从000B~111B分别指定PC0~PC7脚,D0位为相应的电平高低,0为低电平,1为高电平。11实验名称实验三静态存贮器(16位)读写实验姓名姓名系院专业你的专业班级你的专业13-5班学号实验日期2015.6.13指导教师成绩一、实验目的和要求1、了解静态存贮器的特性、扩展方法,掌握存贮器的读写时序。2、掌握CPU对16位静态存贮器的访问方法3、认真预习本节实验内容,尝试自行编写程序,填写实验报告。二、实验内容(包括实验步骤和代码)(一)实验内容1、说明:实验仪选用常用的静态存贮器芯片62256(32K×8位),二片组成32K×16位,共64K字节。实验仪具有16位数据总线D0..D15、20位地址线A0..A19、BLE(低电平有效,选择低8位存贮器芯片)、BHE(低电平有效,选择高8位存贮器芯片);BLE、BHE同时有效,对存贮器字方式读写,BLE或BHE有效,对存贮器字节方式读写。扩展16位存贮器时,不使用地址线A0。2、编写程序:将B4区的静态存贮器3000H-30FFH单元中数据复制到6000H-60FFH的单元中,并校验,检测写入的数据是否正确。3、连接线路验证功能,熟悉它的使用方法。(二)实验步骤1、连线说明:B4(RAM)区:CS、BLE、BHE——A3区:mCS0、BLE、BHEB4(RAM)区:RD、WR——A3区:MEMR、MEMWB4(RAM)区:JP49(A0..A7)——A3区:JP29(A1..A8)B4(RAM)区:JP38(A8..A15)——A3区:JP33(A9..A16)B4(RAM)区:JP57(D0..D7)——A3区:JP42(D0..D7)B4(RAM)区:JP56(D8..D15)——A3区:JP40(D8..D15)2、通过星研软件的存贮器窗、寄存器窗等,观察运行结果。(三)实验代码;数据块移动(16位存贮器实验).MODELTINY.STACK100.CODESTART:MOVAX,8000H;存贮器扩展空间段地址MOVDS,AXMOVES,AXNOPMOVCX,100H12MOVSI,3000HMOVDI,6000HCALLMoveMOVCX,100HMOVSI,3000HMOVDI,6000HCLDREPECMPSBJNEERRORTRUE:JMP$ERROR:JMP$MovePROCNEARCLDCMPSI,DIJZReturnJNBMove1ADDSI,CXDECSIADDDI,CXDECDISTDMove1:REPMOVSBReturn:RETMoveENDPENDSTART三、实验结果及其分析(一)实验结果3000H-30FFH单元中数据如图3.1所示。当执行完程序后,3000H-30FFH单元中数据被复制到6000H-60FF单元中,如图3.2所示。程序最终停留在JMP$。13图3.1图3.2(二)实验扩展及思考1、子程序Move中为什么比较SI、DI?答:源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个