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

目录实验一系统认识实验 (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两种芯片的基本用法,对课本上的知识有了更深入的理解,收获不少。
串口通信实验报告

串⼝通信实验报告基于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:为指定的串⼝安装回调函数。
串行口实验报告

串行口实验报告
《串行口实验报告》
实验目的:通过串行口实验,探索数据传输的可靠性和稳定性。
实验材料:计算机、串行口数据线、串行口设备。
实验步骤:
1. 连接串行口数据线:首先,将串行口数据线插入计算机的串行口接口,并将另一端连接到串行口设备上。
2. 设置串行口参数:在计算机上打开串行口设置界面,设置波特率、数据位、校验位和停止位等参数,确保与串行口设备相匹配。
3. 发送数据:通过计算机上的串行口通讯软件,向串行口设备发送数据,观察数据传输的稳定性和可靠性。
4. 接收数据:同样通过串行口通讯软件,接收串行口设备发送的数据,检验数据接收的准确性和完整性。
实验结果:
经过一系列的实验操作,我们发现串行口数据传输的稳定性和可靠性较高。
在设置合适的参数后,数据传输过程中几乎没有出现丢失或错误的情况。
同时,数据的传输速度也较为稳定,符合预期的要求。
实验结论:
通过本次串行口实验,我们验证了串行口数据传输的可靠性和稳定性。
在实际应用中,可以通过合理设置串行口参数,确保数据的准确传输。
串行口技术在工业控制、通讯设备等领域有着广泛的应用前景,为数据传输提供了一种可靠的解决方案。
实验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写入接口芯片。
单片机及其接口技术实验报告

单片机及接口技术实验报告实验一数据传送程序一、实验目的1、掌握汇编语言设计和调试方法。
2、掌握DVCC实验系统的操作步骤。
二、实验内容1、编程实现,把7000H~70FFH单元的内容清零。
2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。
三、DVCC实验系统操作说明1、接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。
2、运行DVCC软件。
(程序DVCC598H实验系统DVCC实验系统)3、单击工具栏上“新建”或“打开”按钮,编写源程序。
单击“编译”按钮,使其形成可执行文件。
4、单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。
联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。
5、在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。
6、单击工具栏上“运行”或“单步”按钮,运行实验程序。
7、单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。
鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。
8、运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。
四、实验程序代码1、把7000H~70FFH单元的内容清零。
程序代码:ORG 0000HAJMP STARTORG 70HSTART: MOV P2, #70H ;送地址高8位到P2端口MOV R0, #00H ;R0=00H,表地址低8位CLR A ;将累加器A清0LOOP: MOVX @R0, A ;将A送入以R0内容为地址的外部RAM.INC R0 ;R0+1-->R0CJNE R0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $ ;暂停END2、编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。
微机原理实验五-8255输入输出实验

微机原理实验五-8255输入输出实验一、实验要求:南昌大学实验报告利用8255可编程并行口芯片,实现输入/输出,实验中用8255PA口作输出,PB口作输入。
二、实验目的:(1)了解8255芯片结构及编程方法。
(2)了解8255输入/输出实验方法。
三、实验器材:(1)G2022实验平台1台(2)G6W仿真器1台(3)连线若干根(4)8255芯片1片(5)LAB8088CPU板1块四、实验电路:8255的/CS接译码器Y2(0A000H-0AFFFH),则命令字地址为0A003H,PA口地址为0A000H,PB口地址为0B001H,PC口地址为0B002H。
PA0-PA7(PA口)接L0-L7(LED发光二极管组),PB0-PB7(PB口)接K0-K7(K0-K7开关量发生器),再接上数据线和读/写信号,地址线只接A0,A1即可,还要接上RESET信号,以便8255A可靠复位。
特别强调:8255的第七脚应接GND(地),第二十六脚应接+5V。
五、实验说明:可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。
本实验采用的是方式0:PA,PC口输出,PB口输入。
方式字为82H。
六、实验步骤:(1)使用实验平台锁进插座,如图连线,因8255片选信号为0A000H,所以,A口为0A000H、口为0A001H、C口为0A002H、命令口为0A003H。
(2)硬件测试:把G2022+G6W连PC机,在WINDOWS调试环境下点击[窗口/数据窗口/MEMORY],以打开MEMORY数据窗口,在打开的MEMORY窗口中的0A003H地址(即8255的片选空间)上写入控制字82H,在0A000H (8255的A口)上打入55H,0AAH等数字,LED发光二极管组对应点亮。
若不是,则硬件有问题。
(3)编写程序、编译程序,用单步、断点、连续方式调试程序,排除软件错误。
运行程序,直至达到本实验的要求为止。
51单片机20个实验,代码详细

第一章单片机系统板说明一、概述单片机实验开发系统是一种多功能、高配置、高品质的MCS-51单片机教学与开发设备。
适用于大学本科单片机教学、课程设计和毕业设计以及电子设计比赛。
该系统采用模块化设计思想,减小了系统面积,同时增加了可靠性,使得单片机实验开发系统能满足从简单的数字电路实验到复杂的数字系统设计实验,并能一直延伸到综合电子设计等创新性实验项目。
该系统采用集成稳压电源供电,使电源系统的稳定性大大提高,同时又具备完备的保护措施。
为适应市场上多种单片机器件的应用,该系统采用“单片机板+外围扩展板”结构,通过更换不同外围扩展板,可实验不同的单片机功能,适应了各院校不同的教学需求。
二、单片机板简介本实验系统因为自带了MCS-51单片机系统,因此没有配置其他单片机板,但可以根据教学需要随时配置。
以单片机板为母板,并且有I/O接口引出,可以很方便的完成所有实验。
因此构成单片机实验系统。
1、主要技术参数(1)MSC-51单片机板板上配有ATMEL公司的STC89C51芯片。
STC89C51资源:32个I/O口;封装DIP40。
STC89C51开发软件:KEIL C51。
2、MSC-51单片机结构(1)单片机板中央放置一块可插拔的DIP封装的STC89C51芯片。
(2)单片机板左上侧有一个串口,用于下载程序。
(3)单片机板的四周是所有I/O引脚的插孔,旁边标有I/0引脚的脚引。
(4)单片机板与各个模块配合使用时,可形成—个完整的实验系统。
三、母板简介主要技术参数(1)实验系统电源实验系统内置了集成稳压电源,使整个电源具有短路保护、过流保护功能,提高了实验的稳定性。
主板的右上角为电源总开关,当把220V交流电源线插入主板后,打开电源开关,主板得电工作。
为适用多种需要,配置了+5V,+12V,—5V电压供主板和外设需要,通过右上角的插针排和插孔输出到外设。
此外,还设有螺旋保险插孔保护实验箱。
(2)RS232接口RS232接口通过MAX232芯片实现与计算机的串行通讯,通过接口引出信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五串行接口输入/输出实验
一、实验目的
1、学习TEC-XP+教学计算机I/O接口扩展的方法;
2、学习串行通信的基本知识,掌握串行通信接口芯片的设置和使用方法。
二、实验说明
1、TEC-XP+教学计算机的I/O结构
TEC-XP+教学计算机配置有COM1和COM2两个串行接口,其中COM1是TEC-XP+默认的标准接口,与PC终端相连接,监控程序负责对COM1进行初始化和使用管理。
COM2预留给用户扩展使用,监控程序不能识别COM2,也不对COM2进行任何操作,用户需要对COM2进行初始化和使用管理。
COM1和COM2均由可编程串行通信接口芯片intel8251芯片构成。
2、Intel8251的组成及控制和使用方法
可编程串行通信接口芯片Intel8251支持同步和异步两种通信方式。
在异步方式下,波特率为0~19.2Kbps,数据位可为5、6、7或8位,可设1个奇偶校验位,1个起始位,1个、1.5个或2个停止位。
Intel8251内部有7个功能模块负责实现与CPU的数据交换以及与I/O设备的数据通信功能,内部有6个寄存器,其中与异步通信方式的有关的寄存器有5个,即模式寄存器、控制寄存器、状态寄存器、数据发送寄存器和数据接收寄存器。
模式寄存器的功能是设定intel8251的工作模式,控制寄存器的功能是控制intel8251的数据发送和接收等工作过程,状态寄存器的功能是反映intel8251数据发送和接收等工作的状态,各寄存器的格式如图5-1、图5-2和图5-3所示。
当CPU把需发送的数据写入数据发送寄存器后,intel8251将自动把数据组成帧并逐位发送出去。
Intel8251能自动完成数据接收操作,并把接收到的数据存放在数据接收寄存器中,CPU 从中读取即可。
图5-1模式寄存器格式图5-2 控制寄存器格式
图5-3 状态寄存器格式
CPU对模式寄存器、控制寄存器和数据发送寄存器只能写入,不能读出。
对状态寄存器和数据接收寄存器只能读出,不能写入。
Intel8251使用2个地址来访问内部的寄存器,其中用偶地址访问数据发送寄存
器和数据接收寄存器,并以读、写控制信号加以区分。
用奇地址访问模式寄存器、控制寄存器和状态寄存器,由于状态寄存器为只读,而模式寄存器和控制寄存器为只写,因此需进一步区分模式寄存器和控制寄存器的写操作,方法是:在对intel8251芯片进行复位后,以奇地址写入的数据将被写入到模式寄存器中,一旦完成了模式寄存器的写操作后就不能再次写入,以后再以奇地址写入的数据将被写到控制寄存器中。
Intel8251在使用前需进行初始化,即在intel8251芯片复位后,首先将工作模式信息写入模式寄存器,然后将运行控制信息写入控制寄存器,顺序不能颠倒。
注意:①每当intel8251芯片复位后(即按了“RESET”键),都需要对8251进行初始化,然后才能进行正常的数据传输操作;②每次复位后,只能对8251进行1次初始化,多次初始化将导致芯片工作不正常。
3、在使用COM2时,需要将两片intel8251芯片之间的跳线短接(缺省状态),以便为COM2正常工作提供所需的控制信号和数据;此外,还需要为其分配端口地址。
TEC-XP+已将COM2的控制信号C/D#与地址总线的最低位A0相连,但片选信号/CS未连,只引出1个插孔,实验时,应从标有“I/O /CS”的7个I/O译码电路输出端的插孔中,选择一个与COM2的片选信号/CS插孔相连。
三、实验内容与步骤
1、为扩展I/O接口选择一个地址,即将TEC-XP+的COM2的片选信号/CS与标有“I/O /CS”的插孔中地址为90~9FH的插孔相连。
2、将TEC-XP+的COM1连接到微机PC1的一个串口上,在PC1上运行PCEC16,进入联机状态后保持PCEC16的运行状态。
3、将PC1侧的串口插头拔出,将其连接到另一台微机PC2的串口上,在PC2上运行PCEC16,进入联机状态后保持PCEC16的运行状态。
4、用另一条串口线将PC1的串口连接到TEC-XP+的COM2。
5、与TEC-XP+的COM1相连的微机作为主PC,在主PC上用输入和运行程序,对TEC-XP+的COM2进行操作。
与TEC-XP+的COM2连接的微机作为从PC,从PC只能进行数据的输入和输出。
1)程序1:初始化TEC-XP+的COM2
在主PC的PCEC16的命令行提示符状态下输入:
A 2000
2000:MVRD R0,004E ;给R0赋值004E(8251模式寄存器参数)
2002:OUT 91 ;将R0的值输出到COM2口中8251的模式寄存器(地址为0091H)
2003:MVRD R0,0037 ;给R0赋值0037(8251控制寄存器参数)
2005:OUT 91 ;将R0的值输出到COM2口中8251的控制寄存器(地址同为0091H)2006:RET
在命令行提示符状态下输入G 2000,运行初始化程序,对COM2进行初始化。
注意:每次按“RESET”键后,在对COM2进行收、发数据之前,都要运行该程序,而且每按一次“RESET”键后,只能对COM2进行一次初始化,即只能运行一次初始化程序。
2)程序2:从与COM2相连的从PC上输入一个字符串,在与COM1口相连的主PC上显示出来。
在主PC的PCEC16的命令行提示符状态下输入:
A 2040
2040:IN 91 ;判键盘上是否按了一个键(读8251状态寄存器,地址为0091H)
2041:SHR R0 ;即串行口是否有了输入的字符(判断D1位是否为1?)
2042:SHR R0
2043:JRNC 2040 ;没有输入则循环测试(D1=0则循环查询)
2044:IN 90 ;从COM2口读入字符到R0
2045:OUT 90 ;将该字符从COM2口输出至从PC回显
2046:OUT 80 ;将该字符从COM1口输出
2047:MVRD R1,00FF
2049:MVRD R2,000D
204B:AND R0,R1
204C:CMP R0,R2
204D:JRNZ 2040
204E:RET
204F:
在命令行提示符状态下输入:G 2040,运行该程序。
从与COM2口相连的从PC机键盘上输入一个字符串,则在与COM1口相连的主PC机的屏幕上显示该字符串,按回车键结束。
3)程序3:从与COM1口相连的主PC上输入字符串,在与COM2口相连的从PC上显示该字符串。
在主PC的PCEC16的命令行提示符状态下输入:
A 2060
2060:IN 81 ;判键盘上是否按了一个键
2061:SHR R0 ;即串行口是否有了输入的字符
2062:SHR R0
2063:JRNC 2060 ;没有,则循环等待
2064:IN 80 ;接收键盘输入的字符
2065:OUT 80 ;字符送主PC回显
2066:OUT 90 ;将键盘输入的字符从COM2输出(8251数据发送缓冲器地址为90H)2067:MVRD R1,00FF
2069:MVRD R2,000D
206B:AND R0,R1
206C:CMP R0,R2
206D:JRNZ 2060
206E:RET
206F:
在命令行提示符状态下输入:G2060,运行该程序。
从主PC机键盘输入字符串,在在与COM2口相连的从PC机的屏幕上显示,按回车键结束。
6、准备两台TEC-XP+教学计算机,各自分别与PC进行联机(运行PCEC16)。
用另一条串口线将两台教学计算机的COM2连接起来,在两台PC机对应的PCEC16上分别输入以下程序:从2000H单元开始输入下面的程序:
2000:MVRD R0,004E ;给R0赋值004E
2002:OUT 91 ;将R0的值输出到COM2口的8251中的寄存器中
2003:MVRD R0,0037 ;给R0赋值0037
2005:OUT 91 ;将R0的值输出到COM2口的8251中的寄存器中
;以上为8251的初始化程序
2006:IN 81 ;检查本机键盘是否按了一个键,
2007:SHR R0 ;即串行口是否有了输入的字符
2008: SHR RO
2009:JRNC 200D ;没有,则转去检查扩展接口COM2的键盘有没有输入
200A:IN 80 ;若本机键盘有输入则接收该字符
200B: OUT 80 ;将键盘输入的字符在本机PC上输出
200C:OUT 90 ;将从键盘输入的字符输出经扩展串口COM2送到另一台教学机输出200D: IN 91 ;检查扩展串口相连的另一台教学机对应的PC键盘上是否按键,
200E: SHR R0 ;即串行口是否有了输入的字符
200F: SHR R0
2010: JRNC 2006 ;没有,则转去判本机键盘是否有输入
2011:IN 90 ;若有,则接收
2012: OUT 80 ;在本机输出
2013:JR 2006
2014: RET
注意:每次运行该程序前,须对COM2
该程序完成两台教学计算机的COM2接口扩展操作并完成该串口初始化,同时运行这个程序,则两个键盘的输入同时显示在两个屏幕上,实现的是双机的双向通讯功能。
四、实验要求
1、实验前应查阅intel8251芯片的资料,了解芯片的基本功能和初始化及使用的方法;
2、实验后写出实验报告,记录操作过程及程序运行的结果,并写出实验心得体会。
3、如何判断intel8251可以发送数据?如何判断intel8251已经接收了一个数据?。