《微机原理及接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术实验报告.docx(16页珍藏版)》请在三一办公上搜索。
1、微机原理及接口技术 实验报告微机原理及接口技术 实验报告 学 院: 信息工程学院 专业班级: 通 信 0801 姓 名: 学 号: 实验一 多位十进制数相加实验 一实验目的 1熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。 2掌握数据传送和算术运算指令的用法。 二实验内容 将两个多位十制数28056,47193相加,并显示加数,被加数,和。要求加数和被加数均以ASCII码形式各自顺序存放在DATAl和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。 三程序流程图 开始 显示加数和被加数 加数和被加数由ASC码表示转化为十六进制 计数值5-CX 清除最低位进位
2、执行ADC带进位相加 AAA调整 结果送被加数存储区 调整偏移量 显示加数和被加数 N CX-1=0 Y 将十六进制结果转化为ASC码表示的数字 显示结果 结束 四.参考程序 SHOW MACRO B MOV DL,B MOV AH,02H INT 21H ENDM DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H DATA3 DB _, 0DH,0AH,$ DATA ENDS STACK SEGMENT STACK STA DB 20 DUP (?) TOP EQU LENGTH STA STACK
3、ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA2 MOV BX,05 SHOW 20H CALL DISPL SHOW 0DH SHOW 0AH MOV SI,OFFSET DATA1 MOV BX,05 SHOW 2BH CALL DISPL SHOW 0DH SHOW 0AH MOV CL,7 S1: SHOW 2DH LOOP S1 SHO
4、W 0DH SHOW 0AH MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL ADDA MOV SI,OFFSET DATA1 MOV BX,05 SHOW 20H CALL DISPL MOV AX,4C00H INT 21H DISPL PROC NEAR DS1: SHOW SI+BX-1 DEC BX JNZ DS1 RET DISPL ENDP ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 AD1: SUB BYTE PTR SI+BX-1,30H SUB BYTE PTR DI+BX-1,30H
5、DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05 CLC AD2: MOV AL,SI MOV BL,DI ADC AL,BL AAA MOV SI,AL INC SI INC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05 AD3: ADD BYTE PTR SI+BX-1,30H ADD BYTE PTR DI+BX-1,30H DEC BX JNZ AD3 RET ADDA ENDP CODE ENDS END START 四实验过程 进入DOS环境,进入E盘MASM子目录,键入: E: 回车 CD: MASM
6、回车 EDIT *.ASM 回车 打开编辑窗口将汇编语言源程序输入 对源程序进行汇编链接,执行并调试可执行文件 六思考题 不改变数据段DATA1和DATA2的内容,如何将加数与被加数分别由28056和47193变成65082和39174,并且相加 答:源程序不变将 DATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H 后加上 DATA4 DB 37H,34H,31H,39H,33H DATA5 DB 32H,38H,30H,35H,36H 并将全部DATA1和DATA2全部改成DATA4和DATA5 就可以实现 七、实验感想: 通过
7、本实验,基本学会了数据传送和算术运算指令的用法,熟悉了DOS环境,并且对微机原理及接口技术这门课程有了更深的了解和认识。 实验二 统计数据个数实验 一实验目的 掌握将多位十六进制数转换成多位十进制数ASCII码的方法 二实验内容 统计内存数组中大于0和小于0的元素个数,并将统计结果分别存放在LRESULT和HRESULT变量中,并显示个数 三程序流程图 开始 数组元素个数-CL SI指向数组首地址 比较 LERSULT+1 SI+1-SI N CL-1=0? Y 显示提示信息 显示正元素个数 显示负元素个数 是正数? Y HERSULT+1 结束 四参考程序 DATA SEGMENT ARY
8、DB 1,3,-1,2,6,-9,-5,7,8,1,3,8,-6,8,-9,-7,2,4,-3,-3 DB -4,7,7,8,3,1,3,6,8,5,5,6,4,5,7,-4,2,4,5,-7,5,4 DB 2,5,7,8,8,8,7,6,-5,4,3,2,1,-1,2,2,3,-4,5,6,7 N=$-ARY LRESULT DW 0 HRESULT DW 0 TJJG DB STATISTICS RESULT:,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS, AX MOV
9、ES, AX SHOW MACRO B PUSH DX PUSH AX MOV AH,02H INT 21H POP AX POP DX ENDM XOR CX,CX MOV CX,N LEA SI,ARY LOP: MOV AL,SI CMP AL,0 JNS PLUS INC LRESULT JMP CONT PLUS: INC HRESULT CONT: INC SI LOOP LOP LEA DX,TJJG MOV AH,09H INT 21H SHOW + MOV AX,HRESULT CALL DISPL SHOW 0DH SHOW 0AH SHOW - MOV AX,LRESUL
10、T CALL DISPL MOV AX,4C00H INT 21H DISPL PROC PUSH DX PUSH AX MOV CX,10 MOV DX,00H MOV BX,00H DIV CX MOV BX,DX ADD AL,30H DISPL1: MOV DL,AL MOV AH,02H INT 21H MOV DL,BL ADD DL,30H MOV AH,02H INT 21H POP AX POP DX RET DISPL ENDP CODE ENDS END START 五实验过程 进入E盘的MASM子目录,打开编辑窗口将汇编语言源程序输入,对源程序进行汇编链接,执行并调试可
11、执行文件 六思考题 试分析程序中语句“MOV CX,N”执行后,赋给CX寄存器的值是多少? 答:赋给CX的值是63 七、实验感想: 通过本实验,基本学会了数据传送和算术运算指令的用法及将多位十六进制数转换为多位十进制数ASCII码得方法,熟悉了DOS环境,并且对微机原理及接口技术这门课程有了更深的了解和认识。 实验三 直流电机测速实验 一. 实验目的: 1.掌握8254的工作原理和编程方法 2.了解光电开关的使用方法,掌握用光电传感器测量电机转速的方法 二. 实验内容 光电测速的基本电路由光电传感器、计数器和定时器组成。测量时在被测电机主轴上固定一个圆盘,圆盘的边缘上打上小孔。传感器的红外发射
12、端和接收端装在圆盘的两测,电机带动圆盘转到有孔的位置时,红外光通过,红外接收管导通,输出低电平。红外光被挡住时接收管截止,输出高电平。用计数器记录在一定时间内传感器发出的脉冲个数就可以计算出电机转速。 三. 线路连接 接线方法:8254计数器/定时器0和2作为定时器,确定测速时间,定时器0的CLK0接1MHZ脉冲频率,OUT0作为定时器2的输入,与CLK2相连,输出OUT2与8255的PA0端相连。GATE0、GATE2均接+5V,8254计数器/定时器1作为计数器,输入CLK1与直流电机计数端相连,GATE1与8255的PC0相连。电机DJ端与+5V0V模拟开关SW1相连。 四. 编程提示
13、8254计数器/定时器1作为计数器,记录脉冲个数,计数器/定时器0和2作为定时器,组成1060秒定时器,测量脉冲个数,算出电机每分钟的转速并显示在屏幕上。 8255的PA0根据OUT2的开始和结束时间,通过PC0向8254计数器/定时器1发出开始和停止计数信号。 五. 流程图 288H28FH 8254 OUT0 GATE0 CLK0 OUT1 GATE1 CLK1 OUT2 GATE2 CLK2 CS PA0 8255 PC0 CS +5V 1MHz 计数 DJ +5V 直 流 电 机 +5V 280H287H SW1 直流电机测速实验接线图 六. 参考程序 DATA SEGMENT IOP
14、ORT EQU 0D880H-0280H IO8255K EQU IOPORT+283H IO8255A EQU IOPORT+280H IO8255C EQU IOPORT+282H IO8254K EQU IOPORT+28BH IO82542 EQU IOPORT+28AH IO82541 EQU IOPORT+289H IO82540 EQU IOPORT+288H MESS DB STRIKEANY KEY,RETURN TO DOS!,0AH,0DH,$ COU DB 0 COU1 DB 0 COUNT1 DB 0 COUNT2 DB 0 COUNT3 DB 0 COUNT4 DB
15、 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09H INT 21H MOV DX,IO8254K MOV AL,36H OUT DX,AL MOV DX,IO82540 MOV AX,50000 OUT DX,AL NOP NOP MOV AL,AH OUT DX,AL MOV DX,IO8255K MOV AL,90H OUT DX,AL MOV DX,IO8255C MOV AL,00 OUT DX,AL LL: MOV AH
16、,01H INT 16H JNZ QUIT1 MOV DX,IO8254K MOV AL,70H OUT DX,AL MOV DX,IO82541 MOV AL,0FFH OUT DX,AL NOP NOP OUT DX,AL MOV DX,IO8254K MOV AL,90H OUT DX,AL MOV DX,IO82542 MOV AL,100 OUT DX,AL MOV DX,IO8255C MOV AL,01H OUT DX,AL JMP A0 QUIT1: JMP QUIT A0: MOV DX,IO8255A A1: IN AL,DX AND AL,01H JZ A1 MOV DX
17、,IO8255C MOV AL,00H OUT DX,AL MOV DX,IO8254K MOV AL,70H OUT DX,AL MOV DX,IO82541 IN AL,DX MOV BL,AL IN AL,DX MOV BH,AL MOV AX,0FFFFH SUB AX,BX CALL DISP MOV DL,0DH MOV AH,02 INT 21H MOV DL,0AH MOV AH,02 INT 21H JMP LL DISP PROC NEAR MOV DX,0000H MOV CX,03E8H DIV CX MOV COUNT1,AL MOV AX,DX MOV CL,64H
18、 DIV CL MOV COUNT2,AL MOV AL,AH MOV AH,00H MOV CL,10 DIV CL MOV COUNT3,AL MOV COUNT4,AH MOV AL,COUNT1 CALL DISP1 MOV AL,COUNT2 CALL DISP1 MOV AL,COUNT3 CALL DISP1 MOV AL,COUNT4 CALL DISP1 RET DISP ENDP DISP1 PROC NEAR AND AL,0FH CMP AL,09H JLE NUM ADD AL,07H NUM: ADD AL,30H MOV DL,AL MOV AH,02 INT 2
19、1H RET DISP1 ENDP QUIT: MOV AH,4CH INT 21H CODE ENDS END START 七. 实验结果 八. 思考题 关闭电机后,为什么8254计数不为0? 答:关闭电机后,但主机未断电,计数值锁存在锁存器中,所以读数会一直为锁存器的值,8254计数不会显示0 九实验感想 通过本实验,基本掌握了8254的工作原理和编程方法,了解了光电开关,掌握了用光电传感器测量电机转速的方法。同时,也进一步提高了自己实践动手的能力,熟悉了DOS环境,并且对微机原理及接口技术这门课程有了更深的了解和认识。 实验四 十字路口红绿灯闪烁实验 一实验目的 通过对红、绿、黄灯的控制
20、,熟练掌握8255A接口芯片的编程方法。 二实验内容 对8255A接口芯片进行编程,使红,黄,绿发光二极管按照十字路口交通灯的形式点亮或熄灭。 三线路连接 8255A L5 29 PC1 16 28 L3 灯 PC2 27 12 L6 黄 5 PC3 11 36 L4 灯 PC4 9 10 L7 8 PC5 红 35 L0 6 L1 灯 280H287H 图1十字路口红绿灯实验连线图 北 L2 L3 L4 西 东 L5 L6 L7 绿灯 黄南 图2交通十字路口及信号 发光二极管共8个,其中两组绿,黄,红灯用6个,L2、L3、L4为一组,L5、L6、D0 D1 D2 D3 D4 D5 D6 D7
21、 IOR IOW A0 A1 RESET 34 33 32 31 30 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 RESET CS PC0 14 15 L2 绿 L7为一组;实验台连接如图4.3所示。高电平“1”时,点亮。 四流程图 五参考程序 DATA SEGMENT IOPORT EQU 0D880H-280H IO8255C EQU IOPORT+282H IO8255T EQU IOPORT+283H PB DB ? MESS DB ENTER ANY KEY CAN EXIT TO DOS!,0DH,0AH,$ DATA ENDS STACK SEGME
22、NT STACK STA DW 50 DUP(?) TOP EQU LENGTHSTA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS INT 21H MOV DX,IO8255T MOV AL,81H OUT DX,AL MOV DX,IO8255C IN AL,DX MOV PB,AL MOV DX,IO8255T MOV AL,80H OUT DX,AL MOV DX,IO8255C MO
23、V AL,PB OR AL,0CH OUT DX,AL MOV AL,30H OUT DX,AL CALL DELAY10 LLL: MOV DX,IO8255C MOV AL,12H OUT DX,AL CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 MOV AL,10H OUT DX,AL MOV CX,0040H TTT: MOV AL,0CH OUT DX,AL PUSH CX MOV CX,80H LOP1: CALL DELAY1 LOOP LOP1 MOV AL,00H OUT DX,AL MOV CX,80H LOP2:
24、CALL DELAY1 LOOP LOP2 POP CX LOOP TTT MOV AL,30H OUT DX,AL CALL DELAY10 MOV AL,21H OUT DX,AL CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 MOV AL,20H OUT DX,AL MOV CX,0040H GGG: MOV AL,0CH OUT DX,AL PUSH CX MOV CX,80H LOP3: CALL DELAY1 LOOP LOP3 MOV AL,00H OUT DX,AL MOV CX,80H LOP4: CALL DELAY
25、1 LOOP LOP4 POP CX LOOP GGG MOV AL,30H OUT DX,AL CALL DELAY10 MOV AH,06H MOV DL,0FFH INT 21H JNZ PPP JMP LLL PPP: MOV AX,4C00H INT 21H DELAY1 PROC NEAR PUSH CX MOV CX,0FFFFH CCC: LOOP CCC POP CX RET DELAY1 ENDP DELAY10 PROC NEAR PUSH AX PUSH CX MOV CX,0F00H UUU: CALL DELAY1 LOOP UUU POP CX POP AX+*+
26、* RET DELAY10 ENDP CODE ENDS END START 六 实验结果 1、汇编成功 2、 经测试灯是按照指定规律变化 七 实验现象 红黄绿变化的规律为:两个路口红灯全亮;南北路口绿灯亮,东西路口红灯亮;南北路口绿灯灭,东西路口红灯亮;两个路口黄灯闪烁;两个路口红灯全亮;东西路口绿灯亮,南北路口红灯亮;东西路口绿灯灭,南北路口红灯亮;两个路口黄灯闪烁;依次从头到尾循环出现 八 思考题 :程序中红,绿,黄灯点亮和熄灭的延时时间是如何设定的? 答:通过用延时子程序CALL DELAY 10的次数来设定 九 实验感想 通过本实验,基本掌握了8255A接口芯片的编程方法,熟悉了DOS环境,同时,也进一步提高了自己的实践动手能力,并且对微机原理及接口技术这门课程有了更深的了解和认识。