北理工微机原理与接口技术之AD-8250实验报告(共13页).docx
精选优质文档-倾情为你奉上微机原理与接口技术实验报告 8250串行接口 ADC0809A/D转换器 实验四 8250串行接口实验一, 实验目的(1)熟悉串行通信的一般原理和8250的工作原理。(2)了解RS232串行接口标准及连接方法。(3)掌握8250芯片的编程方法。二,实验设备微机实验教学系统实验箱,8086CPU模块三、实验内容在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,若通讯正确,则下位机返回一个同样的字符;若不正确,则无返回值或者返回值不同。四,实验步骤(1) 无须接线,内部已经连好。8250的端口地址为0480H起始的偶地址单元。(2) 编写下位机程序,编译链接后,全速运行。(3) 退出“8086实验系统”,运行“串口调试助手”上位机程序。(4) 将“串口调试助手”程序输入和输出都调整为16进制格式,发送一个16进制数,观察返回的是否是同样一个16进制数。五,实验程序 程序流程图:实验源程序:CODE SEGMENT PUBLICASSUME CS:CODE ORG 100HSTART: MOV DX,486H ; 写通信线路控制寄存器D7=1 MOV AX,80H OUT DX,AX MOV DX,480H ; 设置波特率低字节 MOV AX,12 OUT DX,AX MOV DX,482H ; 设置波特率高字节 MOV AX,0 OUT DX,AX MOV DX,486H MOV AX,3 OUT DX,AX MOV DX,482H ; 中断允许寄存器 MOV AX,0 OUT DX,AX MOV DX,48AH ; 清除原始错误状态 IN AX,DX MOV DX,480H ; 清除原始状态 IN AX,DXLOOP1: CALL RECV CALL SEND JMP LOOP1 ;循环发送SEND: ; 发送子函数 PUSH AX MOV DX,48AH IN AX,DX TEST AX,20H JNZ SEND2 ;发送数据寄存器空,则跳转至SEND2,发送字符 POP AX ;发送数据寄存器不是空,不可发送 JMP SENDSEND2: POP AX MOV DX,480H ;指向发送接收数据寄存器,发送字符 OUT DX,AX RETRECV: ;接收子函数 MOV DX,48AH IN AX,DX TEST AX,1 JZ RECV ;未接到到一个字符,则跳转至RECV,若接收到字符,则顺序往下执行。 MOV DX,480H ;接收到字符,指向接收缓存器 IN AX,DX ;读取接收缓冲区的字符 RETCODE ENDSEND START实验现象:在发送区键入一个16进制数,接受区是同样一个16进制数。六,思考题1 连接 8255 将接收到的 16 进制数;驱动8个彩灯;观察其现象。将8255的片选连到CS0,将PB0PB7依次与LED1LED8相连接CODE SEGMENT PUBLICASSUME CS:CODE ORG 100HSTART: MOV DX,04A6H ;8255的控制字,B口输出 MOV AX,90H OUT DX,AX MOV DX,486H ;8250初始化 MOV AX,80H OUT DX,AX MOV DX,480H MOV AX,12 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,486H MOV AX,3 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,48AH IN AX,DX MOV DX,480H IN AX,DXLOOP1: CALL RECV ;接收输入的数据 CALL SEND ;将数据发送给上位机 MOV DX,04A2H ;将8250发送的存于AX中的数据,从8255的B口输出,驱动8个LED灯 OUT DX,AX JMP LOOP1 ;循环发送SEND: PUSH AX MOV DX,48AH IN AX,DX TEST AX,20H JNZ SEND2 POP AX JMP SENDSEND2: POP AX MOV DX,480H OUT DX,AX RETRECV: MOV DX,48AH IN AX,DX TEST AX,1 JZ RECV MOV DX,480H IN AX,DX RETCODE ENDSEND START实验现象:当在“串口调试助手”的发送区键入一个8位的16进制数后,PC机接收区会显示发送的数字,同时8个LED也会对应的亮(或灭)。2 连接 8255 将开关的状态以16 进制数的方式发送到PC机;观察其现象。将8个开关连接到8255的PA0PA7口,在pc机上观察接收区的数据CODE SEGMENT PUBLICASSUME CS:CODE ORG 100HSTART: MOV DX,04A6H ;8255的控制字,A口输入 MOV AX,90H OUT DX,AX MOV DX,486H ;8250初始化 MOV AX,80H OUT DX,AX MOV DX,480H MOV AX,12 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,486H MOV AX,3 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,48AH IN AX,DX MOV DX,480H IN AX,DXLOOP1: MOV DX,04A0H ;从8255的A口输入8个开关的状态 IN AX,DX CALL SEND ;将AX中的内容串行发送出去,可在PC机上显示 JMP LOOP1SEND: PUSH AX MOV DX,48AH IN AX,DX TEST AX,20H JNZ SEND2 POP AX JMP SENDSEND2: POP AX MOV DX,480H OUT DX,AX RETCODE ENDSEND START实验现象:8个开关的状态循环显示在PC机的接收区,当开关状态改变时,显示的数据也随之改变。3 连接 8255 和8253 的 GATE0 ;使用“串口调试助手”程序控制 8253 的振荡。将8255的片选接到CS0,将8253的片选接到CS1,8255的B口输出,其中PB0与GATE0相连,CLK3(750KHz)与8253CLK0相连,8253的OUT0与8253CLK2相连,OUT2与发光二极管LED1相连CODE SEGMENT PUBLICASSUME CS:CODE ORG 100HSTART:MOV DX,04B6H ;8253的控制字,计数器0工作于方式3,二进制计数,先读写低八位,再读写高八位 MOV AX,36H OUT DX,AX MOV DX,04B0H ;将927CH的初值写入计数器0 MOV AX,7CH OUT DX,AX MOV AX,92H OUT DX,AX MOV DX,04B6H ;设置计数器2工作于方式3,二进制计数,先读写低八位,再读写高八位 MOV AX,0B6H OUT DX,AX MOV DX,04B4H ;給计数器2写初值4H MOV AX,4 OUT DX,AX MOV AX,0 OUT DX,AX MOV DX,04A6H ;8255的初始化,A口输入,B口输出 MOV AX,90H OUT DX,AX MOV DX,486H ;8250串行接口的初始化 MOV AX,80H OUT DX,AX MOV DX,480H MOV AX,12 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,486H MOV AX,3 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,48AH IN AX,DX MOV DX,480H IN AX,DXLOOP1: CALL RECV CALL SEND MOV DX,04A2H ;将AX中的数据(串行发送的数据)从B口输出 OUT DX,AX JMP LOOP1SEND: PUSH AX MOV DX,48AH IN AX,DX TEST AX,20H JNZ SEND2 POP AX JMP SENDSEND2: POP AX MOV DX,480H OUT DX,AX RETRECV: MOV DX,48AH IN AX,DX TEST AX,1 JZ RECV MOV DX,480H IN AX,DX RETCODE ENDSEND START实验现象:任意键入一个最低位是1的8bit的16进制数据,使GATE0置位,则pc机的接收区会显示输入的数据,同时,LED1灯会一直闪烁七,实验遇到的问题与实验心得实验遇到的问题:在做思考题3时,将PB0与GATE0相连,CLK3(750KHz)与8253CLK0相连,8253的OUT0与发光二极管LED1相连,则键入一个8bit的16进制数字后,LED1灯会一直亮或者一直灭,没有闪烁,查了一会儿,发现时时钟CLK3的频率太高,仅经过计数器0分频是不够的,分频后频率依旧很高,LED1灯的闪烁肉眼无法分辨,需要再经过计数器2分频,才能看到灯的闪烁实验心得:在8250串行接口实验中,充分体会到了它的“串行”接口作用,特别是8250芯片的编程方法,其清晰的条理使我对它有了更为深刻的理解。8250与8255并行接口芯片的结合使用,更是体会到了串行通信和并行通信的异同。实验五 ADC0809实验一, 实验目的(1)掌握转换的基本原理。(2)掌握的使用方法。二,实验设备微机实验教学系统实验箱,8086CPU模块三、实验内容按查询方式采样一路A/D转换数据,用简单输入口74LS244查询EOC信号。每循环一次0通道采样一次。0通道的采样结果放入AX中,AL有效。四,实验步骤1. 连线实验原理图如下:其中,将可变电位器AN0与ADC0809的ADIN0相连;将CS0与ADC0809的片选CS0809端相连;将ADC0809的EOC与74LS244的IN0相连;将CS1与74LS244的片选CS244端相连。2. 编辑程序,编译链接后,调试程序。3. 调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断 请求后,程序停在中断服务程序内的断点处。4. 撰写实验报告五,实验程序实验流程图:实验源程序:CODE SEGMENT PUBLICASSUME CS:CODE ORG 100HSTART: MOV DX,4A0H ; 指向通道0 CALL GETAD ; 调用A/D转换子程序,取得A/D值 JMP START DELAY: ;延时子程序 MOV BP,1000H DELAY1: DEC BP CMP BP,0 JNE DELAY1RETGETAD:;A/D转换子程序 PUSH DX MOV AX,34H 启动A/D OUT DX,AX CALL DELAY MOV DX,4B0H ;指向74LS244地址WAIT1: IN AX,DX TEST AX,1 JZ WAIT1 ; EOC=0,正在变换,跳至WAIT1 POP DX ;EOC=1,依次变换完毕,读取A/D值 IN AX,DX MOV AH,0 RETCODE ENDSEND START实验现象:在“JMP START”处设置断点,全速运行到此处,观察到寄存器AX=0045H.当旋转电位器后,AX的值会变化。六,思考题1 连接其它通道,修改程序。将可变电位器AN0与ADC0809的ADIN1相连,其他连线不变。需要将程序中的“MOV DX,4A0H”改为“MOV DX,4A2H”。实验现象同上。2 将采到的数据发送到 8250 上;在 PC 机观察数据。CODE SEGMENT PUBLICASSUME CS:CODE ORG 100HSTART: MOV DX,486H ;8250串行接口的初始化 MOV AX,80H OUT DX,AX MOV DX,480H MOV AX,12 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,486H MOV AX,3 OUT DX,AX MOV DX,482H MOV AX,0 OUT DX,AX MOV DX,48AH IN AX,DX MOV DX,480H IN AX,DXM1: MOV DX,4A2H ; 指向通道1 CALL GETAD ; 调用A/D转换子程序,取得A/D值 CALL SEND ;调用串行发送子程序 JMP M1 ;循环等待DELAY: ;延时 MOV BP,1000H DELAY1: DEC BP CMP BP,0 JNE DELAY1RETGETAD:;A/D转换子程序 PUSH DX MOV AX,34H OUT DX,AX CALL DELAY MOV DX,4B0H WAIT1:;指向74LS244地址 IN AX,DX TEST AX,1 JZ WAIT1 POP DX IN AX,DX MOV AH,0 RETSEND:;串行发送子程序 PUSH AX MOV DX,48AH IN AX,DX TEST AX,20H JNZ SEND2 POP AX JMP SENDSEND2: POP AX MOV DX,480H OUT DX,AX RETCODE ENDSEND START实验现象:可变电位器AN0输出的模拟量经A/D转换后所得的8bit数据显示在pc机的接收区。旋转电位器,显示的数值也会随之改变。七,实验心得通过本次实验,基本掌握了AD转换程序的编写,包括通道的选择、EOC电平的检测和A/D转换子程序的编写,有利于知识的积累。使用8250串行接口芯片,用上位机观测转换后的8bit数字,直观有趣,当调节电位器时,PC机显示的值会很快随之变化。自己动手连线,进一步熟悉了ADC0809芯片的电路原理图,与理论知识相结合,学以致用。专心-专注-专业