《微机原理课程设计37393(31页).doc》由会员分享,可在线阅读,更多相关《微机原理课程设计37393(31页).doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-双机串行通信的设计与实现一、设计内容 设计通过串行口实现两台PC机之间串行通信的硬件和软件。二、所用设备 PC机两台,串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片等。三、设计要求1.单机自发自收串行通信。接收键入字符,从8251A的发送端发送,与同一个8251A的接收端接收,然后在屏幕上显示出来。2.双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的 8251A的接收端接收,然后在屏幕上显示出来。四、设计方案(一)硬件原理框图(二)硬件原理图 8086最小系统原理图(附录一) 自发自收原理图(附录二) 双机通信原理图
2、(附录三)(三)程序流程图Y开 始从8251A数据口取入一个字节将此字节显示在微机屏幕上清除8259A中ISR的标志接受的字节为“!”?中断结束IRET置IRQ2的中断屏蔽位为1,即禁止IRQ2中断开中断STI用INT 21H的4CH功能调用返回DOSN接收中断服务程序主程序开 始置8253定时器2为模式3,并赋予其初始值初始化8251为8个数据位,1个停止位,波特率因子为16,无奇偶校验,并处于允许接收和发射状态提示用户:“在主机键盘上输入字符”,将显示在终端屏幕上;键入“!”则结束发送过程主机从键盘上输入一个字符并存入BL从8251命令端口取状态字节放入AL状态字节最低位TXRDY=1?通
3、过8251数据口,主机把BL中字节送出该字节为“!”吗?显示提示信息:用户在键盘上输入字符,将显示在显示器上,用“!”结束程序将接受中断服务程序的入口地址,写入中断矢量表0AH中断位置开放IRQ2对应的中断屏蔽位开中断死循环等待硬件中断NNYY(四)程序清单中断接收源程序(附录四) PC机自发自收串行通信源程序(附录五) PC机双机串行通信源程序(附录六)五、方案论证本次设计中主要使用了可编程串行接口芯片8251A,下面就8251A对设计方案进行论证。(一)8251A的基本性能8251A是可编程的串行通信接口芯片,基本性能:1两种工作方式:同步方式,异步方式。同步方式下,波特率为064K,异步
4、方式下,波特率为019.2K。2同步方式下的格式每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。3异步方式下的格式每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、15个或2个停止位。可以检查假启动位,自动检测和处理终止字符。4全双工的工作方式其内部提供具有双缓冲器的发送器和接收器。5提供出错检测具有奇偶、溢出和帧错误三种校验电路。(二)8251A的内部结构1、发送器发送器由发送缓冲器和发送控制电路两部分组
5、成。采用异步方式,则由发送控制电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出。8251A内部结构图采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据。如果CPU与8251A之间采用中断方式交换信息,那么TXRDY可作为向CPU发出的中断请求信号。当发送器中的8位数据串行发送完毕时,由发送控制电路向CPU发出TXE有效信号,表示发送器中移位寄存器已空。2接收器接收器由接收缓冲器和接收控制电路两部分组成。接收移位寄存器从RXD引腿上接收串行数据转换成并行数据后存入接收缓冲器。异步方式:在RXD线上检测低电平,将检
6、测到的低电平作为起始位, 8251A开始进行采样,完成字符装配,并进行奇偶校验和去掉停止位,变成了并行数据后,送到数据输入寄存器,同时发出RXRDY信号送CPU,表示已经收到一个可用的数据。同步方式:首先搜索同步字符。8251A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器的内容进行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。当两个寄存器的内容比较相等时,8251A的SYNDET升为高电平,表示同步字符已经找到,同步已经实现。采用双同步方式,就要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄
7、存器的内容是否与第二个同步字符寄存器的内容相同。如果相同,则认为同步已经实现。在外同步情况下,同步输入端SYNDET加一个高电位来实现同步的。实现同步之后,接收器和发送器间就开始进行数据的同步传输。这时,接收器利用时钟信号对RXD线进行采样,并把收到的数据位送到移位寄存器中。在RXRDY引脚上发出一个信号,表示收到了一个字符。3数据总线缓冲器数据总线缓冲器是CPU与8251A之间的数据接口。包含3个8位的缓冲寄存器:两个寄存器分别用来存放CPU向8251A读取的数据或状态信息。一个寄存器用来存放CPU向8251A写入的数据或控制。4读/写控制电路读/写控制电路用来配合数据总线缓冲器的工作。功能
8、如下:(1) 接收写信号,并将来自数据总线的数据和控制字写入8251A;(2) 接收读信号,并将数据或状态字从8251A送往数据总线; (3) 接收控制/数据信号C/,高电平时为控制字或状态字;低电平时为数据。 (4) 接收时钟信号CLK完成8251A的内部定时; (5) 接收复位信号RESET,使8251A处于空闲状态。5调制解调控制电路调制解调控制电路用来简化8251A和调制解调器的连接。(三)8251A的引脚功能1、8251A和CPU之间的连接信号8251A和CPU之间的连接信号可以分为四类: a)片选信号 :片选信号,它由CPU的地址信号通过译码后得到。b)数据信号D0-D7:8位,三
9、态,双向数据线,与系统的数据总线相连。传输CPU对8251A的编程命令字和8251A送往CPU的状态信息及数据。c)读/写控制信号 :读信号,低电平时, CPU当前正在从8251A读取数据或者状态信息。 :写信号,低电乎时, CPU当前正在往8251A写入数据或者控制信息。 C/:控制/数据信号,用来区分当前读/写的是数据还是控制信息或状态信息。该信号也可看作是8251A数据口/控制口的选择信号。由此可知,、C/这3个信号的组合,决定了8251A的具体操作,它们的关系如表7-3所示:注:数据输入端口和数据输出端口合用同一个偶地址,而状态端口和控制端口合用同一个奇地址。c)收发联络信号 TXRD
10、Y:发送器准备好信号,用来通知CPU,8251A已准备好发送一个字符。 TXE:发送器空信号,TXE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,说明一个发送动作已完成。 RXRDY:接收器准备好信号,用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,等待CPU来取走。因此,在中断方式时,RXRDY可用来作为中断请求信号;在查询方式时,RXRDY可用来作为查询信号。 SYNDET:同步检测信号,只用于同步方式。28251A与外部设备之间的连接信号8251A与外部设备之间的连接信号分为两类:a) 收发联络信号 :数据终端准备好信号,通知外部设备,CPU当前已经准
11、备就绪。 :数据设备准备好信号,表示当前外设已经准备好。 :请求发送信号,表示CPU已经准备好发送。 :允许发送信号,是对的响应,由外设送往8251A。实际使用时,这4个信号中通常只有必须为低电平,其它3个信号可以悬空。b) 数据信号 TXD:发送器数据输出信号。当CPU送往8251A的并行数据被转变为串行数据后,通过TXD送往外设。 RXD:接收器数据输入信号。用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。3. 时钟、电源和地8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端。 CLK:时钟输入,用来产生8251A器件的内部时序。同步方式下,大于接收数
12、据或发送数据的波特率的30倍,异步方式下,则要大于数据波特率的4.5倍。 TXD:发送器时钟输入,用来控制发送字符的速度。同步方式下,TXC的频率等于字符传输的波特率,异步方式下,TXC的频率可以为字符传输波特率的1倍、16倍或者64倍。 RXD:接收器时钟输入,用来控制接收字符的速度,和TXC一样。在实际使用时,RXC和TXC往往连在一起,由同一个外部时钟来提供,CLK则由另一个频率较高的外部时钟来提供。 VCC:电源输入 GND:地(四)8251A的编程编程的内容包括两大方面:一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;二是由8251A向CPU送出的状态字。1方式选择控制字
13、(模式字)方式选择控制字的格式如图所示。2操作命令控制字(控制字)操作命令控制字的格式如下:3、状态字状态字的格式如下:48251A的初始化 a)芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。b)如果模式字中规定了8251A工作在同步模式,c)由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。流程图如下图:六、调试过程 1.对设计原理图进行电气检查。主要针对电路连接中的电气连接进行检查,并生成对应电路的网表。特别是对电路节点的连接检查。 2.对设计的程序进行语法检查。检查程序中存在的语法错误。编译连接并下载到芯片
14、中。 3.对设计进行综合调试。对下载到芯片中的程序进行功能检查。直到完成设计要求的功能。七、运行结果 通过对下载的程序的调试,完成了设计要求的任务:(1)单机自发自收串行通信。接收键入字符,从8251A的发送端发送,与同一个8251A的接收端接收,然后在屏幕上显示出来。(2)双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的 8251A的接收端接收,然后在屏幕上显示出来。八、收获体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,微型计算机已
15、经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握微型计算机的开发技术是十分重要的。回顾起此次微机原理课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困
16、难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说8251A芯片的使用,PRETOL软件的应用技巧,对汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。附录一附录二附录三附录四中断接收源程序D51EQU208H;8251A数据端口地址C51EQU209H;8251A控制端口地址T2EQU202H;8253定时器2端口地址TCEQU203H;8253控制端口地址BPSEQU1200;波特率1200FACEQU 16;波特率因子16DATASEGMENTMESSDBLOAD A
17、 DATA,0AH,0DH,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:CALLINIT53CALLINIT51MOVAX,DATA;显示提示信息MOV DS,AXLEA DX,MESSMOVAH,9INT 21HMOVDX,SEG INTER ;设置0AH类型中断向量MOV DS,DXMOV DX,OFFSETINTERMOVAH,25HMOV AL,0AHINT 21HCLIINAL,21H;取消IRQ2的屏蔽位ANDAL,0FBHOUT21H,ALSTIWAIT1:JMPWAIT1;等中断INTER:MOVDX,D51;中断处理INAL,
18、DX;读入接受的字符PUSHAXMOV DL,ALMOVAH,2;在屏幕上显示接受的字符INT 21HMOV AL,20HOUT20H,ALPOPAXCMPAL,!;是结束符吗JNZNEXT;不是,转NEXTINAL,21H;是结束符,则屏蔽IRQ2ORAL,4OUT21H,ALPOPAXPOPAXPOPAXSTIMOVAX,4C00H ;返回DOSINT 21HNEXT:IRET;中断返回INIT51 PROCNEAR;8251A初始化MOVDX,C51XOR AX,AXMOV CX,3L1:CALL COUTLOOP L1MOVAL,40HCALLCOUTMOVAL,4EH;设置模式字,异
19、步模式,8个数据位,一个停止位,波特率因子16CALLCOUTMOV AL,24H;设置控制字,启动接收器CALLCOUTRETINIT51 ENDPCOUTPROC NEAROUTDX,ALPUSHCXMOVCX,2GG:LOOPGGPOPCXRETCOUTENDPINTI53 PROC NEAR;初始化8253MOVDX,0MOVAX,250MOVBX,1000MULBXMOVBX,BPSDIVBX;计算定时器2计数初值MOVBX,FACDIVBXMOVBX,AXMOVDX,TCMOV AL,96H;设置8253控制字,工作在方式3,二进制计数OUTDX,ALMOVDX,T2;写定时器2的
20、计数初值MOVAX,BXOUTDX,ALRETINIT53 ENDPCODEENDSEND START附录五PC机自发自收串行通信源程序D51 EQU 208H ;8251A数据端口地址C51 EQU 209H ;8251A控制端口地址T2 EQU 202H ;8253定时器2端口地址TC EQU 203H ;8253控制端口地址BSP EQU 1200 ;波特率1200FAC EQU 16 ;波特率因子 16DATA SEGMENT MESS DB SEND & LOAD A DATA,0AH,0DH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA
21、START: CALL INIT53 CALL INIT51 MOV AX,350AH ;取原0AH中断向量 INT 21H PUSH ES ;保存原0AH中断向量 PUSH BX MOV DX,SEG INTER ;设置0AH类型中断向量 MOV DS,DX MOV DX,OFFSET INTER MOV AX,250AH INT 21HM00: MOV AX,DATA ;显示提示信息 MOV DS,AX LEA DX,MESS MOV AH,9 INT 21HM0: MOV AH,1 ;接收键入字符 INT 21H MOV BL,AL MOV DX,C51M1: IN AL,DX ;测试状
22、态位TXRDY是否为1 TEST AL,1 JZ M1 ;不为1,继续测试 MOV DX,D51 ;为1,则从8251A数据口输出数据 MOV AL,BL OUT DX,ALREC: CLI IN AL,21H ;取消IRQ2的屏蔽位 AND AL,0FBH OUT 21H,AL STIWAI: JMP WAI ;等中断 MOV AX,SI CMP DL,! ;判断是否是结束符 JNZ M0 ;不是,转M0 IN AL,21H ;是结束符,则屏蔽IRQ2 OR AL,4 OUT 21H,AL MOV AX,250AH ;恢复原0AH中断向量 POP DX POP DS INT 21H MOV
23、AX,4C00H INT 21HINTER: PUSH AX MOV DX,D51 ;中断处理 IN AL,DX ;读入接收的字符 MOV SI,AX ;保存接收的字符 MOV DL,AL ;在屏幕上显示接收的字符 MOV AH,2 INT 21H MOV AL,20H OUT 20H,AL POP AX STI IRETINIT51 PROC NEAR ;8251A初始化 MOV DX,C51 XOR AX,AX MOV CX,3L1: CALL COUT LOOP L1 MOV AL,40H CALL COUT MOV AL,4EH ;设置模式字,异步方式,8个数据位,一个停止位,波特率因
24、子16 CALL COUT MOV AL,27H ;设置控制字,启动发送器和接收器 CALL COUT RETINIT51 ENDPCOUT PROC NEAR OUT DX,AL PUSH CX MOV CX,2GG: LOOP GG POP CX RETCOUT ENDPINIT53 PROC NEAR ;初始化8253 MOV DX,0 MOV AX,250 MOV BX,1000 MUL BX MOV BX,BPS DIV BX ;计算定时器2计数初值 MOV BX,FAC DIV BX MOV BX,AX MOV DX,TC MOV AL,0B6H ;设置8253控制字,工作在方式3
25、,二进制计数 OUT DX,AL MOV DX,T2 ;写定时器2的计数初值 MOV AX,BX OUT DX,AL RET INIT53 ENDPCODE ENDS END START 附录六PC机双机串行通信源程序D51 EQU 208H ;8251A数据端口地址C51 EQU 209H ;8251A控制端口地址T2 EQU 202H ;8253定时器2端口地址TC EQU 203H ;8253控制端口地址BSP EQU 1200 ;波特率1200FAC EQU 16 ;波特率因子 16DATA SEGMENT MESS DB SEND & LOAD A DATA,0AH,0DH,$DAT
26、A ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: CALL INIT53 CALL INIT51 MOV AX,DATA ;显示提示信息 MOV DS,AX LEA DX,MESS MOV AH,9 INT 21HM0: MOV AH,1 ;接收键入字符 INT 21H MOV BL,AL MOV DX,C51M1: IN AL,DX ;测试状态位TXRDY是否为1 TEST AL,1 JZ M1 ;不为1,继续测试 MOV DX,D51 ;为1,则从8251A数据口输出数据 MOV AL,BL OUT DX,AL CLI IN AL,21H ;取
27、消IRQ2的屏蔽位 AND AL,0FBH OUT 21H,AL STIWAI: JMP WAI ;等中断 MOV AX,SI CMP DL,! ;判断是否是结束符 JNZ M0 ;不是,转M0 IN AL,21H ;是结束符,则屏蔽IRQ2 OR AL,4 OUT 21H,AL MOV AX,4C00H INT 21H INIT51 PROC NEAR ;8251A初始化 MOV DX,C51 XOR AX,AX MOV CX,3L1: CALL COUT LOOP L1 MOV AL,40H CALL COUT MOV AL,4EH ;设置模式字,异步方式,8个数据位,一个停止位,波特率因
28、子16 CALL COUT MOV AL,27H ;设置控制字,启动发送器和接收器 CALL COUT RETINIT51 ENDPCOUT PROC NEAR OUT DX,AL PUSH CX MOV CX,2GG: LOOP GG POP CX RETCOUT ENDPINIT53 PROC NEAR ;初始化8253 MOV DX,0 MOV AX,250 MOV BX,1000 MUL BX MOV BX,BPS DIV BX ;计算定时器2计数初值 MOV BX,FAC DIV BX MOV BX,AX MOV DX,TC MOV AL,0B6H ;设置8253控制字,工作在方式3,二进制计数 OUT DX,AL MOV DX,T2 ;写定时器2的计数初值 MOV AX,BX OUT DX,AL RET INIT53 ENDPCODE ENDS END START -第 31 页-