微机原理与接口技术实验指导剖析_第1页
微机原理与接口技术实验指导剖析_第2页
微机原理与接口技术实验指导剖析_第3页
微机原理与接口技术实验指导剖析_第4页
微机原理与接口技术实验指导剖析_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理及接口技术实验指导书杨霞 周林英 编长安大学电子与控制工程学院2009年9月ii本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大 量软硬件实验的需要而编写的,供学生编程用。完成本实验指导中的实验,可使 学生基本掌握 8086/8088 的结构原理、接口技术、程序设计技巧。手册中详细叙 述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。主要学习内容为 80X86 语言实验环境配置、汇编源语言格式、输出字符、循 环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使 用。所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行 教学时,教

2、师可根据教学要求,选择相应实验。学习结束后,要求学生能够独立 编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂 一般接口芯片电路图。56目录实验一 清零程序 4实验二 拆字程序 6实验三 数据区移动 8实验四 多分支程序设计 10实验五 多字节减法运算 13实验六 显示程序 19实验七 8251 串口实验 22实验八 步进电机控制 28附录一 汇编语言的存储模型 38附录二 8279 键值显示程序 39实验一清零程序、实验目的掌握8088汇编语言程序设计和调试方法。、实验设备STAR系列实验仪一套、PC机一台。、实验内容把RAM 区内4000H-40FFH单元的内容清零四

3、、程序框图开始1I煖冲浜百朮4闻1HAXQjXEC 応一BjJAI 口c-t-uT* N 一I Y五、源程序清单.MODEL TINY.STACK 100.DATA.CODEORG 0100HSTART:MOV BX,4000HMOV AX,0000HMOV CX,80HL1: MOV BX,AXINC BXINC BXLOOP L1JMP $END START六、实验步骤手动修改 RAM 区内 4000H-40FFH 的内容,连续或单步方式运行程序,检查 4000-40FFH 内容 执行程序前后的变化。七、思考1、把4000H-40FFH中的内容改成FF,如何修改程序。2、把4000H-40

4、FFH中的内容改成00FF,如何修改程序。实验_二拆字程序一、实验目的掌握汇编语言设计和调试方法。二、实验设备STARS列实验仪一套、PC机一台。三、实验内容把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,40014 4002H的高位清零,一般本程序用于把数据送显示缓冲区时用。四、程序框图内解送a“hI AH 8255 PACALLDelayJMP GOONDelay PROC NEAR PUSH CX MOV CX,20000Delay1: LOOP Delay1 POP CXRETENDSTART(2) 编写程序,控制 .MODEL TINY .STACK 100

5、.MODEL TINY .STACK 100 .DATA8 位数码管依次显示任意指定字符IO8255_ConEQU0F003H;CS3IO8255_AEQU0F000H;AIO8255_BEQU0F001H;BF1DB0LED_TAB:DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07HENDPDB 07FH,6FH,77H,7CH,39H,05EH,79H,71H0-F);.CODESTART: MOV AX,DATAMOVDS,AXMOVES,AXMOVF1,0MOVDX,IO8255_ConMOVAL,80H ;方式 0, A,B,C 均为输出OUTDX,ALMOV

6、AL,0FEH ;8255 PC 输出MOV CX,8GOON: MOV DX,IO8255_B ;段选MOVBX, LED_TAB;装入表头PUSHAXMOVAL,F1XLAT;AL 放字形码OUTDX,ALPOPAXMOVAL,AHMOVDX,IO8255_A;位选OUT DX,ALROL AL,1MOV AH,ALINC F1;0FFH-8255 PACALL DelayJMP GOONDelay PROC NEARPUSHCXMOVCX,800Delay1: LOOP Delay1 POP CX RET ENDPEND START(3) 编写程序,控制 8 位数码管同时显示 0、1、,

7、 F: .MODEL TINY.STACK 100.MODEL TINY.STACK 100.DATAIO8255_ConEQU0F003H;CS3IO8255_AEQU0F000H;AIO8255_BEQU0F001H;BLED_TAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB 07FH,6FH,77H,7CH,39H,05EH,79H,71HF1 DB 0.CODESTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX,IO8255_Con;方式 0, A,B,C 均为输出;8255 PC 输出MOV AL,80HOUT

8、 DX,ALMOV AX,0FEFEHMOV CX,1600LEA BX,LED_TAB GOON: MOV AL,F1XLATMOVDX,IO8255_B;段选OUTDX,ALMOVAL,AHMOVDX,IO8255_A;位选OUTDX,ALROLAL,1MOVAH,ALCALLDL500msLOOPGOON;8 段数码管显示当前值MOVCX,1600;8 段数码管显示完成,则显示下个字符MOVAL,AHJCALLDL3SINC F1CMPF1,10H;是否显示完了JZ EXITJMP GOONDL500msPROC NEARPUSHCXMOVCX,400DL500ms1: LOOP DL5

9、00ms1 POP CXRETDL500msENDPEXIT: END START七、思考(4)编写程序,控制 8 位数码管显示当前日期以及时间;实验七8251串口实验、实验目的与要求了解8251的内部结构、工作原理;了解8251与8088的接口逻辑;掌握对8251的初 始化编程方法,学会使用8251实现设备之间的串行通信。复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。、实验设备STARS列实验仪一套、PC机一台三、实验内容1、编制程序:实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发 时钟。2、连接线路,从微机接收一批数据,接收完毕,再将它们回

10、送给微机。四、程序框图初始化8253(定时器0,方式3,BCD码计数,CLK0/26)初始化8251接收10个字节数据子程序将接收到的10个字节数据通过8251发送给微机初始化8251:复位8251波特率系数为16,8个数据位,一个停止位,偶校验允许接收和发送数据清错误标志接收10个字节数据子程序:发送了 10个字节数据子程序:开始沁读入状态开始读入状态N有数据.读数据- 缓冲区N 有数据接收了 10个字节数据VY:返回N,发送了 10个字节数据返回五、实验原理图U38RXD(E7)(8253)OUT0(0F000H)CS1A0D2D3 _ -RXD_TxCO-0-RxRDY CC/D RDD

11、4D5D6D7WR123456D2D3D1D0911121314RxDGNDD4D5D6D7TxCVCCRxCDtrRtsDSRRESETCLK28 D127 D026_J- |VCC 24-2321 RSTRxCOUT0(8253)WRCS_C/DRDRxRDYTxD TxEMPTYCTSSYNDETTxRDY207978771615CLKSi 二 8TXD二 TxRDY4M(B2)TXD(E7)8251六、实验步骤1、连线说明:C5 区:CS( 8253 )、A0 A1A3区: CS5 AO、A1C5区: CLK0B2 区:2MC5 区: GATE0C1区的VCCC5 区: OUT0C5区

12、RxC TxCC5 区:CS( 8251 )、C/DA3区CS1、A0C5 区: CLKB2区4MC5区: RXD TXDE7区RXD TXD2、运行程序3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止 位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8251发送10个字节数据(输 入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据 一致。4、改变传输数据的数目,重复实验,观察结果。七、演示程序.MODEL TINY;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bpsCTL

13、_ADDREQU0FF01H; 控制字或状态字DATA_ADDREQU0FF00H; 读写数据W_8253_T0EQU0BF00H; 计数器 0地址W_8253_CEQU0BF03H; 控制字.STACK100.DATAReceive_BufferDB10 DUP(0); 接受缓冲器Send_BufferEQUReceive_Buffer; 发送缓冲器.CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXNOPCALLINIT_8253CALLINIT_8251START1:MOVCX,10CALLReceive_GroupMOVCX,10CALLSend_GroupJMP

14、START1INIT_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,ALC

15、ALLDLTIMERETINIT_8251ENDPReset_8251PROCNEARMOVDX,CTL_ADDRMOVAL,0OUTDX,AL; 向控制口写入0CALLDLTIME; 延时,等待写操作完成OUTDX,AL; 向控制口写入0CALLDLTIME; 延时OUTDX,AL; 向控制口写入0CALLDLTIME; 延时MOVAL,40H; 向控制口写入复位字 40HOUTDX,ALCALLDLTIMERETReset_8251ENDP-卡&寸7,.厶口来,CX- 接受数目; 接受一组数据Receive_GroupPROCNEARLEADI,Receive_BufferReceive_

16、Group: 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:LODSBCALLSendByteLOOPS

17、end_Group1RETSend_GroupENDP; 发送一个字节SendbytePROCNEARPUSHAXMOVDX,CTL_ADDR; 读入状态Sendbyte1:INAL,DXTESTAL,1JZSendbyte1; 允许数据发送吗?POPAX; 发送MOVDX,DATA_ADDROUTDX,ALRETSendbyteENDP; 延时DLTIMEPROCNEARMOVCX,10LOOP$RETDLTIMEENDPENDSTART八、实验扩展及思考 请读者思考,如何修改程序实现 8251 的自发自收功能?实验八 步进电机控制、实验目的与要求1、了解步进电机的基本原理,掌握步进电机的转

18、动编程方法2、了解影响电机转速的因素有那些二、实验设备STARS列实验仪一套、PC机一台。三、实验内容编写程序:使用G5区的键盘控制步进电机的正反转、调节转速,连续转动或转动指定步数;将相应的数据显示在 G5区的数码管上。四、控制原理步进电机的驱动原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转, 驱动电路由脉冲来控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适 合控制步进电机。另外,由于电机的转动惯量的存在,其转动速度还受驱动功率的影响, 当脉冲的频率大于某一值(本实验为 f.100hz )时,电机便不再转动。实验电机共有四个相位(A,B,C,D),按转动步骤可分单4拍(

19、A-B-C-D-A),双4 拍(AB-BC-CD-DA-AB 和单双 8 拍(A-AB-B-BC-C-CD-D-DA-).五、程序框图启动步进电机子程序:减速子程序:改变方向子程序:增速子程序:开始转速-1转速送给数码管第5位返回定时中断程序:六、实验原理图七、实验步骤1主机连线说明:E1 区:A B C、DB4 区:PC0 PC1、PC2、PC3E5区:CLKB2 区:2ME5区: CS A0A3 区: CS5 A0E5 区:A B C、DG5 区:A、B、C DB3区: CS A0A3 区: CS1、A0B3区: INT、INTAES8688: INTR、INTAC5 区:CS(8253)

20、、A0 A1A3 区:CS2、A0、A1C5 区: GATE0C1 区: VCCC5区: CLK0B2 区:1MC5 区: OUT0B3 区:IR0B4 区:CS(8255)、A0 A1A3 区: CS3 A0、A12、调试程序,查看运行结果是否正确八、演示程序.MODEL TINYEXTRNIO8259_0IO8259_1Con_8253T0_8253IO8255_ConIO8255_PCEQU0F000HEQU0F001HEQU0E003HEQU0E000HEQU0D003H;CS3EQU0D002HDisplay8:NEAR, SCAN_KEY:NEAR.STACK 100.DATASt

21、epCo ntrolDB0bufferDB8 DUP(0)buffer1DB8 DUP(0)SpeedNoDB0StepDelayDB0StartStepDelayDB0;若选择;下一次送给步进电机的值;显示缓冲区,8个字节;显示缓冲区,8个字节;选择哪一级速度;转动一步后,延时常数,延时由长到短,最终使用对应延时常数StartStepDelay1 DBbFirstDBbClockwiseDBbNeedDisplayDBStepCou ntDWStepDelayTab: .CODEDBSTART:MOVMOVMOVNOPMOVMOVMOVMOV000 ; =100;StartStepDelay

22、;有没有转动过步进电机顺时针方向=0逆时针方向转动;已转动一步,需要显示新步数;需要转动的步数250,125,83,62,50,42,36,32,28,25,22,21AX,DATADS,AXES,AXbFirst,1 bClockwise,1 StepCo ntrol,33H SpeedNo,5;有没有转动过步进电机;顺时针方向;下一次送给步进电机的值;第五级速度CALLInit8255CALLInit8253CALLInit8259CALLWriIntverMOVbuffer,0; 显示缓冲器初始化STAR2:STAR2:STAR3:STAR3:STAR5:STAR5:STAR1:STAR

23、1:MOV buffer+1,0MOV buffer+2,0MOV buffer+3,0MOV buffer+4,10HMOV AL,SpeedNoMOV buffer+5,ALMOV buffer+6,10HMOV buffer+7,0LEA SI,bufferLEA DI,buffer1MOV CX,8REP MOVSBLEA SI,buffer1CALL Display8CALL Scan_KeyJBSTAR5CMP bNeedDisplay,0JZSTAR3MOV bNeedDisplay,0CALL Step_SUB_1JMP STAR2CLI ; 终止步进电机转动 CMP AL,1

24、0JNB STAR1MOV AH,buffer+2MOV buffer+3,AHMOV AH,buffer+1MOV buffer+2,AHMOV AH,bufferMOV buffer+1,AHMOV buffer,ALJMP STAR2CMP AL,14JNB STAR3LEA SI,DriverTabSUB AL,10SHL AL,1XOR AH,AHMOV BX,AXJMPCS:SI+BXDriverTab:DWDirection; 转动方向DWSpeed_up; 提高转速DWSpeed_Down; 降低转速DWExec; 步进电机根据方向、 转速、 步数开始转动Direction:C

25、MPbClockwise,0JZClockwiseMOVbClockwise,0MOVbuffer+7,1AntiClockwise:CMPbFirst,0JZAntiClockwise1MOVStepControl,91HJMPDirection1AntiClockwise1:MOVAL,StepControlRORAL,2MOVStepControl,ALJMPDirection1Clockwise:MOVbClockwise,1MOVbuffer+7,0CMPbFirst,0JZClockwise1MOVStepControl,33HJMPDirection1Clockwise1:MOV

26、AL,StepControlROLAL,2MOVStepControl,ALDirection1:JMPSTAR2Speed_up:MOVAL,SpeedNoCMPAL,11JZSpeed_up2Speed_up1:INCALMOVSpeedNo,ALMOVbuffer+5,ALSpeed_up2:JMPSTAR2Speed_Down:MOVAL,SpeedNoCMPAL,0JZSpeed_Down1DECALMOVSpeedNo,ALMOVbuffer+5,ALSpeed_Down1:JMPSTAR2Exec:MOVbFirst,0CALLTakeStepCountLEABX,StepDel

27、ayTabMOVAL,SpeedNoXLATMOVStepDelay,ALCMPAL,50JNBExec1MOVAL,50Exec1:MOVStartStepDelay,ALMOVStartStepDelay1,ALSTIJMPSTAR2TIMER0:PUSHAXPUSHDXDECStartStepDelayJNZTIMER0_1MOVAL,StartStepDelay1CMPAL,StepDelayJZTIMER0_2DECALMOVStartStepDelay1,ALTIMER0_2:MOVStartStepDelay,ALMOVAL,StepControlMOVDX,IO8255_PCO

28、UTDX,ALCMPbClockwise,0JNZTIMER0_3RORAL,1JMPTIMER0_4TIMER0_3:ROLAL,1TIMER0_4:MOVStepControl,ALCMPStepCount,0JZTIMER0_1MOVbNeedDisplay,1DECStepCountJNZTIMER0_1addsp,8; 小写部分不允许使用单步、 单步进入命令popf cli pushf subsp,8TIMER0_1:nop MOVDX,IO8259_0MOVAL,20HOUTDX,ALPOPDXPOPIRETAXStep_SUB_1PROCNEARMOVCX,4LEABX,bufferStep_SUB_1_1:DECBYTE PTR BXCMPBYTE PTR BX,0FFHJNZStep_SUB_1_2MOVBYTE PTR BX,9INCBXLOOPStep_SUB_1_1Step_SUB_1_2:RETStep_S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论