实验7串行接口输入输出实验
单片机实验指导书

目录实验一系统认识实验 (2)实验二端口I/O输入输出实验 (14)实验三外部中断实验 (17)实验四定时器实验 (21)实验五串行口通信实验 (25)实验六串行通信的调试实验 (29)实验七数码管静态显示实验 (34)实验八数码管动态显示实验 (39)实验一系统认识实验一、实验目的1.学习Keil C51编译环境的使用;2.学习STC单片机的下载软件STC-ISP的使用;3.掌握51单片机输出端口的使用方法。
二、实验内容任选单片机的一组I/O端口,连接LED发光二极管,编写程序实现8个LED按二进制加1点亮。
三、接线方案单片机P10~P17/C51单片机接L0~L7/LED显示,如下图:图1-1实验线路四、实验原理51单片机有4个8位的并行I/O端口:P0、P1、P2、P3,在不扩展存储器、I/O端口,在不使用定时器、中断、串行口时,4个并行端口,32根口线均可用作输入或输出。
作为输出时,除P0口要加上拉电阻外,其余端口与一般的并行输出接口用法相同,但作为输入端口时,必须先向该端口写“1”。
例如P0接有一个输入设备,从P0口输入数据至累加器A中,程序为:MOV P0, #0FFHMOV A, P0若将P0.0位的数据传送至C中,程序为:SETB P0.0MOV C, P0.0五、实验步骤1、连接串行通信电缆和电源线;2、根据图1-1实验线路进行电路连接;3、将C51单片机核心板上的三个开关分别拨到“独立”、“运行”“单片机”;4、打开实验箱上的电源开关。
5、利用Keil C51创建实验程序,并进行编译生成后缀为.HEX的文件;6、利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM中;7、观察实验现象,并记录。
若实验现象有误请重复第5、6步。
六、参考程序ORG 0000H ;程序的开始LJMP MAIN ;转入主程序ORG 0200H ;主程序的开始MAIN: MOV P1,#00H ;P1口做准备M1: INC P1 ;P1口连接输出计数,LCALL DELAY ;转入延时子程序LJMP M1 ;循环DELAY: MOV R5,#255 ;延时子程序D1: MOV R6,#255DJNZ R6,$DJNZ R5,D1RETEND ;程序体结束七、思考题1、利用其他I/O口实现LED加1点亮功能;2、利用P1端口实现流水灯(左移或右移)功能;3、实现LED其他点亮功能。
串行接口实验报告

课程实验报告实验名称:串行接口专业班级:学号:姓名:同组人员:指导教师:报告日期:实验二1. 实验目的 (3)2. 实验内容 (3)3. 实验原理 (3)4. 程序代码 (6)5. 实验体会 (13)实验二1.实验目的1.熟悉串行接口芯片8251的工作原理2.掌握串行通讯接收/发送程序的设计方法2.实验内容通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。
具体过程如下:1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。
2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。
3.实验原理1.8251控制字说明在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。
控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。
另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。
2.8251方式指令(端口地址2B9H)3.8251工作指令(端口地址2B9H)4.8251状态字(端口地址2B9H)5.8253控制字(283H)6.8253计数初值(283H)计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz波特率=1200波特率因=16计数初值= 1000000/1200*16=527.程序流程框图4.程序代码Fxc.asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址mes1 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 ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz nextmov dl,0ffh ;有键盘输入,读入字符mov ah,06hint 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend startSend .asm;************************;;*8251串行通讯(自发自收)*;;************************;data segmentio8253a equ 280h ;8253计数0端口地址io8253b equ 283h ;8253控制端口地址io8251a equ 2b8h ;8251数据端口地址io8251b equ 2b9h ;8251控制端口地址buf3 byte 0mes1 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 ;设置8253计数器0工作方式mov al,16h ;控制字为00010110Bout dx,almov dx,io8253amov al,52 ;给8253计数器0送初值out dx,almov dx,io8251b ;初始化8251mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;xor al,al;mov cx,03 ;向8251控制端口送3个0;delay: call out1;loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz nextmov ah,0bhint 21htest al,0ffh ;检测是否有键盘输入jz next; mov dl,0ffh ;有键盘输入,读入字符;mov ah,06h; int 21hmov dx,28ahin al,dxcmp al,27 ;若为ESC,结束jz exitmov dx,io8251a;inc alout dx,al ;发送; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz waiti ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,al;push cx;mov cx,40h;gg: loop gg ;延时; pop cxretout1 endpcode endsend start步进电机:1.K0=0,逆时针转;K0=1,顺时针转2.K1=0,慢转;K1=1,快转data segmentbuf1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;LED显示buf2 byte 0 ;步进电机数据buf3 byte 0 ;保存开关数据buf4 byte 0 ;保存顺转数据buf5 byte 9 ;保存反转数据buf6 byte 0 ;开关机data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov buf2,00110011b ;步进电机数据mov dx,28bh ;8255控制口初始化mov al,81h ;1000,0001out dx,al;-----------------------------逆转控制----------------R0: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jnz kai ;转反转test al,01 ;测试K0=1?jnz L0 ;转反转mov al,buf4 ;走马灯开始一步顺转cmp al,9jnz S1call change9_0S1: inc al ;数据加1mov buf4,almov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;数据完成加1mov al,buf2 ;电机开始一步逆转ror al,1 ;数据左移mov buf2,almov dx,288h ;A口输出out dx,al ;电机完成一步逆转mov al,buf3 ;回复C口数据test al,02jnz R1 ;转快转call delay_s ;否则慢转jmp R0R1: call delay_q ;快转jmp R0;------------------------------顺转控制-----------------L0: mov al,buf5 ;走马灯开始一步顺转cmp al,0jnz S2T2: test al,03 ;测试K2=1?jnz T2call change0_9S2: dec al ;数据减1mov buf5,al ;mov bx,offset buf1xlatmov dx,289h ;B口输出out dx,al ;走马灯结束一步顺转mov al,buf2 ;电机开始一步顺转rol al,1 ;数据右移mov buf2,almov dx,288h ;A口输出out dx,al ;电机结束一步顺转mov al,buf3 ;回复C口数据test al,02jnz L1 ;转快转call delay_s ;否则慢转jmp R0T3: test al,03 ;测试K2=1?jnz T3L1: call delay_q ;快转jmp R0kai: mov dx,28ah ;读C口in al,dxmov buf3,al ;保存C口数据test al,04 ;jz L0 ;转反转jmp kaiexit: mov ah,4chint 21hdelay_s proc near ;长延时mov bx,20hlp1: mov cx,0ffffhlp2: loop lp2dec bxjnz lp1retdelay_s endpdelay_q proc near ;短延时mov bx,1lp11: mov cx,0ffffhlp22: loop lp22dec bxjnz lp11retdelay_q endpchange9_0 proc nearmov buf4,-1mov al,buf4retchange9_0 endpchange0_9 proc nearmov buf5,10mov al,buf5retchange0_9 endpcode endsend start5.实验体会这次实验需要用到两种芯片8253和8251,两种芯片的作用分别是8253提供串行通讯所需的特定频率的脉冲信号,8251提供输入输出控制,所以在实验的过程中需要熟悉这两种芯片的方式字等使用规范,在仔细阅读了书本以及书本的编程实例后,基本摘掉了程序的设计方法实验过程中,出现了程序编译通过了但是不能运行的情况,后来经过检查发现是程序没有设置好的原因,要设置为编译后运行状态,否知只编译不运行,经过这次实验,知道了8253和8251两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。
07实验七 Linux环境下的串行通信实验

连接驱动器的使能端,使得当RTS设置成高(逻辑1)时,有效RS485驱动器;设置RTS为低 时,使驱动器处于三态,这时候实际上从总线上断开了驱动器,从而允许其他节点可以使 用同一传输线。当使用RTS时,必须确保发送数据前将RTS设置成高,在发送完数据的最 后一位后,将RTS线设成低。。另一种可选方法是自动发送数据控制。这种方法要求特殊 的电路,当数据传输时自动使能或无效驱动器。它减少了软件开销和程序员的潜在错误。
五、基础知识
串行通信 1、基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行 端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提 出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 2、串口通信的基本任务 (1) 实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实 现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的 帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2) 进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是 并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送 入计算机处理。因此串并转换是串行接口电路的重要任务。 (3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选 择和控制的能力。 (4) 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他 校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用
串口通信实验报告

串⼝通信实验报告基于Labwindows/CVI的串⾏通信接⼝实验报告⼀、实验⽬的通过软件Labwindows/CVI编写仪器⾯板,通过该⾯板实现计算机与外围设备的串⼝通信。
设置好通信端⼝,波特率等参数后,在Text Box控件中输⼊数据字符,当点击发送按钮时,单⽚机开发箱中的指⽰灯发⽣相应的变化。
仪器⾯板如下图所⽰。
⼆、实验器材PC机⼀台,单⽚机开发箱,220V交流电源,Labwindows/CVI软件,导线若⼲等。
三、实验原理由于LabWindows/CVI提供了⼤量与外部代码或软件进⾏连接的机制,所以实现串⼝通信,可以使⽤其本⾝提供的RS⼀232函数库。
1.RS—232函数库RS—232函数库提供了各种⽅式的串⼝通信控制函数和I/O函数,包括:打开/关闭函数;I/O读写函数;调制解调器控制函数;串⼝设置函数;寄存器状态函数;回调函数等。
(1) 打开/关闭函数:OpenCom,OpenComConfig和CloseComo。
(2) I/O读写函数:总计有7组函数,以下为其中常⽤的四组:1) ComRd:从串⼝的接收缓冲区读指定长度的字符;2) ComRdByte:从串⼝的接收缓冲区读取⼀个字符;3) ComWrt:向串⼝的输出缓冲区中写指定长度的字符;4) ComWrtByte:向串⼝的输出缓冲区中写⼀个字符。
(3) Xmodem函数:它使⽤了⼀种包含出错检测的⽂件传输协议进⾏串⼝通信。
在这种协议中,⽂件通过信息包来传送,信息包中不仅包括了⽂件中的数据,还包括了校验和同步信息。
(4) 串⼝控制函数:总计有7组函数,以下为其中常⽤的四组:1)SetComTime:设置I/O操作超时的时间限制;2)SetCTSMode:禁⽌或允许硬件握⼿并设置硬件握⼿⽅式;3)FlushlnQ/FlushOutQ:清空输⼊/输出队列。
(5) 状态函数:主要包括端⼝状态信息和通信错误代码信息等。
(6) 回调函数InstallComCallback:为指定的串⼝安装回调函数。
串口通信实验报告

串⼝通信实验报告⼤连理⼯⼤学实验报告成绩:串⼝通信实验⼀、实验⽬的和要求了解串⼝通信的原理与机制掌握基于8051的串⼝通信硬件电路设计⽅法掌握8051串⼝通信程序调试⽅法⼆、实验原理和内容实验原理:1.串⼝通信简介串⼝通信是指数据在⼀根数据线上按照⼆进制数的数位⼀位接⼀位的传输。
其特点是通信线路简单,只要⼀对传输线就可以实现通信(如电话线),可⼤⼤地降低成本,适⽤于远距离通信。
缺点是传送速度慢。
2. 51单⽚机串⾏⼝简介51单⽚机的串⾏⼝是⼀个可编程全双⼯的通信接⼝,具有UART(通⽤异步收发器)的全部功能,能同时进⾏数据的发送和接收,也可以作为同步移位寄存器使⽤。
51单⽚机的串⾏⼝主要由两个独⽴的串⾏数据缓冲寄存器SBUF组成,它可以通过特殊功能寄存器SBUF对串⾏接收或串⾏发送寄存器进⾏访问,两个寄存器共⽤⼀个地址99H,但在物理上是两个独⽴的寄存器,由指令操作决定访问哪⼀个寄存器。
执⾏写指令时访问串⾏发送寄存器;执⾏读指令时,访问串⾏接收寄存器。
3.串⾏⼝控制寄存器SCON串⾏⼝控制寄存器SCON⽤来设定串⾏⼝的⼯作⽅式、接收或发送控制位以及状态标志位等。
在本实验中设定SM0为0,SM1为1,采⽤串⾏⼝的⼯作⽅式1(8位异步收发,波特率可变,由定时器控制)。
允许串⾏接收位REN设置为1,其它控制、标志位设置为0。
(即令SCON=0X50)4.定时器/计数器模式控制寄存器TMOD定时器/计数器模式控制寄存器TMOD是⼀个逐位定义的8位寄存器,其中低四位(即D0 ~ D3)定义定时器/计数器T0,⾼四位(即D4 ~ D7)定义定时器/计数器T1。
在本实验中使⽤定时器1,设定M1=1,M2=0,,采⽤定时器T1的⼯作⽅式2(⾃动重载8位定时器/计数器),其它控制位设置为0。
并由晶振频率(11.0592MHZ)和波特率(9600)计算初始化定时器T1:TH1=TL1=0xfd。
最后通过对TR1置1启动定时器T1。
8250串口实验

实验七 8250串口实验一、实验目的1、熟悉串行通信的一般原理和8250的工原理。
2、了解RS--232串行接口标准及连接方法。
3、掌握8250芯片的编程方法。
二、实验设备MUT—Ⅲ型实验箱、8086CPU模块。
三、实验原理介绍1.实验原理图见8250串行接口电路。
由MAX232完成RS232电平和TTL电平的转换,由8250完成数据的收发。
8250内部有10个寄存器,分别对应着不同的IO口地址。
对不同的寄存器进行初始化或读出写入操作就可以完成与计算机的通信。
由于不能同时收发数据,所以8250又称为通用串行异步收发器,简写为:UART。
8250实验电路的所有信号均已连好。
8250串行接口电路(1)电路原理:该电路由一片8250,一片MAX232组成,该电路所有信号线均已接好。
原理图如下:(2)电路测试:见整机测试2.程序框图(8250.ASM)3.程序代码;*******************************************code segment ;define data segmentassume cs:codeorg 0100hstart:mov bx,0480hmov dx,bxadd dx,6mov ax,80hout dx,axmov dx,bxmov ax,0ch ;000ch---9600 ,clk=4.77MHZ/4 ; AL=4770000/16/9600/4=8out dx,axadd dx,2mov ax,0hout dx,axadd dx,4mov ax,07 ;no pe,8 bit, 1 stopout dx,axmov dx,bxadd dx,2 ;no interuptmov ax,0out dx,axadd dx,8hin ax,dxmov dx,bxin ax,dxcrd: call recvcall sendjmp crdsend: push axmov bx,0480hmov dx,bxadd dx,0ahin ax,dxtest ax,20hjnz recv2pop axjmp sendrecv2: pop axmov dx,bxout dx,axretrecv: mov bx,0480hmov dx,bxadd dx,0ahin ax,dxtest ax,01hjnz recv1jmp recvrecv1: mov dx,bxin ax,dxretcode ends ;end of code segmentend start ;end assembly3.实验提示实验中,通讯波特率选用9600bps。
实验7串行接口输入输出实验

北京林业大学11学年—12学年第 2 学期计算机组成原理实验任务书专业名称:计算机科学与技术实验学时: 2课程名称:计算机组成原理任课教师:张海燕实验题目:实验七串行接口输入输出实验实验环境:TEC-XP+教学实验系统、PC机实验内容1.串行接口输入输出;2.串行接口扩展。
实验目的学习串行口的正确设置与使用。
实验要求1.实验之前认真预习,明确实验的目的和具体实验内容,做好实验之前的必要准备。
2.想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果;3.在教学实验过程中,要爱护教学实验设备,记录实验步骤中的数据和运算结果,仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。
4.实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,运算结果的分析讨论,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。
善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。
必要知识串行接口是计算机主机和某些设备之间实现通信,硬件造价比较低廉、标准化程度比较高的一种输入输出接口线路,缺点是通信的速度比较低。
从在程序中使用串行接口芯片的角度看,接口芯片内有用户可以访问的4个寄存器,分别是接收CPU送来数据的输出数据缓冲寄存器,向CPU提供数据的输入数据缓冲寄存器,接收CPU发来的控制命令的控制寄存器,向CPU提供接口运行状态的状态寄存器,必须有办法区分这4个寄存器。
接口芯片中还有执行数据串行和并行转换的电路,接口识别电路等。
串行接口用于执行数据的输入输出操作。
一次输入或输出操作通常需要两个操作步骤完成,第一步是为接口芯片提供入出端口地址,即把指令寄存器低位字节的内容(8位的IO端口地址)经过内部总线和运算器部件写进地址寄存器AR,第二步是执行输入或输出操作,若执行输入指令IN,则应从接口芯片读出一个8位的数据并经过数据总线DB和内部总线IB写进寄存器堆中的R0寄存器,若执行OUT指令,则需要把R0寄存器的内容经过内部总线IB和数据总线DB写入接口芯片。
[整理]单片机6个必做实验
![[整理]单片机6个必做实验](https://img.taocdn.com/s3/m/1361a0cf7e192279168884868762caaedd33bac0.png)
第一部分软件实验实验一二进制到BCD码转换一、实验目的1、掌握简单的数值转换算法2、基本了解数值的各种表达方法二、实验说明单片机中的数值有各种表达方式,这是单片机的基础。
掌握各种数制之间的转换是一种基本功。
我们将给定的一个二进制数,转换成二十进制(BCD)码。
将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。
三、实验内容及步骤1、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择使用伟福软件模拟器。
2、打开TH2.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA),点击暂停按钮,观察地址30H、31H、32H的数据变化,30H更新为01,31H更新为02,32H更新为03。
用键盘输入改变地址30H、31H、32H的值,点击复位按钮后,可再次运行程序,观察其实验效果。
修改源程序中给累加器A的赋值,重复实验,观察实验效果。
3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序1.源程序RESULT EQU 30HORG 0000HLJMP STARTBINTOBCD:MOV B,#100DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#10DIV ABMOV RESULT+1,A ;余数除以10得十位数MOV RESULT+2,B ;余数为个位数RETSTART:MOV SP,#40HMOV A,#123CALL BINTOBCDLJMP $END2.流程图实验四程序跳转表一、实验目的1、了解程序的多分支结构2、掌握多分支结构程序的编程方法二、实验说明多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。
若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京林业大学11学年—12学年第 2 学期计算机组成原理实验任务书专业名称:计算机科学与技术实验学时: 2课程名称:计算机组成原理任课教师:张海燕实验题目:实验七串行接口输入输出实验实验环境:TEC-XP+教学实验系统、PC机实验内容1.串行接口输入输出;2.串行接口扩展。
实验目的学习串行口的正确设置与使用。
实验要求1.实验之前认真预习,明确实验的目的和具体实验内容,做好实验之前的必要准备。
2.想好实验的操作步骤,明确通过实验到底可以学习哪些知识,想一想怎么样有意识地提高教学实验的真正效果;3.在教学实验过程中,要爱护教学实验设备,记录实验步骤中的数据和运算结果,仔细分析遇到的现象与问题,找出解决问题的办法,有意识地提高自己创新思维能力。
4.实验之后认真写出实验报告,重点在于预习时准备的内容,实验数据,运算结果的分析讨论,实验过程、遇到的现象和解决问题的办法,自己的收获体会,对改进教学实验安排的建议等。
善于总结和发现问题,写好实验报告是培养实际工作能力非常重要的一个环节,应给以足够的重视。
必要知识串行接口是计算机主机和某些设备之间实现通信,硬件造价比较低廉、标准化程度比较高的一种输入输出接口线路,缺点是通信的速度比较低。
从在程序中使用串行接口芯片的角度看,接口芯片内有用户可以访问的4个寄存器,分别是接收CPU送来数据的输出数据缓冲寄存器,向CPU提供数据的输入数据缓冲寄存器,接收CPU发来的控制命令的控制寄存器,向CPU提供接口运行状态的状态寄存器,必须有办法区分这4个寄存器。
接口芯片中还有执行数据串行和并行转换的电路,接口识别电路等。
串行接口用于执行数据的输入输出操作。
一次输入或输出操作通常需要两个操作步骤完成,第一步是为接口芯片提供入出端口地址,即把指令寄存器低位字节的内容(8位的IO端口地址)经过内部总线和运算器部件写进地址寄存器AR,第二步是执行输入或输出操作,若执行输入指令IN,则应从接口芯片读出一个8位的数据并经过数据总线DB和内部总线IB写进寄存器堆中的R0寄存器,若执行OUT指令,则需要把R0寄存器的内容经过内部总线IB和数据总线DB写入接口芯片。
接口芯片与输入输出设备之间的数据传送过程无需另外管理,会自动完成。
教学计算机使用8位的IO端口地址,安排在IN和OUT指令的低位字节,指令的高8位用作指令操作码,16为的指令编码全部占满,已经不能再指定要使用的通用寄存器,最终决定用对IN和OUT指令默认使用运算器中的R0完成输入输出操作。
IO地址端口的高4为(最高一位的值一定为1)用于通过译码电路产生接口芯片的8个片选信号,低4位用于选择一个芯片内最多16个寄存器。
教学计算机中,只为每个串行口芯片地址分配了两个地址,第一路串行接口的端口地址为80H/81H,第二路串行接口的端口地址可以由用户从90/91~F0/F1这8对中选择,把译码器的一个输出连接到接口芯片的片选信号引脚。
两个端口地址如何能够按照选择接口芯片内的4个寄存器呢?请注意,4个寄存器中的两个只用于输入,仅对IN 指令有用,另外两个只用于输出,仅对OUT指令有用。
2个端口地址和2条输入输出指令有如下4种组合,分别实现如下4项功能:IN 80:完成从接口芯片输入数据缓冲器读出8位数据并传送到R0寄存器低位字节;OUT 80:完成把R0寄存器低位字节的8位数据写入到接口芯片的输出数据缓冲器;IN 81:完成从接口芯片状态寄存器读出8位接口状态信息并传送到R0寄存器低位字节;OUT 81:完成把R0寄存器低位字节的8位命令信息写入到接口芯片的命令寄存器。
可以看到,偶数地址用于输入输出数据,奇数地址用于输入输出状态或命令信息。
实验说明1.TEC-XP+配置了两个串行接口COM1 和COM2,其中COM1 口是系统默认的串行口,加电复位后,监控程序对其进行初始化,并通过该口与PC 机或终端相连;而COM2 口,留给用户扩展用。
2.查阅有关书籍,了解串行通信接口芯片8251 的工作原理;了解8251 复位、初始化、数据传输的过程。
提醒注意的是,每次对8251 复位后(即按1 次“RESET”按键),都需要对其进行初始化,然后再进行正常的数据传输;复位后,只能对其进行1 次初始化,多次初始化将导致串口工作不正常。
3.在使用COM2 口时,需要将两片8251 芯片之间的插针用短路子短接(出厂时已短接),这样才能为COM2 正常工作提供所需的控制信号和数据;另外,还需要为其分配数据口地址和控制口地址。
本教学机,已将COM2 口的C/D 与地址总线的最低位AB0 相连,而其片选信号未连,只引出1 个插孔,实验时,应将该插孔与标有“I/O /CS”的7 个插孔中的1个相连。
4.COM1口的初始化操作已经编写完毕。
注意:对COM1口进行操作时,通过地址80输入输出数据,通过地址81接收状态信息。
在对COM2进行操作时,需要先设置COM2的地址,可选择标有“I/O /CS”的7 个插孔中的任一个地址范围。
例如选择90~9F,则对COM2口进行操作时,通过地址90输入输出数据,通过地址91接收状态信息。
例如选择A0~AF,则对COM2进行操作时,通过地址A0输入输出数据,通过地址A1接收状态信息。
其他地址范围亦然。
实验注意事项1.连接电源线和通讯线前TEC-XP+实验系统的电源开关一定要处于断开状态,否则可能会对TEC-XP+实验系统上的芯片和PC机的串口造成损害。
2.六个黑色控制开关的功能示意图如下:(开关拨到上方表示为1,拨到下方为0,x表示任意)单步手动置指令组合逻辑联机8位FPGA上面下面连续从内存读指令微程序脱机16位MACH3.几种常用的工作方式(开关拨到上方表示为1,拨到下方为0,x表示任意)4.在拔插实验箱上的任何器件和连线时,都要关闭实验箱电源,否则可能会烧坏实验箱的器件。
实验步骤一.硬件连接1.在断电状态下,取出TEC-XP+实验系统,将桌子上的串口线连接到TEC-XP+实验系统的串口(离电源接口远的);连接电源,将电源线的连到TEC-XP+实验系统的电源接口。
2.将TEC-XP+实验系统左下方的六个黑色的控制机器运行状态的开关置于正确的位置,在这个实验中开关应置为001100。
3.打开电源,船形开关和5V 电源指示灯亮。
二.仿真终端软件的操作步骤1.在D盘下建立你的工作目录,目录的命名:你的名字的汉语拼音的首字母,例如你叫张三,则你的目录为zs。
2.将C:\tec-xp\pcec目录的拷贝到你的目录下。
3.双击,出现如图1所示的界面:图1 选择串口的界面4.系统默认选择串口1,直接按回车后出现如图2所示的界面:图2 选择参数的界面5.图2是系统设定的一些传输参数,直接回车。
按一下TEC-XP+实验系统的“RESET”按钮放开后再按一下“START”按钮,出现界面如图3所示:图3 启动界面此时表明TEC-XP+机器联机通讯正常。
三、串行接口输入输出设计一个小程序, 用次数控制在终端屏幕上输出20H个可打印字符。
(1)在命令行提示符状态下输入:A 2020↙屏幕将显示:2020:从地址2020H 开始输入下列程序:2020:MVRD R2,0020 ;送入输出字符个数2022:MVRD R0,0030 ;“0”字符的ASCII 码送寄存器R02024:OUT 80 ;输出保存在R0 低位字节的字符2025:DEC R2 ;输出字符个数减12026:JRZ 202E ;判10 个字符输出完否,已完,则转到程序结束处2027:PUSH R0 ;未完,保存R0 的值到堆栈中2028:IN 81 ;查询接口状态,判字符串行输出完成否,2029:SHR R0202A:JRNC 2028;未完成, 则循环等待202B:POP R0 ;已完成, 准备输出下一字符并从堆栈恢复R0 的值202C:INC R0 ;得到下一个要输出的字符202D:JR 2024 ;转去输出字符202E:RET202F:↙(2)用“G”命令运行程序,记录运行结果。
(3)将上述程序中的2028:IN 812029:SHR R0202A:JRNC 20283条语句修改为3条MVRR R0,R0语句再次运行该程序,查看会出现什么现象,记录运行结果,解释为什么会如此?四、串行接口扩展1.将8251芯片插入实验箱右上角SIO2 8251上,为扩展I/O 口选择一个地址:将与COM2 口相连的SIO2 8251 左上方的/CS 与标有I/O /CS的插孔中地址为A0~AF 的一个相连;2.将教学机COM1 口与一台PC 机(A机)相连,在PC机(A机)上启动PCEC16.EXE;3.断开COM1 与A机的串口线,将其连接到另一台PC 机(B机)的串口,同样启动PCEC16.EXE;4.用另一根串口线将COM2 口和A机相连;5.在与COM1 相连的PCEC 上输入程序,这是主PCEC 可以输入输出,和COM2 连接的是从PCEC只作输出;6.用A命令编程进行COM2 口的操作。
(1)程序1:COM2 口初始化在命令行提示符状态下输入:A 2000↙从2000H 单元开始输入下面的程序2000:MVRD R0,004E ;给R0 赋值004E2002:OUT A1 ;将R0 的值输出到COM2 口的8251 中的寄存器中2003:MVRD R0,0037 ;给R0 赋值00372005:OUT A1 ;将R0 的值输出到COM2 口的8251 中的寄存器中2006:RET在命令行提示符状态下输入G 2000 运行初始化程序,完成对COM2 口的初始化。
注意:每次按“RESET”按键后,在对COM2 进行读写操作之前,都应运行该程序。
需要注意的是,按一次“RESET”按键后,只能对COM2 口进行一次初始化操作。
(2)程序2:从COM2 口输入数据,然后在与COM1 口相连的PC上显示出数据。
在命令行提示符状态下输入:A 2040↙从2040H 单元开始输入下面的程序2040:IN A1 ;判键盘上是否按了一个键,2041:SHR R0 ;即串行口是否有了输入的字符2042:SHR R02043:JRNC 2040 ;没有输入则循环测试2044:IN A0 ;从COM2 口读入字符到R02045:OUT 80 ;将该字符从COM1 口输出2046:RET2047:↙使用G命令运行该程序,要求记录:⏹从与COM1口相连的PC机的键盘上输入字符,两个PC机的屏幕显示分别是什么?⏹从与COM2口相连的PC机的键盘上输入字符,两个PC机的屏幕显示分别是什么?(3)程序3:从COM1 口接收数据,发送到与COM2 口相连的PC 机上回显。