微机原理实验并行IO接口设计
实验二_并行I_O口
一、实验目的1、熟悉Proteus软件和Keil软件的使用方法。
2、熟悉单片机应用电路的设计方法。
3、掌握单片机并行I/O口的直接应用方法。
4、掌握单片机应用程序的设计和调试方法。
二、设计要求1、用Proteus软件画出电路原理图。
要求在P1.0至P1.7口线上分别接LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。
2、编写程序:要求LED0至LED7以秒速率循环右移。
3、编写程序:要求LED0至LED7以秒速率循环左移。
4、编写程序:要求在灯移动的同时,蜂鸣器逐位报警。
三、电路原理图四、实验程序流程框图和程序清单/***********(1)LED0~LED7以秒速率循环右移**************/MAIN: MOV A, #11111110BLOOP: MOV P1, A ;LED0灯亮,其他全灭LCALL DELAY1s ;调用1s延时子程序RL A ;累加器内容循环左移LJMP LOOP ;继续循环/***********1s延时子程序*******************/DELAY1s:MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5, #10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOPRETEND/***********(2)LED0~LED7以秒速率循环左移**************/ORG 0000HMAIN: MOV A, #01111111BLOOP: MOV P1, A ;LED7灯亮,其他全灭LCALL DELAY1s ;调用1s 延时子程序RR A ;累加器内容循环右移 LJMP LOOP ;继续循环 /********************1s 延时子程序**********************/ DELAY1s:MOV R7, #0A7HDL1: MOV R6, #0ABHDL0: MOV R5,#10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOP RETEND/**********(3)要求在灯循环移动的同时,蜂鸣器逐位报警 **************/ORG 0000HMAIN: MOV A, #11111110BLOOP: MOV P1, A ;LED0灯亮,其他全灭CPL P3.0 ;开蜂鸣器 LCALL DELAY05s ;调用0.5秒延时子程序 SETB P3.0 ;关蜂鸣器 LCALL DELAY05s ;调用0.5秒延时子程序 RL A ;累加器内容循环左移 LJMP LOOP ;继续循环/*********0.5s 延时子程序****************/DELAY05s:MOV R7, #17H DL1: MOV R6, #98HDL0: MOV R5, #46H DJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETEND六、实验总结通过本次实验,我熟悉了Proteus软件和Keil软件的使用方法,熟悉了单片机应用电路的设计方法。
微机原理实验报告 IO实验
《微机原理及应用技术》课程实验报告实验一片内输入、输出实验【预习内容】1.二进制、十进制及十六进制的表示方法及相互转换方法。
二进制XXXXB如1111B 十进制XX如15 十六进制0xXX如0x0f相互转换方法:十进制转二进制方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
二进制转十进制方法为:把二进制数按权展开、相加即得十进制数。
二进制转十六进制方法为:4位二进制数按权展开相加得到1位十六进制数。
(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
十六进制转二进制方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
十进制转十六进制有两种方法间接法把十进制转成二进制,然后再由二进制转成十六进制。
直接法把十进制转十六进制按照除16取余,直到商为0为止。
十六进制转成十进制方法为:把十六进制数按权展开、相加即得十进制数。
2.C语言基本数据类型、定义方式以及赋值范围。
(1)整数类型(2)浮点类型3.写出至少一种软件延时程序并说明原理。
基本原理:利用循环结构反复执行空语句占用指令周期,实现等待延时。
void Delay1ms() //@12.000MHz{unsigned char i, j;i = 2;j = 239;do{while (--j);} while (--i);}4.掌握for循环及while循环,掌握if语句及switch语句。
for语句for (/*初始化 int i=0*/; /*判断条件 i<count*/; /*执行语句 i++*/) {/* code */}while语句while (/* condition */){/* code */}do{/* code */} while (/* condition */);switch/case语句switch (/*表达式*/){case/*值1*/ : /* code */; break;case/*值2*/ : /* code */; break;...default : /* code */break;}If/if-else语句if (/* condition */){/* code */}else if (/* condition */){/* code */}else{/* code */}5.什么是单片机?什么是单片机最小系统?单片机最小系统三要素是什么?单片机(Microcontrollers,亦称MCU),即单芯片微型计算机,包括了CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。
微机实验 可编程并行接口8255
微机原理实验报告实验题目:可编程并行接口8255一、实验目的1、掌握8255的基本输入输出和PC端口位控的工作方式及应用编程。
2、掌握8255的典型应用电路接法。
二、实验知识回顾8255控制字1、控制方式2、C端口置位复位控制字三、实验内容1、 8255流水灯显示,首先用逻辑电平开关预置一个数字,从A口读入,写入01H到C端口上,左移一次在进行输出,A口读入数据作为左移次数,这样循环下去,从而实现流水灯的显示。
2、用PC端口位控制法控制LED灯,依次点亮LED灯。
四、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干五、实现过程1、8255流水灯显示(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,90h ;方式0A口输入C口输出out dx,al ;mov dx,io8255a ;A口的地址存入dxin al,dx ;从dx也就是A口读入数据mov la,al ;读入的数据暂存在la变量mov dx,io8255c ;C口的地址存入dxmov al,01h ;将寄存器最低位置零out dx,al ;置位后的值输入给dx,也就是C口mov lb,al ;置位后的值暂存于变量lbloop1:call delaymov al,la ;将A口数据写入CX用以计数mov ch,00hmov cl,laloop2:call delaymov al,lbrol al,1 ;在寄存器内进行位移操作mov lb,al ;将操作后的结果重新写入变量al,为后面调用做准备mov dx,io8255c ;dx代表C口的地址out dx,al ;将al中存储的值写入dx,即C口mov ah,1 ;选择dos的模式为从键盘读取数据int 16h ;进入中断jnz quit ;ZF为0则跳到quitdec cx ;计数器减一jnz loop2 ;若cx!=0,跳到loop2quit:mov ax,4c00h ;结束程序并退出int 21hdelay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start2、位控设置C口输出点亮LED(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,00001111b ;位控设置C口最高位为1out dx,almov cx,7 ;剩余未点亮灯数为7 loop1:call delaydec aldec alout dx,aldec cxjnz loop1delay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start(3)实验结果图六、小结通过本次试验,我进一步了解了8255的可编程性,以及如何正确的通过程序控制8255,也更加熟悉了8255 C 端口的位控输出。
微机原理可编程并行接口8255方式0
实验一可编程并行接口8255方式0一、实验目的掌握8255方式0的工作原理及使用方法。
二、实验内容1.实验电路如图20,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2. 编程从8255C口输入数据,再从A口输出.三、编程提示1、8255控制寄存器端口地址 28BHA口的地址 288HC口的地址 28AH2、参考流程图(见图21):四、实验代码ioport equ 0d400h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhio8255c equ ioport+28ahcode segmentassume cs:codestart: mov dx,io8255b ;设8255为C口输入,A口输出mov al,8bhout dx,alinout: mov dx,io8255c ;从C口输入一数据in al,dxmov dx,io8255a ;从A口输出刚才自C口out dx,al ;所输入的数据mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOSint 21hcode endsend start五、实验现象按照原理图连接好导线后,输入实验代码,编译调试运行,每当有按键按下,LED显示电路L0~L7相应的灯就会被点亮。
实验二七段数码管显示一、实验目的掌握数码管显示数字的原理二、实验内容动态显示(选作):使用图23的电路,编程在两个数码管上循环显示“00-99”。
三、编程提示实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中四、实验代码:data segmentioport equ 0d400h-0280hio8255a equ ioport+28ahio8255b equ ioport+28bhio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 0,0 ;存放要显示的十位和个位bz dw ? ;位码data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80hout dx,almov di,offset buffer1 ;设di为显示缓冲区loop1: mov cx,0300h ;循环次数loop2: mov bh,02lll: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov bh,0mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,alpush cxpush dxmov dx,8lp1: mov cx,0ffffh ;如果显示过快,可更改cx值为最大0ffffh delay: loop delay ;延时dec dxjnz lp1pop dxpop cxmov bh,byte ptr bzshr bh,1jnz lllloop loop2 ;循环延时mov ax,word ptr [di]cmp ah,09jnz setcmp al,09jnz setmov ax,0000mov [di],almov [di+1],ahjmp loop1set: mov ah,01int 16hjne exit ;有键按下则转exitmov ax,word ptr [di]inc alaaamov [di],al ;al为十位mov [di+1],ah ;ah中为个位jmp loop1exit: mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回DOSint 21hcode endsend start五、实验现象两个数码管从00—99循环显示,在代码中加入延时代码,00—99的显示速度将会发生变化。
微机接口技术实验报告并行接口实验
微机接口技术实验报告并行接口实验系别: 计算机科学与技术完成时间: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. 引言微机原理实验是计算机科学与技术专业的一门重要实验课程之一。
通过该实验,学生可以了解并学习微机系统的基本原理和结构,培养对计算机硬件的基本操作和维护能力。
本报告将详细介绍我们在并口实验中所进行的实验步骤、实验结果和实验心得。
2. 实验目的本次实验的目的是通过并口实验,了解并实践如何使用并行口控制外部设备。
并口是计算机上常见的接口之一,用于与外部设备进行数据交互,例如打印机、键盘、LED灯等。
通过本次实验,我们将学会如何通过编程的方式控制并口输出信号,进而控制外部设备的工作。
3. 实验步骤(1)准备工作:首先,我们需要准备一台支持并口的计算机,并确保系统已经安装了合适的驱动程序。
然后,我们需要连接一根并口数据线,将计算机与外部设备连接起来。
(2)编程环境搭建:我们要使用的编程语言是C语言,所以需要在计算机上配置相应的编译器和开发环境。
(3)编写代码:接下来,我们需要编写一段简单的代码,来控制并口输出信号。
这段代码通常包括对并口寄存器的读写操作。
我们可以使用IO口的寄存器来设置输出状态和控制外部设备的工作。
(4)测试与调试:在编写完代码后,我们需要进行测试和调试。
通过观察外部设备的反应,可以判断代码是否正确地控制了并口输出信号。
如果出现问题,我们可以通过查看代码和调试信息来找出问题的原因。
4. 实验结果我们按照上述步骤完成了实验,并取得了如下实验结果:(1)成功控制外部设备:通过编写控制代码,我们成功地控制了与计算机连接的外部设备。
例如,我们可以在LED灯上显示相应的图案和文字。
(2)了解并口寄存器操作:通过本次实验,我们对并口寄存器的操作有了更深入的了解。
我们学会了如何设置输出状态和控制外部设备的工作模式。
(3)掌握数据传输方法:在实验过程中,我们还掌握了一些基本的数据传输方法。
例如,我们可以通过并口将数据传输给外部设备或从外部设备接收数据。
5. 实验心得通过本次并口实验,我们对微机系统的基本原理和结构有了更深入的了解。
微机原理实验---并行接口实验
微机原理实验---并行接口实验
并行接口(Parallel Port)是一种广泛使用的计算机外围设备接口。
它通常用于连接打印机、扫描仪、摄像头等设备,以实现数据的传输和控制。
本实验旨在教授学生使用并行接口实现数据输入和输出的基本功能,以提高学生对计算机外围设备的理解和应用能力。
具体实验步骤如下:
材料及设备:
1. 一台计算机
2. 并行数据线(Parallel Data Cable)
3. 并口测试器(Parallel Port Tester)
4. 8位开关(8-bit Switch)
5. LED 灯(LED Light)
实验步骤:
1. 将并行数据线连接至计算机的并行接口,并将另一端连接至并口测试器。
2. 使用并口测试器测试并行接口是否正常。
若测试失败,可检查并行接口是否损坏或驱动程序是否正确安装。
3. 将 8 位开关连接至并口测试器的数据输出端,连接正确后,将 8 位开关的位置设置为 0。
4. 运行实验程序,将数据从计算机输出至并口测试器。
5. 将 LED 灯连接至并口测试器的数据输入端,将计算机输入的数据传输至 LED 灯并输出。
微机原理实验 可编程并行接口 8255 实验
2、8255A的工作方式:
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式
3、8255A的状态字:
图1可编程并行接口8255电路
五、实验电路及连线
1、流水灯实验:
(1)实验连线
该模块的WR、RD分别连到MCU主模块的WR、RD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
8255模块选通线CS连到MCU主模块的地址A15。
8255的PA0~PA7连到发光二极管的L0~L7。
(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口下半部
(2) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示
四、实验原理
1、8255A的内部结构:
(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
微机原理实验报告并口实验
微机原理实验报告——并口实验一、实验目的本实验旨在通过并口实验,了解和掌握微机原理中并口的基本原理、工作方式以及编程操作方法,通过实际操作并口实验,巩固并深化对微机原理的理解。
二、实验原理并口是微机原理中的一种常见的输入输出接口,并具有较高的灵活性和通信能力。
并口的基本结构包括数据寄存器和状态寄存器,通过使能信号对并口进行控制。
在并口实验中,通过编写相应的程序,实现将数据并行输入并通过并口输出的功能。
实验中主要使用的是8255芯片实现并口的控制。
三、实验器材1. IBM PC机或兼容机2. 8255芯片3. 连接线缆四、实验步骤1. 将8255芯片连接到计算机的并口接口,确保连接正确稳固。
2. 打开计算机并进入操作系统。
3. 编写并口控制程序。
在程序中,首先需要设置8255芯片为输出模式,然后通过与8255芯片对应的数据寄存器将需要输出的数据写入,并通过使能信号控制数据传输。
4. 运行编写好的程序,观察程序运行的结果。
五、实验结果与分析通过实验发现,在编写并口控制程序的过程中,需要正确设置8255芯片的工作模式和相应的寄存器,否则无法实现正确的数据传输。
其中,使能信号的控制也是关键的一步,通过正确的控制使能信号,才能实现数据的传输与输出。
六、实验总结通过本次并口实验,我们深入学习和掌握了微机原理中并口的基本原理和工作方式。
实验中我们了解到,在编写并口控制程序时需要对8255芯片的寄存器进行正确的设置,以确保数据传输和输出的正确性。
并口具有很高的灵活性和通信能力,能够广泛应用于各种数据输入输出的需求中。
然而,本次实验仅是对并口实验的基础性操作,实际应用中还需要根据具体需求进行更复杂的编程和控制。
为了更好地应用并口,建议在掌握基本操作的基础上,进一步学习并口的高级应用和相关技术。
最后,本次实验不仅提高了我们对微机原理的理解,也加深了我们对硬件与软件配合的理解。
通过实际动手实验,我们更加深入地理解了微机原理并口实验的基本原理与操作方法。
华中科技大学HUST微机原理并行IO接口数码管实验报告
电子信息与通信学院实验报告实验名称:微机原理实验课程名称:并行IO接口设计班级:姓名:学号:教师:一、实验目的1.掌握GPIO IP核的工作原理和使用方法2.掌握中断控制方式的IO接口设计原理3.掌握中断程序设计方法4.掌握IO接口程序控制方法-------查询方式-------延时方式二、实验任务写一个数码管滚动输出任意数字的程序,并下载到FPGA板子上,用延时、中断两种方式实现。
三、实验原理硬件实现框图如图所示:四、硬件实现步骤1.使用XPS创建一个基于AXI总线的最小计算机系统。
File –> New BSB Project,如图:2.修改时钟设置:将时钟产生器的时钟输入信号进行修改,修改为单一时钟源。
修改后的结果如图:3.添加GPIO IP核,设置seg_0配置:a.在IP Catalog标签中,双击下面图标创建GPIO IP核:b.添加GPIO IP核后,将名字改为LED_16Bits,如图:c.更改seg_0配置窗口的属性,如图:4.添加AXI Interrupt Controller IP核:a.在IP Catalog标签中,双击下面图标创建INTC IP核:b.添加axi_intc_0的中断源,如图:c.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:5.产生外部GPIO连接:a.选中seg_0中的GPIO_IO_O,选择make external,生成外部连接端口;选中GPIO_IO,设置为“No connection”,取消其外部连接端口;选中seg_0中的GPIO2_IO_O,选择make external,生成外部连接端口;选中GPIO2_IO,设置为“No connection”,取消其外部连接端口。
结果如图:b.在ports标签下,展开External Ports项,可看到seg_0生成的seg_0_GPIO2_IO_pin和seg_0_GPIO_IO_pin端口,如图:6.添加timer IP核:a.选择如图的IP核并双击,添加到工程:b.中断信号的连接结果如图所示:7.配置UCF文件:在UCF文件中修改如下所示配置,配置LED连接电路约束:NET "CLK" TNM_NET = sys_clk_pin;TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;NET "CLK" LOC = "E3" | IOSTANDARD = "LVCMOS33";NET "RESET" LOC = "E16" | IOSTANDARD = "LVCMOS33";NET "RsRx" LOC = "C4" | IOSTANDARD = "LVCMOS33";NET "RsTx" LOC = "D4" | IOSTANDARD = "LVCMOS33";NET "seg_0_GPIO2_IO_pin<0>" LOC = "L3" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<1>" LOC = "N1" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<2>" LOC = "L5" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<3>" LOC = "L4" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<4>" LOC = "K3" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<5>" LOC = "M2" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<6>" LOC = "L6" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO2_IO_pin<7>" LOC = "M4" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<0>" LOC = "N6" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<1>" LOC = "M6" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<2>" LOC = "M3" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<3>" LOC = "N5" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<4>" LOC = "N2" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<5>" LOC = "N4" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<6>" LOC = "L1" | IOSTANDARD = "LVCMOS33"; NET "seg_0_GPIO_IO_pin<7>" LOC = "M1" | IOSTANDARD = "LVCMOS33";8.创建工程过程完成后,a.在主界面下选择Hardware->Generate Netlist;b.在主界面下选择Hardware->Generate Bitstream;c.单击Graphical Design View,可以看到系统的连接图,如下:五、软件设计1.中断方式实现数码管滚动任意数字用户应用程序的设计包括定时器配置、启动中断系统、设计中断服务程序。
8255并行IO口 实验报告
大理大学
实验报告
课程名称:微机原理与接口技术
学院:工程学院
专业:
年级:班级:
姓名:羽卒兰cl 学号:
指导教师:
2016 年 6 月2 日
大理大学教务处制
图 3-2
源代码:
L8255_CMD EQU 2A3H ;8255A的控制器的地址
L8255_PA EQU 2A0H ;8255A的A端口的地址
L8255_PB EQU 2A1H ;8255A的B端口的地址
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:CODE
START:MOV DX,L8255_CMD ;8255A初始化
MOV AL,90H ;8255A方式0,A端口输入,B端口输出,根据条件在8255A的控制字找出对
3.8255A的基本性能:
可编程通用并行输入/输出接口电路
通用性强,使用灵活,通过它CPU可直接与外设相连
具有三个相互独立的输入/输出端口
A端口、B端口、C端口
三个端口可联合使用,构成具有握手联络信号的并行接口
端口有多种工作方式可供选择
A口有三种工作方式:方式0、1、2
B口有二种工作方式:方式0、方式1
C口有一种工作方式:方式0
A口和B口工作方式是由写入控制寄存器的工作方式控制字决定的;
A口和B口的工作方式的设置是相互独立的。
微机原理 简单Io接口设计实验
四、实验步骤
1、取箱子,把电源线和USB通信线接好
START:
MOVAL,0FH
BEGIN:ROLAL,01H
MOVDX,208H
OUTDX,AL
MOVCX,5000
AA:LOOPAA
LOOPBEGIN
JMPBEGIN
CODEENDS
七、实验收获
运行的原理,将课堂上的只是在实际中运用到实验连接中,了解各部分的功能,是最好本实验的基础。
此实验是最基础的微机实验,运用最基础的知识,强调对课本知识的熟悉与掌握。要熟悉仪器的连接方法,通过此次实验,了解了实验,对课本的只是加强了理解,很有收获!
(3)按试验箱的RST键。
断开试验箱的电源,根据实验要求接线,然后编写程序,编译,连接,全速运行。
五、实验接线图
六、程序清单
实验代码
1.利用芯片74LS244作为输入接口,输入8位逻辑电平开关的状态。用芯片74LS273作为输出接口,用以驱动8个LED。
2.
CODE SEGMENT
ASSUME CS:CODE
微机原理简单io接口设计实验微机原理与接口技术微机原理及接口技术微机原理与接口微机原理及应用微机原理pdfio接口微机原理微机原理及应用pdf微机原理与应用微机原理视频教程
计算机学院实验报告
课程名称_微机原理与接口技术__实验名称_简单I/O设计____
班级_ ________姓名___________学号___________仪器组号_______实验日期______
微机原理实验报告 可编程并行IO接口8255
《微机原理及应用技术》课程实验报告实验五可编程并行I/O接口8255【预习内容】1.怎样选中可编程I/O接口?怎样实现I/O端口的寻址?8255的CS/接地址译码/CS0,则命令字地址为8003H,PA口地址为8000H,PB口地址为8001H,PC口地址为8002H。
通过地址/数据总线,按照指定地址进行读写操作直接选中8255。
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片。
CPU与外设交换的数据是以字节为单位进行的。
因此一个外设的数据端口含有8位。
而状态口和命令口可以只包含一位或几位信息,所以不同外设的状态口允许共用一个端口,命令口也可共用。
数据信息、状态信息和控制信息的含义各不相同,按理这些信息应分别传送。
但在微型计算机系统中,CPU通过接口和外设交换数据时,只有输入(IN)和输出(OUT)两种指令,所以只能把状态信息和命令信息也都当作数据信息来传送,且将状态信息作为输入数据,控制信息作为输出数据,于是三种信息都可以通过数据总线传送了。
但要注意,这三种信息被送入三种不同端口的寄存器,因而能实施不同的功能。
CPU对外设的访问实质上是对I/O接口电路中相应的端口进行访问,也需要由译码电路来形成I/O端口地址。
I/O端口的编址方式有两种·存储器映象寻址方式·I/O指令寻址方式2.8255A接口芯片内含几个I/O端口?它们的名称分别是?这些I/O口地址有何特点?三个数据端口,三种工作方式A口可工作于方式0、方式1和方式2中的任一种B口可工作于方式0和方式1,但不能工作于方式2C口只能工作于方式08位数据端口:A口、B口、C口A口:PA7~PA0B口:PB7~PB0C口:PC7~PC0连接外部设备A口与B口为一个8位的输入口或输出口C口单独作为一个8位的输入口或输出口配合A口和B口使用,作为控制信号和状态信号3.8255A有几个控制字?怎样设置?它有两个控制字,一个是方式选择控制字,一个是对C口进行置位或复位控制字。
微机接口技术 微机原理实验二 IO口扩展实验
宁德师范学院计算机系
实验报告
(2013 —2014 学年第2学期)
课程名称微机原理与接口技术
实验名称实验二I/O口扩展实验专业计算机科学与技术(非师)年级12级
学号B2012102147 姓名王秋指导教师潘日萍
实验日期2015.4.15
org 100h
start: mov dx,04a0h ;74LS244地址
in al,dx ;读输入开关量
mov dx,04b0h ;74LS273地址
out dx,al ;输出至LED
jmp start
code ends
end start
实验结果截图:
图1:程序代码运行截图
图2 :微机连线后运行程序图
图3 :运行后改变开关灯亮灭情况1
图4:运行后改变开关灯亮灭情况2
注:1、报告内的项目或设置,可根据实际情况加以补充和调整
2、教师批改学生实验报告应在学生提交实验报告10日内。
实验2 并行IO口的使用
语句组1;
}
else if( 表达式 2)
{
语句组2;
}
...
else if( 表达式 n)
{
语句组n;
}
else
{
语句组n+1;
}
switch语句的一般形式为:
switch(表达式)
{
case常量表达式1: 语句序列1;break;
case常量表达式2: 语句序列2;break;
...
case常量表达式n: 语句序列n;break;
一、实验目的
1.进一步熟悉Keil C、proteus软件的使用方法。
2.掌握分支结构语句、运算符和数组的运用。
3.掌握LED数码管的结构和静态显示工作原理。
二、实验内容
1.程序一:按键K0~K3,用分支语句实现P0口的多值输出。
2.程序二:用循环语句实现P0口的多值输出。
3.程序三:用数组方式控制跑马灯。
程序二:运用三种基本的循环语句: for语句、while语句和do-while语句,实现D1~D8循环点亮。
程序三:用数组方式控制跑马灯。将跑马灯的全部状态用数组表达,然后用循环语句依次读取数组各元素,送P0口显示。
程序四:在P1口连接的LED数码管上循环显示“0”,“1”,“2”,“3”,“4”。思路同程序一,只不过数组元素是由共阴极数码管所对应的字形码所组成。
2)P0口与数码管之间的电阻起什么作用?
3)RST端的电路起什么作用?
4)EA接电源是什么意思?
5)XTAL1、XTAL2接的电路起什么作用?
六、体会
}
do-while语句的一般形式:
do
{
语句组; //循环体
微机实验报告 8255并行IO口实验
微机实验报告 8255并行IO口实验一、实验目的1.掌握8255芯片的基本结构和功能;2.了解键盘、LED灯的工作原理;3.能够进行8255芯片的编程和应用。
二、实验原理8255是由Intel公司设计的一种具有高度集成度的、通用的、并行的I/O设备。
它可以作为与CPU对外的接口芯片,实现与CPU的数据传输和控制。
在8255中,数据端口和控制端口都是I/O端口,通过这些端口来对外部装置进行输入和输出。
8255一共包含三个可编程I/O口,即端口A、端口B和端口C,每个IO口都有自己的方向、输入输出控制和数据寄存器,同时拥有中断控制、双向数据传输以及串行数据传输等多种操作模式。
其中,端口A和端口B是8位的,可以单独使用或组合成16位的端口C进行数据传输。
端口A和端口B的功能可通过I/O控制字中的一些位来编程实现,可分为输出、输入和双向传输三种模式。
端口C是一个5位I/O口,其中4位可以编程为输入或输出,第5位为只读输入输出类型,称为模式控制寄存器(control mode register,CMR)。
模式控制寄存器有4个不同的配置方式,它们在数据传输时可以实现BCD码的转换、万分之一秒的时钟计数、键盘扫描以及LED灯控制等功能。
本次8255并行IO口实验主要是通过端口A、端口B和端口C来控制LED灯和键盘扫描,实现输入输出的控制。
三、实验内容1.针对8255的IO口进行连接:将P0、P1、P2、P3、wr、rd等引脚重新定义为要控制的LED灯、键盘的控制信号引脚,将8255的各接口接在实验板上。
2.编写相应程序,控制8255芯片的各个闪烁。
四、实验步骤2.在电脑上打开keil 软件,编写控制程序,将程序下载到单片机中。
3.通过控制程序,控制LED灯以及键盘扫描进行输出输入的操作。
五、实验结果实现输出LED灯的闪烁、键盘扫描通过这次实验,我对8255并行IO口的基本结构和功能有了更深入的了解。
8255芯片是一种高度集成度的、通用的、并行的I/O设备,通过这个芯片的接口,我们可以方便地实现单片机与外界键盘等设备的数据输入输出控制。
微机原理实验---并行接口实验
深圳大学实验报告课程名称:微机计算机设计实验项目名称:8255 并行接口实验学院:信息工程学院专业:电子信息工程指导教师:报告人:学号:2009100000班级:<1>班实验时间:2011. 06. 09实验报告提交时间:2011. 06. 25教务处制一、实验目的1. 学习并掌握8255的工作方式及其应用。
2. 掌握8255 典型应用电路的接法。
3. 掌握程序固化及脱机运行程序的方法。
二、实验要求1. 基本输入输出实验。
编写程序,使8255 的A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。
编写程序,使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
三、实验设备PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。
四、实验原理并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。
CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。
8255 可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构框图和引脚图五、实验过程1. 基本输入输出实验要求:实验使8255 端口A 工作在方式0 并作为输入口,端口B 工作在方式0 并作为输出口。
用一组开关信号接入端口A,端口B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。
(1)按要求连接好实验电路。
(2)编写实验程序,经编译、无误后装入系统。
代码如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, 0646HMOV AL, 90HOUT DX, ALAA1: MOV DX, 0640HIN AL, DXCALL DELAYMOV DX, 0642HOUT DX, ALJMP AA1DELAY: PUSH CXMOV CX, 0F00HAA2: PUSH AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START(3)运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验三并行I/O接口实验姓名:学号:班级:一、实验目的1. 掌握GPIOIP核的工作原理和使用方法2.掌握中断控制方式的IO接口设计原理3.掌握中断程序设计方法4.掌握IO接口程序控制方法:中断方式、查询方式、延时方式二、实验任务按键输入,并显示到console用中断、查询两种方式实现按键输入,将结果显示到console窗口。
三、硬件电路四、硬件实现步骤1. 创建一个最小系统,启动XPS,并打开xmp工程文件。
2.添加和配置GPIO IP核。
3. 添加和配置AXI Interrupt Controller IP核。
4. 产生外部GPIO连接。
引脚约束五、中断方式、查询方式1. 中断方式设计思路主程序开放microBlaze INTC,GPIO中断,不停地检测输出标志是否为1,是则输出数据到console,并将输出标志设置为0。
中断服务程序读取数据(或输出数据)并设立输出标志位为1。
通过中断方式读入开关的状态,由于按键仅短暂的时间维持高电平,并且还具有抖动,因此需在中断服务程序内读入按键状态,并且为消除按键回弹产生的中断,需在中断服务程序内部暂时关闭中断,并且延时一段时间再打开中断。
2. 查询方式设计思路主程序不停地读取GPIO和ISR寄存器,当对应位为1时,读取GPIO的数据寄存器并输出到console(xil_printf函数实现,头文件为”stdio.h”),并写ISR相应位。
数据寄存器的读取通过函数Xil_In实现,而ISR相应状态为的写通过函数Xil_Out实现。
六、软件实现流程1. 中断方式主程序实现对各个设备进行初始化,并且开放相应的中断,注册中断服务程序以及开关状态显示等。
然后通过读取中断标志进入相应中断服务程序处理中断,并在console打印相关信息。
2. 查询方式程序实现通过不断地读取GPIO和ISR寄存器,当状态发生变化时读取数据寄存器并输出到console,并写ISR相应位。
七、软件源代码1. 中断方式源代码#include"xparameters.h"#include"xgpio.h"#include"xintc.h"#include"stdio.h"void Initialize();void Delay_50ms();void PushBtnHandler(void *CallBackRef);void SwitchHandler(void *CallBackRef);XGpio Btns,Dips;//按键BTNS外设变量XIntc intCtrl;//定义一个XINTC外设变量int pshBtn,pshDip;int state1,state2;int main(){Initialize();xil_printf("\r\nRunning GpioInputInterrupt!\r\n");while(1){if(pshBtn){xil_printf("Button Interrupt Trigger!!!the state is0x%X\n\r",state1);pshBtn=0;}if(pshDip){xil_printf("Switch Interrupt Trigger!!!the state is0x%X\n\r",state2);pshDip=0;}}return 0 ;}void Initialize(){XGpio_Initialize(&Dips,XPAR_DIP_DEVICE_ID);XGpio_SetDataDirection(&Dips,1,0xff);XGpio_Initialize(&Btns,XPAR_BUTTON_DEVICE_ID); //初始化按键实例,设定其为输入方式XGpio_SetDataDirection(&Btns,1,0xff);XIntc_Initialize(&intCtrl,XPAR_AXI_INTC_0_DEVICE_ID); //intCtr1实例XGpio_InterruptEnable(&Btns,1);XGpio_InterruptGlobalEnable(&Btns);//GPIO中断使能XGpio_InterruptEnable(&Dips,1);XGpio_InterruptGlobalEnable(&Dips);XIntc_Enable(&intCtrl,XPAR_AXI_INTC_0_BUTTON_IP2INTC_IRPT_INTR); XIntc_Enable(&intCtrl,XPAR_AXI_INTC_0_DIP_IP2INTC_IRPT_INTR);//中断控制器的中断源使能XIntc_Connect(&intCtrl,XPAR_AXI_INTC_0_BUTTON_IP2INTC_IRPT_INTR, (XInterruptHandler)PushBtnHandler,(void*)0);XIntc_Connect(&intCtrl,XPAR_AXI_INTC_0_DIP_IP2INTC_IRPT_INTR, (XInterruptHandler)SwitchHandler,(void*)0); //注册中断服务函数microblaze_enable_interrupts(); //允许处理器处理中断microblaze_register_handler((XInterruptHandler)XIntc_InterruptHandler,(void*)&intCtrl);XIntc_Start(&intCtrl,XIN_REAL_MODE);//启动中断控制器}void Delay_50ms(){int i;for(i=0;i<5000000;i++);}void PushBtnHandler(void *CallBackRef){state1=XGpio_DiscreteRead(&Btns,1);//按键状态值读取pshBtn=1;XGpio_InterruptDisable(&Btns,1); // 暂时禁止button中断Delay_50ms();XGpio_InterruptClear(&Btns,1); //清除中断标志位XGpio_InterruptEnable(&Btns,1);//再次开放按键中断}void SwitchHandler(void *CallBackRef){state2=XGpio_DiscreteRead(&Dips,1);pshDip=1;XGpio_InterruptClear(&Dips,1);}2.查询方式源代码/** chaxun.c** Created on: 2015-12-1* Author: Administrator*/#include"xparameters.h"#include"stdio.h"#include"xil_io.h"#include"xil_types.h"#define btn_data 0x40000000//数据寄存器地址#define btn_ctr 0x40000004//控制寄存器地址#define btn_status 0x40000120//中断状态寄存器void Delay_50ms();short pshBtn;int main(void){short btn;xil_printf("\r\nRunning GpioInput Test!\n\r");Xil_Out8(btn_ctr,0xff);pshBtn=0x00;while(1){pshBtn=Xil_In8(btn_status);if(pshBtn){btn=Xil_In8(btn_data);Xil_Out8(btn_status,0x01);xil_printf("Button Pushed!!!the state is 0x%X\n\r",btn);Delay_50ms();pshBtn=0x00;}}return 0;}void Delay_50ms(){int i;for(i=0;i<5000000;i++);}八、实验小结本次实验要求用中断和查询的方式实现IO接口程序控制。
先是创建一个最小系统,然后添加和配置GPIO IP核,再添加和配置AXIInterrupt Controller IP核,然后用自己编写的程序实现按键的显示。
我在这个过程中熟悉了最小系统的建立,还有IP核的配置,但我本身编程能力比较弱,所以我在咨询了同学关于中断和查询代码的实现的问题后,终于能成功地实现按键输入的显示了。
虽然付出很多,但收获也是巨大。