北京化工大学微机接口技术课程实验报告

合集下载

微机原理与接口技术实验报告一

微机原理与接口技术实验报告一

微机原理与接口技术实验报告(一)实验内容一:1、实验目的: 考察对内存寻址方式、8086指令的理解内存中的数据排列如上表所示,各寄存器内容如下DS=2100H ES=2111H SS=2000H BX=106H CX=3H SI=106H DI=12H BP=1100H SP=1100HFR=3402H (FR 标志寄存器,FR 中的DF -字符串操作方向位为1)在执行下列指令后,写出寄存器AX中的内容 0) pop ax; AX= 1) mov ax,bx; AX= 2) mov ax,[bx];AX= 3) mov ax,102H;AX= 4) mov ax,[102H];AX= 5) mov ax,6[SI];AX= 6) lea ax,6[BX][DI];AX= 7) mov ax,[BP+DI];AX= 8) rep lodsw;AX= , 还需写出SI=2、实验内容: (1)开始菜单下选择运行,输入cmd 回车,在开启的窗口中输入debug 后回车,进入程序输入环境(2)利用r 指令显示当前各寄存器储值并按照上文中的寄存器值进行修改 结果如下:物理地址 内容(字节) 物理地址 内容(字节)21100H BEH 21110H 99H 21101H 02H 21111H 00H 21102H 01H 21112H E8H 21103H 8BH 21113H 7EH 21104H 44H 21114H E0H 21105H 02H 21115H 74H 21106H 29H 21116H 06H 21107H 44H 21117H E8H 21108H 04H 21118H 17H 21109H 9CH 21119H 01H 2110AH 50H 2111AH ACH 2110BH E6H 2111BH EBH 2110CH 99H 2111CH 34H 2110DH C6H 2111DH 00H 2110EH 06H 2111EH 30H 2110FHE8H2111FH0BH(3)d指令查看21100H——2111FH内存单元的内容(4)e指令对该段内存单元进行赋值(5)a指令按顺序输入要求中列出的指令(6)u指令进行反汇编(7)t指令(跟踪命令)逐条运行指令,观察记录指令运行结果3、实验结果0) pop ax; AX=02be1) mov ax,bx; AX=01062) mov ax,[bx];AX=44293) mov ax,102H;AX=01024) mov ax,[102H];AX=8b015) mov ax,6[SI];AX=c6996) lea ax,6[BX][DI];AX=011e7) mov ax,[BP+DI];AX=7ee88) rep lodsw;AX=4429, SI=0108实验内容二:1、实验目的:熟悉masm for windows 软件的应用,体会汇编程序的编写、编译、执行及调试等各个环节。

微机接口技术报告

微机接口技术报告

微机原理实验报告实验四 8255A并行接口实验一、实验目的1、学会通过PC总线、驱动器、译码器等在PC机外部扩充新的芯片。

2、了解8255A并行口的工作原理。

3、掌握8255A初始化的程序设计方法。

4、掌握8255A方式0的基本输入/输出和方式1的选通型输入/输出方式的使用方法。

二、实验内容1、使8255A工作于工作方式0,将由C口读入的开关状态从A口输出到LED上显示出来。

断开电源,按虚线连接电路,按图2-1将8255A接入系统。

具体包括:将8255A的CS接I/O地址输出端288H~28FH,C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2、使8255A工作于方式1,将由A口读入的状态从B口输出到LED上显示出来。

断开电源,按图2-2将8255A接入系统。

具体包括:将8255A的CS接I/O地址输出端288H~28FH,A口接逻辑电平开关K0~K5,B口接LED显示电路L0~L5,C口相应位分别接开关或LED发光二极管。

三、程序流程图实验一:8255A工作于方式0,将C口定义为输入方式,A口定义为输出方式。

程序流程图如图所示。

实验二:每个判断命令前都加入一个按键返回判断。

程序流程图如图四、程序代码实验一程序:PPIA EQU 288HPPIB EQU 289HPPIC EQU 28AHPPICTL EQU 28BHDATA SEGMENTMESS1 DB '8255A IN MODE 0!',0DH,0AH,'$'MESS2 DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21HMOV DX,OFFSET MESS2MOV AH,09HINT 21HMOV DX,PPICTL ;8255A初始化MOV AL,89HOUT DX,ALCOUNT:MOV DX,PPICIN AL,DX ;C口读入MOV DX,PPIAOUT DX,AL ;A口输出MOV AH,06HMOV DL,0FFHINT 21HJZ COUNT ;若有键按下则退出 MOV AX,4C00HINT 21HCODE ENDSEND START实验二程序:PPIA EQU 288HPPIB EQU 289HPPIC EQU 28AHPPICTL EQU 28BHDATA SEGMENTMESS1 DB '8255A IN MODE 0!',0DH,0AH,'$'MESS2 DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21HMOV DX,OFFSET MESS2MOV AH,09HINT 21HMOV DX,PPICTL ;8255A初始化 MOV AL,0B4HOUT DX,ALCOUNT:MOV DX,PPICIN AL,DXAND AL,20HCMP AL,20HJNZ COUNTMOV DX,PPIA IN AL,DXPUSH AX ABC: MOV DX,PPICIN AL,DXAND AL,02HCMP AL,02HJNZ ABCPOP AXMOV DX,PPIBOUT DX,ALMOV AH,06H MOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START五、实验过程及结果六、实验思考题1、答:A口及B口以方式1工作时,只要不是作为联络线的C口其他位,都可以由程序按位设定为基本的输入输出线,用于传输数据。

微机与接口技术实验报告

微机与接口技术实验报告

微机与接口技术实验报告微机与接口技术实验报告引言微机与接口技术是计算机科学中的重要领域,它涉及到计算机与外部设备之间的通信和数据传输。

本实验报告旨在介绍微机与接口技术的基本概念、实验过程和结果,以及对实验结果的分析和讨论。

一、实验目的本实验旨在通过设计和实现一个简单的数据输入输出接口,加深对微机与接口技术的理解。

具体目标包括:1. 理解接口技术的基本原理和工作方式;2. 掌握接口电路的设计和实现方法;3. 学会使用编程语言控制接口电路进行数据输入输出。

二、实验原理1. 接口技术的基本原理接口技术是计算机与外部设备之间进行数据传输的关键。

通过接口电路,计算机可以与各种外部设备进行通信,实现数据的输入和输出。

接口电路通常由硬件和软件两部分组成,硬件部分负责物理连接和信号转换,而软件部分则负责控制和管理数据传输。

2. 接口电路的设计和实现接口电路的设计需要考虑多个因素,包括外部设备的接口标准、数据传输速率、数据格式等。

常用的接口标准包括串行接口(如RS-232)和并行接口(如Centronics接口)。

设计接口电路时,需要根据具体需求选择合适的接口标准,并合理设计电路结构和信号处理方式。

3. 编程语言控制接口电路为了实现数据的输入和输出,需要使用编程语言控制接口电路。

常用的编程语言包括C、C++和Python等。

通过编写相应的程序,可以控制接口电路进行数据传输,并实现与外部设备的交互。

三、实验过程1. 硬件设计与连接根据实验要求,设计并连接适当的硬件电路,包括接口芯片、电阻、电容等。

确保电路连接正确,且与计算机的接口兼容。

2. 软件编程使用C语言编写程序,实现对接口电路的控制。

程序应能够实现数据的输入和输出,并确保数据的正确传输和处理。

3. 实验操作根据实验要求,进行相应的实验操作。

包括数据输入和输出测试、数据传输速率测试、数据格式转换测试等。

记录实验过程中的数据和结果。

四、实验结果分析1. 数据输入输出测试通过实验操作,测试接口电路的数据输入和输出功能。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告引言微机原理与接口技术是计算机科学与技术专业的一门重要课程,通过实验的方式来深入理解微机原理和接口技术的原理和应用。

本实验报告将详细介绍我们在实验中所学到的内容和实验结果。

一、实验目的微机原理与接口技术实验的主要目的是让学生通过实验来了解和掌握微机系统的结构与工作原理,以及接口技术的基本原理和应用。

通过实验,我们可以加深对微机原理和接口技术的理解,并能够熟练操作相应的实验设备和软件。

二、实验内容本次实验主要包括以下几个方面的内容:1. 微机系统的组成与原理:了解微机系统的基本组成部分,包括微处理器、存储器、输入输出设备等,并学习它们的工作原理和相互之间的联系。

2. 微机系统的调试与测试:学习使用调试工具和测试设备来验证微机系统的正确性和稳定性,通过调试和测试来发现和排除系统中的问题。

3. 接口技术的原理与应用:了解各种接口技术的原理和应用,包括并行接口、串行接口、USB接口等,学会设计和实现简单的接口电路。

4. 接口电路的设计与调试:通过实际设计和调试接口电路,加深对接口技术原理的理解,并能够解决实际问题。

三、实验过程及结果在实验中,我们首先学习了微机系统的基本结构和工作原理,并通过实际操作,搭建了一个简单的微机系统。

通过调试和测试,我们验证了系统的正确性和稳定性。

接着,我们学习了各种接口技术的原理和应用。

我们以并行接口为例,设计了一个简单的并行接口电路,并通过实验验证了其正确性。

同时,我们还学习了串行接口和USB接口的原理,并了解了它们在实际应用中的重要性。

在接口电路的设计和调试过程中,我们遇到了一些问题,例如信号传输的稳定性、接口电路的兼容性等。

通过分析和调试,我们逐步解决了这些问题,并取得了令人满意的实验结果。

四、实验总结通过本次实验,我们深入了解了微机原理和接口技术的基本原理和应用。

通过实际操作和调试,我们不仅掌握了微机系统的组成和工作原理,还学会了设计和实现简单的接口电路。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告实验目的:本次实验旨在通过实际操作,加深对微机原理与接口技术的理解,掌握接口技术的基本原理和应用方法,提高学生的动手能力和实际应用能力。

实验内容:1. 学习并掌握微机原理与接口技术的基本知识;2. 了解并熟悉常见的接口技术及其应用;3. 进行实际操作,设计并完成一个简单的接口电路。

实验仪器与设备:1. 个人电脑;2. 电子元件,电阻、电容、集成电路等;3. 实验板、示波器、示教电脑等。

实验步骤:1. 阅读相关的微机原理与接口技术的教材,了解基本原理;2. 学习常见的接口技术,例如并行接口、串行接口等;3. 进行实际操作,设计一个简单的接口电路,包括硬件设计和软件编程;4. 调试电路,确保接口电路能够正常工作;5. 编写实验报告,总结实验过程和实验结果。

实验结果与分析:经过实际操作,我们成功设计并完成了一个简单的接口电路。

在实验过程中,我们深入理解了微机原理与接口技术的相关知识,掌握了接口技术的基本原理和应用方法。

通过调试电路,我们验证了接口电路的正常工作,加深了对接口技术的理解。

结论:本次实验使我们更加深入地了解了微机原理与接口技术,提高了我们的动手能力和实际应用能力。

通过设计和完成接口电路,我们对接口技术有了更加直观的认识,为今后的学习和工作打下了坚实的基础。

总结:微机原理与接口技术是计算机专业的重要课程,通过实验学习,我们不仅加深了对知识的理解,还提高了动手能力和实际应用能力。

希望同学们能够认真对待每一次实验,不断提升自己的能力,为未来的发展打下坚实的基础。

至此,本次微机原理与接口技术实验报告完毕。

微机接口技术实验报告并行接口实验

微机接口技术实验报告并行接口实验

微机接口技术实验报告并行接口实验系别: 计算机科学与技术完成时间:2012-5-15一、实验目的1.熟悉并行接口电路;2.掌握8255并行接口芯片及8253定时器的应用及其编程技术。

二、实验内容及要求通过对8255芯片的编程,使得实验台上的步进电机按顺时针或逆时方向转动,同时扬声器(模拟电子琴)做高8度和低8度循环发音:1. 控制步进电机转动和电子琴发音;2.使用K0控制步进电机顺逆时针转动和电子琴发高低音;3.使用K1控制步进电机和电子琴速度(分快和慢两种速度);4.使用K2启动和停止步进电机转动和电子琴发音。

三、实验原理1、可编程并行芯片8255A并行接口即同时在多根I/O线上,以数据字节或字为单位实现CPU通过I/O端口与I/O 设备或被控制对象之间的信息传递,如计算机与打印机,A/D和D/A转换器,开关量接口等。

8255及其改进型8255A是最广泛应用的并行I/O接口。

8255A的主要性能参数如下:(1)8255A内共有4个端口,分别为口A、口B、口C和控制端口。

前三个端口为8位并行I/O端口,常用于传送数据信息;控制端口是用于接收CPU送来的控制命令,即控制字。

(2)8255A芯片可以三种不同的工作方式与I/O设备进行数据传输,具体方式由控制字来设定。

(3)8255与CPU之间交互信息可以使用中断方式进行。

它内部有三个中断源,分别产生与方式1(1个)和方式2(2个)中。

(4)8255A所有信号与TTL信号兼容,可直接与CPU的三总线连接使用。

(5)8255A使用单一的+5V电源,单项时钟。

8255A的三种工作方式:方式0——基本的输入/输出方式,方式1——选通的输入/输出方式,方式2——双向的输入/输出方式。

本次实验采用方式0,将口A和口B作为输出,分别控制步进电机的旋转和电子琴的发音,口C作为控制输入端。

根据端口编址及寻址方式,设定端口A的地址为288H,端口B地址为289H,端口C地址为28AH,控制端口的地址为28BH。

微机原理与接口技术实验报告二

微机原理与接口技术实验报告二

微机原理与接口技术实验报告(二)1、实验内容一:实验目的:(1) 阅读《实验操作.ppt》, 学习汇编工具的使用(2) 学习附录的程序代码, 理解并输入、编译和查错3) 学习利用编译错误信息进行附录的程序修改;(程序包含一个语法错误和一个逻辑错误)4)学习程序流程控制: (条件跳转指令ja jb (call指令, 观察程序执行时堆栈的变化(学会用debug –g命令设置断点);5 )学习程序中有限的寄存器的使用。

2.实验内容:(1)打开masm for windows软件, 在其中输入实验要求附给的程序, 保存后运行, 程序报错:(2)经分析发现, “noneeded”没有定义, 改为“notneeded”后正常运行(3)运行过程中发现当字母或数字个数达到两位数时, 统计结果的各位与十位对调了。

如下图, 字母数应为13, 但显示为31(4)经检查, 发现第80行程序有误, inc指令应改为dec指令。

运行后程序正常, 调试完毕。

如下图程序框图如下:实验内容二:1.实验目的及内容:编写完整程序, 实现功能:统计以下字符串STR中空格的数目, 结果保存在COUNT中, 并把个数在屏幕上显示出来。

STR DB ' AB CDE FG H I J K L MNOPQ RST UV W XYZ 12 34 56 78 9'L EQU $-STRCOUNT DB ?(字符串STR可以从这里直接拷贝到程序中)实验结果:程序如下:dispmsg macro messgemov ah,9lea dx,messgeint 21hendmDATA segmenttishi db 0dh,0ah,'the original string is:' string db ' AB CDE FG H I J K L MNOPQ RST UV W XYZ 12 34 56 78 9' STRINGLEN= $-stringnewline db 0dh,0ahNspace db 0dH,0aH,'Number of char space is:',?,?Nsp db ?,'$'DATA endsSTACK segment stack 'stack'sta db 100 dup(?)stack endsCODE segmentASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,seg DATAMOV DS,AXxor cx,cxxor dl,dlmov cl,stringlenlea bx,stringcnt:mov al,[bx]cmp al,' 'jz yesspinc blloop cnt jmp shijinzhiyessp:inc dlinc blloop cntjmp shijinzhishijinzhi:lea bx,Nspmov ah,02hint 21hcall char2asc dispmsg tishiMOV AH,4CHINT 21Hchar2asc procmov dl,10 next: xor ah,ahdiv dladd ah,'0'mov [bx],ahdec bxor al,aljnz nextretchar2asc endpcode endsend startEND START运行结果如下:程序流程图如下:实验中遇到的问题及解决方法:1.汇编语言中寄存器有限, 在使用时注意是否保存寄存器中原有的值, 防止在使用寄存器时将原值改变。

微机接口技术与应用实验报告

微机接口技术与应用实验报告

微机接口技术与应用课程设计学校名称:院系:班级:小组成员:一.实验名称交通灯设计二.实验目的用软件模拟交通灯并在硬件设备实现。

三.实验环境四.实验说明交通灯分南北向和东西,一边三个,分别是绿红黄,红绿黄灯交替有四种情况,依次为:0--东西绿灯,南北红灯1--东西黄灯,南北红灯2--东西红灯,南北绿灯3--东西红的,南北黄灯。

当有黄灯亮时停顿1000s,其余的停顿2000s。

五.连接试验箱8255与280~28f连接,PA0,PA1,PA2,PA3,PA4,PA5口分别与L0,L1,L2,5,L6,L7相连接。

六.实验代码#include<stdio.h>#include<conio.h>#include "ApiExusb.h"#pragma comment(lib,"ApiExusb.lib")#include <windows.h>// 回调函数声明LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);// 初始化窗口类声明BOOL InitWindowsClass(HINSTANCE hInstance, char *lpszClassName);// 初始化窗口声明BOOL InitWindows(HINSTANCE hInstance, int nCmdShow, char *lpszClassName, char *lpTitle);WNDCLASS wndclass; // 定义一个窗口类HWND hwnd; // 定义一个窗口句柄int nNum=0; // 为灯的状态赋初值,记录交通灯的状态,0--东西绿灯,南北红灯1--东西黄灯,南北红灯//2--东西红灯,南北绿灯3--东西红的,南北黄灯int status[4]={0x21,0x11,0x0c,0x0a}; //控制试验箱灯的状态POINT pt[6]={{20,20},{80,20},{140,20},{20,80},{80,80},{140,80}}; //六盏灯的圆心坐标上面为东西,下面为南北,从左到右依次为绿黄红int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MSG Msg; // 定义消息char lpszClassName[] = "交通灯"; // 窗口的类名char lpTitle[] = "基本绘图-交通灯"; // 窗口标题名if(!Startup()) /*打开设备*/{//printf("ERROR: Open Device Error!\n");return 0;//exit(0);}printf("Enter any key will return:\n");PortWriteByte(0x28b,0x80); //向控制口写命令,控制c口输出// 初始化窗口类if (!InitWindowsClass(hInstance, lpszClassName)){return FALSE;}// 初始化窗口if (!InitWindows(hInstance, nCmdShow, lpszClassName, lpTitle)){return FALSE;}//消息循环while(GetMessage(&Msg, NULL, 0, 0)){TranslateMessage(&Msg);DispatchMessage(&Msg);}Cleanup(); /*关闭设备*/return Msg.wParam; // 程序终止时将信息返回系统}// 初始化窗口类定义BOOL InitWindowsClass(HINSTANCE hInstance, char *lpszClassName){//1、窗口类定义wndclass.style = 0; // 窗口类型为默认类型wndclass.lpfnWndProc = WndProc; // 窗口处理函数为WNDPROCwndclass.cbClsExtra = 0; // 窗口类无扩展wndclass.cbWndExtra = 0; // 窗口实例无扩展wndclass.hInstance = hInstance; // 当前实例句柄wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // 窗口的最小化图标为默认图标wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); // 窗口采用箭头光标wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 窗口采用白色背景wndclass.lpszMenuName = NULL; // 窗口中无菜单wndclass.lpszClassName = lpszClassName; //类名为lpClassName//2、注册窗口类if (!RegisterClass(&wndclass)){ // 如果注册失败则发出警告声音MessageBeep(0);return FALSE;}return TRUE;}// 初始化窗口声明BOOL InitWindows(HINSTANCE hInstance, int nCmdShow, char *lpszClassName, char *lpTitle)//3、创建窗口hwnd = CreateWindow(lpszClassName,lpTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,600,450,NULL,NULL,hInstance,NULL);//4、显示窗口ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);return TRUE;}// 回调函数定义LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){HDC hDC; // 定义设备环境句柄HPEN hPen; // 定义画笔句柄HBRUSH hBrush; // 定义画刷句柄PAINTSTRUCT PtStr; // 定义包含绘制信息的结构体变量int R = 10;// 定义圆的半径switch(message){case WM_KEYDOWN: //响应按键消息//----未完待续break;case WM_PAINT:{ // 处理绘图消息hDC = BeginPaint(hwnd, &PtStr); // 得到设备句柄SetMapMode(hDC, MM_ANISOTROPIC); // 设置映像模式SetWindowExtEx(hDC, 400, 300, NULL); // 设置窗口区域(逻辑单位)400,300SetViewportExtEx(hDC, 600, 450, NULL); // 设置视口区域(物理单位)SetViewportOrgEx(hDC, 200, 200, NULL); // 设置视口原点坐标为(300,200)hPen = (HPEN)GetStockObject(BLACK_PEN);SelectObject(hDC, hPen);// 绘制六盏交通灯外圆int i=0;if(status[nNum]&0x20)hBrush = CreateSolidBrush(RGB(0, 255, 0)); //东西为绿灯elsehBrush = CreateSolidBrush(RGB(255, 255, 255));SelectObject(hDC, hBrush);Ellipse(hDC,pt[i].x-R,pt[i].y-R,pt[i].x+R,pt[i].y+R);i++;//东西为黄灯if(status[nNum]&0x10)hBrush = CreateSolidBrush(RGB(255, 255, 0));elsehBrush = CreateSolidBrush(RGB(255, 255, 255));SelectObject(hDC, hBrush);Ellipse(hDC,pt[i].x-R,pt[i].y-R,pt[i].x+R,pt[i].y+R);i++;//东西为红灯if(status[nNum]&0x08)hBrush = CreateSolidBrush(RGB(255, 0, 0));elsehBrush = CreateSolidBrush(RGB(255, 255, 255));SelectObject(hDC, hBrush);Ellipse(hDC,pt[i].x-R,pt[i].y-R,pt[i].x+R,pt[i].y+R);i++;//南北为绿灯if(status[nNum]&0x04)hBrush = CreateSolidBrush(RGB(0, 255, 0));elsehBrush = CreateSolidBrush(RGB(255, 255, 255));SelectObject(hDC, hBrush);Ellipse(hDC,pt[i].x-R,pt[i].y-R,pt[i].x+R,pt[i].y+R);i++;//南北为黄灯if(status[nNum]&0x02)hBrush = CreateSolidBrush(RGB(255, 255, 0));elsehBrush = CreateSolidBrush(RGB(255, 255, 255));SelectObject(hDC, hBrush);Ellipse(hDC,pt[i].x-R,pt[i].y-R,pt[i].x+R,pt[i].y+R);i++;//南北为红灯if(status[nNum]&0x01)hBrush = CreateSolidBrush(RGB(255, 0, 0));elsehBrush = CreateSolidBrush(RGB(255, 255, 255));SelectObject(hDC, hBrush);Ellipse(hDC,pt[i].x-R,pt[i].y-R,pt[i].x+R,pt[i].y+R);i++;PortWriteByte(0x28a,status[nNum]);if(kbhit())exit(0);if((status[nNum]&0x02)||(status[nNum]&0x10)) //有黄灯亮,则睡1000,否则睡2000Sleep(1000);elseSleep(2000);nNum=(++nNum)%4; //控制交通灯循环InvalidateRect(hwnd, NULL, 1); // 重绘窗口区域DeleteObject(hPen);DeleteObject(hBrush);EndPaint(hwnd, &PtStr);break;}case WM_DESTROY:{PostQuitMessage(0);}default:{return DefWindowProc(hwnd, message, wParam, lParam);}}return 0;}七.实验现象试验箱上红绿灯与Win32执行出来的图形界面上的模拟红绿灯交替亮现象是同步的。

最新微机接口实验报告

最新微机接口实验报告

最新微机接口实验报告实验目的:1. 熟悉微机接口的基本原理和功能。

2. 掌握微机接口的编程和操作技巧。

3. 通过实验加深对微机接口技术的理解。

实验环境:- 微机接口实验箱- 个人电脑- 相关软件和驱动程序实验内容:1. 实验一:了解微机接口的基本结构和工作原理。

- 学习微机接口的基本概念,包括数据总线、地址总线、控制总线等。

- 观察实验箱中的微机接口模块,识别各部分的功能。

2. 实验二:编写简单的输入输出程序。

- 使用汇编语言或C语言编写程序,实现对微机接口的控制。

- 通过程序实现LED灯的点亮和熄灭,以及按键的读取。

3. 实验三:中断和DMA操作。

- 学习中断的基本概念和处理流程。

- 实现一个基于中断的键盘输入程序。

- 了解DMA的工作原理,并编写相应的数据传输程序。

实验步骤:1. 准备实验环境,确保所有设备和软件均已正确安装和配置。

2. 按照实验指导书的要求,逐步完成各个实验项目。

3. 在实验过程中记录关键步骤和结果,以便撰写实验报告。

4. 对遇到的问题进行分析和解决,记录解决方案。

实验结果:1. 成功理解微机接口的基本结构和功能。

2. 编写的输入输出程序能够正确控制LED灯和读取按键状态。

3. 中断和DMA操作实验顺利完成,实现了预期的功能。

实验结论:通过本次实验,加深了对微机接口技术的理解,掌握了基本的编程和操作技能。

实验中遇到的问题和挑战也有助于提高解决问题的能力。

通过实践,更加明确了理论知识与实际应用之间的联系。

建议和反思:- 在实验过程中,应更加注重对理论知识的应用,以提高实验效率。

- 对于复杂的问题,应采取分步解决的策略,避免在实验中出现混乱。

- 未来应加强实验前的准备工作,确保实验能够顺利进行。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告实验一,微机原理实验。

1. 实验目的。

本实验旨在通过对微机原理的实验,加深学生对微机原理相关知识的理解,提高学生的动手能力和实验技能。

2. 实验内容。

本实验主要包括微机原理的基本知识、微处理器的结构和功能、微机系统的总线结构、存储器与I/O接口。

3. 实验步骤。

(1)了解微机原理的基本知识,包括微处理器的分类、功能和工作原理。

(2)学习微机系统的总线结构,掌握总线的分类、功能和工作原理。

(3)了解存储器与I/O接口的基本概念和工作原理。

(4)进行实际操作,通过实验板进行微机原理实验,加深对微机原理知识的理解。

4. 实验结果。

通过本次实验,我深刻理解了微机原理的基本知识,掌握了微处理器的结构和功能,了解了微机系统的总线结构,以及存储器与I/O接口的工作原理。

通过实际操作,我对微机原理有了更深入的认识,提高了自己的动手能力和实验技能。

实验二,接口技术实验。

1. 实验目的。

本实验旨在通过对接口技术的实验,加深学生对接口技术相关知识的理解,提高学生的动手能力和实验技能。

2. 实验内容。

本实验主要包括接口技术的基本知识、接口电路的设计与调试、接口技术在实际应用中的作用。

3. 实验步骤。

(1)了解接口技术的基本知识,包括接口的分类、功能和设计原则。

(2)学习接口电路的设计与调试,掌握接口电路设计的基本方法和调试技巧。

(3)了解接口技术在实际应用中的作用,包括各种接口的应用场景和实际案例。

(4)进行实际操作,通过实验板进行接口技术实验,加深对接口技术知识的理解。

4. 实验结果。

通过本次实验,我深刻理解了接口技术的基本知识,掌握了接口电路的设计与调试方法,了解了接口技术在实际应用中的作用。

通过实际操作,我对接口技术有了更深入的认识,提高了自己的动手能力和实验技能。

总结。

通过微机原理与接口技术的实验,我对微机原理和接口技术有了更深入的理解,提高了自己的动手能力和实验技能。

希望通过今后的学习和实践,能够更加深入地掌握微机原理与接口技术的知识,为将来的工作和研究打下坚实的基础。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告微机原理与接口技术实验报告一、引言微机原理与接口技术是计算机科学与技术专业中的一门重要课程,通过学习该课程可以了解计算机硬件的基本原理和接口技术的应用。

本实验报告旨在总结和分析我们小组在该课程中进行的实验内容和实验结果,以及对所学知识的理解和应用。

二、实验目的本次实验的主要目的是通过实际操作,深入理解微机原理和接口技术的相关知识,掌握计算机硬件的基本原理和接口技术的应用方法。

具体实验目标如下:1. 熟悉计算机硬件的基本组成和工作原理;2. 学习并掌握接口技术的基本原理和应用方法;3. 能够使用接口技术实现不同设备之间的数据传输和通信。

三、实验内容本次实验主要包括以下几个方面的内容:1. 计算机硬件的基本组成和工作原理:通过拆解和组装计算机主机,了解主板、CPU、内存、硬盘等硬件组件的作用和相互连接方式,以及计算机的工作原理。

2. 接口技术的基本原理和应用方法:学习串口、并口、USB等接口的工作原理和应用场景,了解不同接口的特点和使用方式。

3. 使用接口技术实现数据传输和通信:通过编写程序和使用相应的接口设备,实现计算机与外部设备之间的数据传输和通信,如串口通信、并口通信等。

四、实验过程与结果在实验过程中,我们首先进行了计算机硬件的拆解和组装实验,通过拆解主机并观察各个硬件组件,深入了解了计算机的内部结构和工作原理。

然后,我们学习了串口和并口的基本原理和使用方法,并通过实际操作进行了串口和并口通信的实验。

最后,我们使用USB接口实现了计算机与外部设备之间的数据传输和通信。

在实验中,我们成功地通过串口实现了计算机与打印机之间的数据传输和通信,实现了打印机的控制和数据输出。

同时,我们还通过并口实现了计算机与外部设备之间的数据传输和通信,成功地控制了外部设备的运行和数据输入。

此外,我们还成功地使用USB接口实现了计算机与移动存储设备之间的数据传输和通信,实现了文件的读写和存储。

微机接口实验报告

微机接口实验报告

微机接口实验报告实验一:显示程序实验(2021年4月22日)1、实验目的及实验内容实验目的:1.掌握在PC机上以十六进制数形式显示数据的方法2.掌握部分DOS功能调用的使用方法3.熟悉Tddebug调试环境和Turbo Debugger的使用实验内容及说明:本实验要求将指定的数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

0~9的ASII码为:30H~39H,转换时,直接在原数据后面加上30H即可;A以后的数据ASII码为:41H~ 在原数据上加上7H,再加上30H即可。

实验中可使用DOS功能调用(INT21H)。

1.显示单个字符入口:AH=02H调用参数:DL=输出字符 2.显示字符串入口:AH=09H调用参数:DS:DX:串地址,’$’为结束字符 3.键盘输入并回显入口:AH=01H调用参数:AL=输出字符若不回显,入口:AH=07H 或 AH=10H 4.返回DOS系统入口:AH=4CH调用参数:AL=返回码2、实验环境及实验步骤实验环境:PC机一台实验步骤:1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序。

显示部分实验流程图如下:2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接3.使用Run菜单中的Run运行程序,观察运行结果4.使用Run菜单中的Debug调试程序,观察调试过程中的数据传输指令执行后各寄存器及数据区的内容5.更改数据区中的数据,考察程序的正确性本实验的显示部分试验流程如图所示取字节的高4位N数据是否大于等于A?Y是A-F,加7H转换成ASCH码送屏幕显示取字节的低四位数据是否大于等于A?NY是A-F,加7H转换成ASCH码送屏幕显示3、实验过程与分析(1).取字节的高四位的实现首先将一个字节读入寄存器,将该字节同0F0H相与,即可将该字节的高四位保持不变而第四位变为全0。

然后将相与后的字节右移四位即得到原始字节的高四位。

微机接口实验报告

微机接口实验报告

微机接口实验报告实验一:I/O地址译码一、实验目的掌握I/O 地址译码电路的工作原理。

二、实验原理和内容实验电路如图(1)所示,其中74LS74 为D 触发器,可直接使用实验台上数字电路实验区的D 触发器,74LS138 为地址译码器。

译码输出端Y0~Y7 在实验台上I/O 地址输出端引出,每个输出端包含8 个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU 执行I/ O 指令且地址在280H~2BFH 范围内,译码器选中,必有一根译码线输出负脉冲。

例如:执行下面两条指令Y4 输出一个负脉冲,执行下面两条指令MOV DX, 2A0HOUT DX,AL(或IN AL,DX)Y5 输出一个负脉冲。

MOV DX,2A8HOUT DX,AL(或IN AL,DX)利用这个负脉冲控制L7 闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

三、实验程序L1: MOV DX, 2A0H //选通74LS138的11口OUT DX, AL //使端口A输出,给D触发器一个时钟信号LOOP $ //延时LOOP $ //延时MOV DX, 2A8H //选用74LS138的10口OUT DX, AL //使D触发器清零LOOP $ //延时LOOP $ //延时MOV AH, 11 //十一号功能调用INT 21H //如果有键按下INC AL //AL加一,退出循环JNZ L1 // 如果没键按下,则继续循环四、总结第一次实验比较简单、主要是学会了通过程序控制芯片及其端口的选通,其方法是根据芯片外围搭建的电路使DX进行写或读的操作、例如本实验里,要想选通74LS138的11口操作8255的端口A,则需要使,同理操作10口时,则使DX=2A8H,再加上延时DELAY功能,即可使LED灯循环亮灭。

但是如果不给芯片断电,则LED灯会一直循环,不能进进行人为的控制,所以又在后面加上了11号功能调用,只要当AL=0,循环结束。

北京化工大学微机原理硬件实验报告

北京化工大学微机原理硬件实验报告

实验三:可编程并行接口8255code segmentassume cs:codestart:mov dx,28bhmov ax,8bhout dx,axinout:mov dx,28ahin ax,dxmov dx,288hout dx,axmov dl,0ffhmov ah,06hint 21hjz inoutmov ah,4chint 21hcode endsend start实验八:可编程定时器/计数器(8254 4 )code segmentassume cs:codestart:mov al,3ehmov dx,283hout dx,almov ax,0mov dx,280hout dx,almov al,ahout dx,almov al,0behmov dx,283hout dx,almov ax,10mov dx,282hout dx,almov al,ahout dx,alint 21hmov ax,4chcode endsend start实验十三:中断data segmentmess db 'TPCA interrupt!',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart:mov ax,csmov ds,axmov dx,offset int3mov ax,250bhint 21hcliin al,21hand al,0f7hout 21h,almov cx,10still:jmp llint3:mov ax,datamov ds,axmov dx,offset messmov ah,09int 21hmov al,20hout 20h,alloop nextin al,21hor al,0Bhout 21h,alstimov ah,4chint 21hnext:iretcode endsend start实验十六:串行通讯8251data segmentio8253a equ 280hio8253b equ 283hio8251a equ 2b8hio8251b equ 2b9hmes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8253b ;设置计数器工作方式mov al,16hout dx,almov dx,io8253amov al,52 ;给计数器送初值out dx,almov dx,io8251b ;初始化xor al,almov cx,03 ;向控制端口送个delay: call out1loop delaymov al,40h ;向控制端口送H,使其复位call out1mov al,4eh ;设置为个停止位,8个数据位,波特率因子为 call out1mov al,27h ;向送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz waitimov ah,01 ;是,从键盘上读一字符int 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251ainc alout dx,al ;发送mov cx,40hs51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上 int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,40hgg: loop gg ;延时pop cxretout1 endpcode endsend start。

微机接口实验8251 北工大

微机接口实验8251 北工大

8251A 基础实验:一.实验目的:1.了解串行通信的基本原理。

2.掌握可编程串行通信接口芯片8251A的工作原理和编程方法。

二、实验内容:1.异步串行自发自收实验:(1)使用8251A发送固定二进制数在接收回来,将收到的数加1后显示在LED上。

(2)通信协议:异步,波特率为4800bps,波特因子为16,8位数据位,1位停止位,无奇偶校验;(3)采用查询方式实现。

2.RS-232通信实验:(1)PC机与试验箱通过串行进行通信,PC机向实验箱发送字符,实验箱上的8521A接收到字符后再原样发回PC机;(2)通讯协议自定;(3)采用中断方式实现。

三.实验环境1.硬件:GX-8000实验箱,USB电缆,自锁紧导线;2.软件:icode集成开发环境。

四:实验提示1.按键中断实验(1)8251A是一个28管脚的双列直插芯片,插在实验箱的40脚自锁紧通用插座上,实验中需用导线手动连接包括电源、地、数据总线、时钟信号、发送线、接收线在内的所需要的所有线路。

参考连线如图3.18所示。

(2)参考程序流程图如图3.19所示:(3)在对8251A进行初始化操作前必须确保其可靠复位,方法是:向8251A控制口连续写入三个0,然后再写入复位命令字40H。

注意:对8251A的控制口进行一次写操作,需要16个时钟信号的写恢复时间。

参考代码如下:其中,DELAY用于实现延时,其定义如下:(4)在程序设计过程中,可以使用单步调试,通过观察程序运行过程中寄存器值的变化调试程序错误,也可以进一步理解8251A 的控制原理。

(5)程序如下:DATA SEGMENT ;数据段DATA ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA START:MOV DX,28BH ;初始化8253MOV AL,00010110BOUT DX,ALMOV DX,288HMOV AX,13OUT DX,ALMOV AL,80H ;初始化8255 MOV DX,283HOUT DX,ALMOV DX,299H;8251A的控制口地址MOV AL,0OUT DX,AL ;想8251A的控制口写0 CALL DELAY;延时MOV AL,0OUT DX,AL;想8251A的控制口写0 CALL DELAYMOV AL,0OUT DX,AL;向8251A的控制口写0 CALL DELAYMOV AL,40H;写复位命令OUT DX,ALCALL DELAYMOV DX,299H ;初始化8251MOV AL,01001110BOUT DX,ALCALL DELAYMOV DX,299HMOV AL,00010111BOUT DX,ALCALL DELAYMOV DI,3000H ;指针初值MOV CX,000AH ;接收数据个数A1:MOV DX,299HIN AL,DX ;TxRDY=1?TEST AL,01HJZ A1MOV DX,298HIN AL,DX ;8251数据口读入数据MOV DX,CXMOV CL,9 ;发送数MOV AL,CLOUT DX,ALMOV DX,299HA2:IN AL,DX ;RxRDY=1?TEST AL,02HJZ A2MOV DX,298HIN AL,DXINC CLMOV DX,280HMOV AL,CLOUT DX,ALJMP A1DELAY PROCMOV CX,02HLOOP $RETDELAY ENDPCODE ENDSEND START2.RS-232通信试验(1)8251A要实现与PC通信,需要通过RS-232模块将TTL电平信号转换为RS-232电平信号。

微型计算机接口技术实验报告(二)

微型计算机接口技术实验报告(二)

微型计算机接口技术实验报告实验一:交通灯实验一.实验目的了解可编程并行接口芯片8255 的内部结构、工作方式、初始化编程及应用。

二.实验内容说明1、8255A 的内部结构(1)数据总线缓冲器:这是一个双向三态的8 位数据缓冲器,它是8255A与微机系统数据总线的接口。

输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。

(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。

B 端口包含一个8 位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。

C 端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。

(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。

方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。

对C口按位复位命令字可对C口的每一位实现置位或复位。

A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。

(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。

2、8255A 的工作方式方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式。

3、8255A 的状态字图 6-3-1 8255 方式1 的状态字图6-3-2 8255 方式2 的状态字三.实验原理图图6-3-5 可编程并行接口8255 电路四.实验步骤(1) 实验连线(如图所示)该模块的 WR、RD分别连到ISA总线接口模块的IOWR、IORD。

该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。

8255 模块选通线CE 连到ISA 总线接口模块的0000H。

微机原理及接口技术实验报告

微机原理及接口技术实验报告

微机原理及接口技术实验报告一、实验目的本实验旨在通过掌握微机原理和接口技术的实验操作,实践相关理论知识,加深对微机原理和接口技术的理解。

二、实验设备和材料1.计算机主机2.操作系统3.接口卡4.编程软件三、实验原理微机原理是指通过学习微机的结构、功能和工作原理,从硬件层面掌握微机的基本知识。

接口技术是指连接不同设备之间的通信和数据交换技术,通过学习接口技术可以实现设备的互联和数据的传输。

四、实验步骤1.将接口卡插入计算机主机的扩展槽中。

2.启动计算机,并加载操作系统。

3.打开编程软件,编写实验程序。

4.将编写好的程序烧录到接口卡中。

5.连接外部设备和接口卡,并确认连接正确无误。

6.运行程序,并观察外部设备和接口卡之间的数据交互情况。

7.分析实验结果,并记录实验数据。

8.关闭程序和计算机。

五、实验结果及分析通过实验我们成功连接了外部设备和接口卡,并实现了数据的传输和交互。

在程序运行过程中,我们观察到外部设备正常工作,并且与接口卡之间的通信稳定可靠。

根据实验数据分析,我们可以得出接口卡的性能良好,并且能够满足实际应用需求。

六、实验心得通过这次实验,我对微机原理和接口技术有了更深入的理解。

实践操作让我加深了对硬件设备和软件编程的认识,掌握了实现设备互联和数据传输的基本方法。

在实验过程中,我遇到了一些问题,如接口卡的插入和连接问题,但通过查阅资料和请教老师同学,最终成功解决了这些问题。

我发现实验不仅帮助我巩固了理论知识,也提高了我的实践能力和解决问题的能力。

总结起来,微机原理和接口技术是计算机相关专业的基础课程之一,通过实验的方式学习可以更好地将理论知识与实际应用相结合。

我相信通过不断的实践和学习,我会在微机原理和接口技术方面有进一步的提高和发展。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告实验目的,通过本次实验,掌握微机原理与接口技术的基本知识,了解并掌握微机接口技术的应用方法。

实验仪器与设备,微机实验箱、接口卡、示波器、电源等。

实验原理,微机接口技术是指微机与外部设备进行数据交换的技术。

它是微机与外部设备之间的桥梁,通过接口技术可以实现微机与外部设备之间的数据传输和通信。

实验内容与步骤:1. 实验一,串行通信接口实验。

a. 将串行通信接口卡插入微机实验箱的接口槽中;b. 连接示波器和外部设备,并进行数据传输测试;c. 观察并记录数据传输的波形和数据传输情况。

2. 实验二,并行通信接口实验。

a. 将并行通信接口卡插入微机实验箱的接口槽中;b. 连接外部设备,并进行数据传输测试;c. 观察并记录数据传输的情况。

3. 实验三,AD转换接口实验。

a. 将AD转换接口卡插入微机实验箱的接口槽中;b. 连接外部模拟信号源,并进行模拟信号转换测试;c. 观察并记录模拟信号转换的波形和数据传输情况。

实验结果与分析:1. 串行通信接口实验结果分析:通过实验发现,在串行通信接口实验中,数据传输的波形稳定,数据传输速度较快,适用于对数据传输速度要求较高的应用场景。

2. 并行通信接口实验结果分析:在并行通信接口实验中,数据传输稳定,但数据传输速度相对较慢,适用于对数据传输速度要求不高的应用场景。

3. AD转换接口实验结果分析:经过实验发现,AD转换接口可以将模拟信号转换为数字信号,并且转换精度较高,适用于对信号转换精度要求较高的应用场景。

实验总结与展望:通过本次实验,我们深入了解了微机原理与接口技术的基本知识,掌握了串行通信接口、并行通信接口和AD转换接口的应用方法。

同时,也发现不同接口技术在数据传输速度、稳定性和精度方面各有优劣,需要根据实际应用场景进行选择。

未来,我们将继续深入学习和探索微机接口技术的应用,为实际工程项目提供更好的技术支持。

结语:通过本次实验,我们对微机原理与接口技术有了更深入的了解,实验结果也验证了接口技术在数据传输和信号转换方面的重要作用。

微型计算机接口技术实验报告

微型计算机接口技术实验报告

微型计算机接口技术实验报告实验1:基本IO 口扩展实验一.实验目的了解TTL 芯片扩展简单I/O 口的方法,掌握数据输入输出程序编制的方法。

二.实验内容说明74LS244 是一种三态输出的8 总线缓冲驱动器,无锁存功能,当G 为低电平时,Ai 信号传送到Yi,当为高电平时,Yi 处于禁止高阻状态。

74LS273 是一种8D 触发器,当CLR 为高电平且CLK 端电平正跳变时,D0——D7 端数据被锁存到8D 触发器中。

本实验利用74LS244 作为输入口,读取开关状态,并将此状态通过74LS273 驱动发光二极管显示出来。

三.实验原理图74LS244 与74LS273 扩展I/O 口原理图四.实验步骤1.编写源程序源程序为:MY_STACK SEGMENT PARA 'STACK'DB 100 DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA 'DATA'IO_9054base_address DB 4 DUP(0) ;PCI卡9054芯片I/O基地址暂存空间IO_base_address DB 4 DUP(0) ;PCI卡I/O基地址暂存空间pcicardnotfind DB 0DH,0AH,'pci card not find or address/interrupt error !!!',0DH,0AH,'$' GOOD DB 0DH,0AH,'The Program is Executing !',0DH,0AH,'$'LS244 DW 00000HLS273 DW 00020HRA DB ?LB DB ?DELAY_SET EQU 0FFFH ;延时常数MY_DATA ENDsMY_CODE SEGMENT PARA 'CODE'MY_PROC PROC FARASSUME CS:MY_CODE, DS:MY_DA TA, SS:MY_STACKMAIN:.386 ;386模式编译MOV AX,MY_DA TAMOV DS,AXMOV ES,AXMOV AX,MY_STACKMOV SS,AXCALL FINDPCI ;自动查找PCI卡资源及IO口基址MOV CX,word ptr IO_base_address; MOV CX,0E800H ;直接加入(E800:本机PCI卡IO口基址)ADD LS244,CX ;PCI卡IO基址+偏移ADD LS273,CXMOV RA,7FHMOV LB,0FEHREAD1: MOV DX,LS244 ;读取开关状态IN AL,DXCMP AL,55H ;如果是55右移JE READ2CMP AL,0AAH ;如果是AA左移JE READ3NOT AL ;取反JMP READ4READ2: CALL RIGHTJMP READ4READ3: CALL LEFTREAD4: MOV DX,LS273OUT DX,AL ;送LED显示CALL DELAYCALL BREAKJMP READ1MY_PROC ENDp;RIGHT PROC NEARMOV AL,RAROR AL,1MOV RA,ALRETRIGHT ENDPLEFT PROC NEARMOV AL,LBROL AL,1MOV LB,ALRETLEFT ENDP;;***************************************************************************** ; /*按任意键退出*/;*****************************************************************************;BREAK PROC NEAR ;按任意键退出PUSHFPUSH AXPUSH DXMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN: POP DXPOP AXPOPFRETBREAK ENDP;;***************************************************************************** ; /*延时程序*/;*****************************************************************************;DELAY PROC NEAR ;延时程序PUSHFPUSH DXPUSH CXMOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CXJNZ D2DEC DXJNZ D1POP CXPOP DXPOPFRETDELAY ENDp;;***************************************************************************** ; /* 找卡子程序*/;*****************************************************************************;;FUNCTION CODEIO_port_addre EQU 0CF8H ;32位配置地址端口IO_port_data EQU 0CFCH ;32位配置数据端口IO_PLX_ID EQU 200810B5H ;PCI卡设备及厂商ID BADR0 = 10H ;基地址寄存器0BADR1 = 14H ;基地址寄存器1BADR2 = 18H ;基地址寄存器2BADR3 = 1CH ;基地址寄存器3FINDPCI PROC NEAR ;查找PCI卡资源并显示PUSHADPUSHFDMOV EBX,080000000HFINDPCI_next:ADD EBX,100HCMP EBX,081000000HJNZ findpci_continueMOV DX,offset pcicardnotfind ;显示未找到PCI卡提示信息MOV AH,09HINT 21HMOV AH,4CHINT 21H ;退出findpci_continue:MOV DX,IO_port_addreMOV EAX,EBXOUT DX,EAX ;写地址口MOV DX,IO_port_dataIN EAX,DX ;读数据口CMP EAX,IO_PLX_IDJNZ findpci_next ;检查是否发现PCI卡MOV DX,IO_port_addreMOV EAX,EBXADD EAX,BADR1OUT DX,EAX ;写地址口MOV DX,IO_port_dataIN EAX,DX ;读数据口MOV dword ptr IO_9054base_address,EAXAND EAX,1JZ findPCI_next ;检查是否为i/o基址信息MOV EAX,dword ptr IO_9054base_addressAND EAX,0fffffffehMOV dword ptr IO_9054base_address,EAX ;去除i/o指示位并保存MOV DX,IO_port_addreMOV EAX,EBXADD EAX,BADR2OUT DX,EAX ;写地址口MOV DX,IO_port_dataIN EAX,DX ;读数据口MOV dword ptr IO_base_address,EAXAND EAX,1JZ findPCI_next ;检查是否为i/o基址信息MOV EAX,dword ptr IO_base_addressAND EAX,0fffffffehMOV dword ptr IO_base_address,EAX ;去除i/o指示位并保存MOV DX,offset good ;显示开始执行程序信息MOV AH,09HINT 21HPOPfdPOPadRETfindPCI ENDPMY_CODE ENDSEND MAIN2.编译源程序3. 实验连线(连线图如下)244 的CS——ISA 总线接口模块的0000H,Y7—Y0——开关K1—K8。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京化工大学测控专业微机接口技术课程综合创新实验报告
目录
1.课程名称 (1)
2.课程背景 (1)
3.功能分析. (1)
4.设计 (1)
4.1 硬件设计 (1)
4.2 软件设计 (3)
4.3 主题代码 (3)
5.设计心得 (6)
5.1收获与心得 (6)
5.2 思考 (7)
6.参考文献 (7)
1.实验名称基于计时中断的自动清零计数器
2.实验背景
设计一个能实现在数码管上显示的00~99的自动清零计数器,并且计数频率可调。

3.功能分析
为了实现上述要求,有三个工作要做:一是利用可编程定时器/计时器82C54产生一个周期约为2s的方波作为中断的触发信号;二利用可编程中断控制器82C59A响应外部中断源,中断触发信号来自设计的方波;三利用可编程并行接口芯片82C55A驱动数码管显示,利用六位数码管的的低两位来显示出当前的计数值。

4.设计
4.1.硬件设计
先进行硬件设计和端口地址选择。

82C54的电路结构原理如图1所示。

图1.自动清零计数装置电路结构原理1
82C54的端口地址为0040H(通道0),0041H(通道1),0042H(通道2),0043H(命令口)。

通道0作计数器使用,工作在3方式,目的是产生一个方波,GTAE0接+5V,CLK0接由系统8MHZ时钟分频得到1MHZ的脉冲信号。

输出端OUT0,接到中断控制器的IR3端口,利用OUT0输出方波的上升沿触发中断。

下图是中断控制器的硬件设计图。

图2.自动清零计数装置中断结构原理
如图,82C59A的IR3端口接82C54的OUT0端口,中断请求线INT接到8086的INTR,中断回答线INTA接到8086的INTA;使能端CS接到实验箱的FF80H端口。

这样就实现了82C54的OUT0产生的方波来一次上升沿就触发一次中断。

下图是可编程并行芯片82C55A的硬件图:
图3.自动清零计数装置82C55A结构
如图,当82C55A用于数码管显示时,PA口作为键扫/字位口;PB口作为字形口,PC口作为键入口;即PA口作为位选信号,PB口作为段选信号。

数码管的最低位用来显示当前计数值的个位数字,次低位用来显示当前计数值的十位数
字,通过添加延时,可达到尽量无抖动和尽量无消隐的效果。

下图是实验流程图:
图4.自动清零计数装置流程图
4.2.软件设计
根据上述硬件设计的安排和设计目标的要求,可设定:
通道0的方式命令为00110110B=36H,要产生周期约为2s的方波,根据如图公式:
图3
可得定时常数为0C350H。

4.3主体代码
汇编语言程序清单如下:
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0FF80H
INTPORT2 EQU 0FF81H
INTQ3 EQU INTREEUP3
TCONTRO EQU 0043H
TCON0 EQU 0040H
PA EQU 0FF20H
PB EQU 0FF21H
PC EQU 0FF22H
CTL EQU 0FF23H
ORG 12D0H
START: JMP START0
BUF DB?,?,?,?,?,?
INTCNT DB?;个位数字
INTCNT10 DB?;十位数字
TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0-9 START0: CLD
;8255初始化
MOV DX, CTL
MOV AL, 80H
OUT DX, AL
;8259初始化
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
;8253初始化L
MOV DX,TCONTRO
MOV AL,36H ;计数器0,先写低字节再写高字节,方式3 OUT DX,AL
MOV DX,TCON0
MOV AX,0C350H ;设置计数初值
MOV DX,TCON0
OUT DX,AL ;先写低字节
MOV AL,AH
OUT DX,AL ;再写高字节
; 修改中断变量
MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,0000H
STOSW
MOV INTCNT,0H ;TIME=0 STI
;等待中断
WATING:
MOV AL, INTCNT
MOV AH,0
CALL DISP
CALL DELAY
JMP WATING
;中断服务子程序
INTQ3: CLI ;关中断
PUSH AX ;保护现场
PUSH BX
PUSH CX
PUSH DX
MOV AL,INTCNT
INC AL
CMP AL, 10
JNZ INTRE2
MOV AL, 0
INC INTCNT10
CMP INTCNT10,10
JNZ INTRE2
MOV INTCNT10,0
INTRE2:
MOV INTCNT,AL
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
POP DX ;恢复现场
POP CX
POP BX
POP AX
STI
IRET
;8255显示子程序AL
DISP: ;显示个位数字PUSH AX
PUSH BX
PUSH DX
MOV DX, PB
MOV BX, OFFSET TAB
XLAT TAB
OUT DX, AL
MOV AL, 0FEH
MOV DX, PA
OUT DX, AL
CALL DELAY
DISP1: ;显示十位数字MOV AL,INTCNT10
MOV DX, PB
MOV BX, OFFSET TAB
XLAT TAB
OUT DX, AL
MOV AL, 0FDH
MOV DX, PA
OUT DX, AL
POP DX
POP BX
POP AX
RET
DELAY:
PUSH CX
MOV CX, 0FFH
D: NOP
LOOP D
POP CX
RET
CODE ENDS
END START
5.设计心得
5.1收获与心得
本次设计中,我们小组一起学习和讨论了82C55A,82C59A以及82C54的基本原理,同时结合这三种芯片设计出基于计时中断的自动清零计数器,我们都这三种芯片的实际应用有了更加深刻的理解。

虽然在实验期间遇到一些问题,但我们都尽量自己去查资料解决,这些都是很锻炼我们自己的。

5.2思考
在本次设计中,如有需要,可以把功能改进,如增加按键选择模式,可以选择计数/定时模式,还可以把计数/定时范围由两位扩展到四位。

6.参考文献
[1] 刘乐善.32位微型计算机接口技术及应用 [M] . 武汉:华中科技大学出版社,2006
[2] 杨素行。

微型计算机系统原理及应用(第三版)[M].北京:清华大学出版社,2009。

相关文档
最新文档