1、接收器准备好,高电平有效。SYNDET/BRKDET:同步/中止检测,双功能引脚。(2)与外设或Mode 相连的信号线:DTR:数据终端准备好,输出,低电平有效。DSR:数据装置准备好,输入,低电平有效。RTS:请求发送,输出,低电平有效。CTS:准许传送,输入,低电平有效。TxD:发送数据线。RxD:接收数据线。TxC:发送时钟,控制发送数据的速率。RxC:接收时钟,控制接收数据的速率。2、8251 的初始化编程和状态字8251 是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。初始化编程包括CPU 写方式控制字和操作命令字到8251 同一控制口,在初始化编程时必须按一定
2、的顺序。如下面的流程图:三、实验原理图四、实验容本实验由实验器发送一串字符09,PC 机串口接收并在超级终端上显示。五、实验步骤与PC 机通讯应用实验(1)实验连线:a.用串口线把实验机 8251 模块的RS232 通讯口与PC 机相连,把串口旁边的短路块SW1 短路在2-2/3-3 上,SW2 短路在RS232 上。b. 把 8251 实验区TxD、RxD 分别与RS232 实验区中的TxD、RxD 相连。c. 8254 定时器电路的CLK0 和8251 的CLOCK 连到信号源CLK1(短路在1.5MHz)。d. 8254 定时器电路的OUT0 接8251 的TxC 和RxC,8254 定
3、时器电路的GATE 接+5Ve. 8251 选通线CS 与ISA 总线接口模块的0000H 相连,8254 选通线CS 与ISA 总线接口模块的0020H 相连。f. 8251 及8254 的WR 连到8086 主模块的,8251 及格8254 的RD 连8086 主模块的RD。g. 8251 及8254 模块的数据(D0D7)、地址线(A0A7)分别连到主模块的数据(AD0AD7)、地址线(A0A7)。(2)PC 机设置:进入WINDOWS 附件通讯超级终端。进入终端后在“连接时使用”下拉框选择你所使用的COM 口,波特率设置为4800,数据位8 位,奇偶校验位无,停止位1 位,流量控制无。
4、等待接收数据。(3)编译、运行程序(8251xp.asm),运行程序前先按硬件复位,正常运行后应在PC 机屏幕上循环显示“Qingdong Microcomputer Institute ”6、实验代码MY_STACK SEGMENT PARA STACK DB 100 DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA DATAIO_9054base_address DB 4 DUP(0) ;PCI卡9054芯片I/O基地址暂存空间IO_base_address DB 4 DUP(0) pcicardnotfind DB 0DH,0AH,pci card not
5、find or address/interrupt error !,0DH,0AH,$GOOD DB 0DH,0AH,The Program is Executing !D8251_0 DW 0000H ;DLAB=0:接收数据寄存器,发送保持寄存器;DLAB=1:波特率除数寄存器低位D8251_1 DW 0001H ;中断允许寄存器;波特率除数寄存器高位P8254_T0 DW 0020H P8254_MODE DW 0023HPC16550_0 EQU 03F8H ;波特率除数寄存器低位 PC16550_1 EQU 03F9H ;PC16550_3 EQU 03FBH ;线路控制寄存器LCR
6、 PC16550_4 EQU 03FCH ;MODEM控制寄存器MCRPC16550_5 EQU 03FAH ;线路状态寄存器LSRDELAY_SET EQU 01FFH ;延时参数MES DB PCI CARD NOT FOUND! $MES0 DB *PCI CONFIG INFO*,13,10,MES1 DB PCI BIOS NOT FOUND!,10,13,MES2 DB PCI CONFIG READ ERROR!DIS1 DB PCI ADDRESS 0 $;DIS5 DB BIOS NOT SUPPER!DIS6 DB READ PCI BOARD FAIL!-PCI Conf
7、iguration Space Registers-BN DB ? ;BUS NUMBERDN_FN DB ?Device Number and Function Number MY_DATA ENDsMY_CODE SEGMENT PARA CODEMY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK.386 ;386模式编译 START: MOV AX,MY_DATA MOV DS,AX MOV ES,AX MOV AX,MY_STACK MOV SS,AX CALL FINDPCI ;查找PCI卡资源并显示 MOV CX,
8、word ptr IO_base_address AND CX,0FFFCH ADD D8251_0,CX ADD D8251_1,CX ADD P8254_T0,CX ADD P8254_MODE,CX MOV DX,PC16550_3 ;DLAB为1允许访问波特率寄存器 MOV AL,82H OUT DX,AL MOV DX,PC16550_0 ; MOV AL,18H MOV DX,PC16550_1 ; MOV AL,00HDLAB为0 MOV AL,03H ;附加奇偶标志位选择,无校验,1位停止位,8位字符03 MOV DX,PC16550_4 ;RTS、DTR置0:请求发送、数据终
9、端就绪 MOV AL,03H中断允许寄存器IER,屏蔽中断 MOV DX,P8254_MODE MOV AL,36H ;计时器0,先低后高,方式3,二进制计数 MOV DX,P8254_T0 MOV AL,13H ;计数初值 晶振6MHz 波特率4800BIT,分频频率为(6000/76.8=4EH) MOV DX,D8251_1 MOV AL,4EH ;异步1个停止位,无奇偶校验,8位字符,波特率为=发送(接收)时钟/16 OUT DX,AL MOV AL,37H ;不搜索,不复位,请求发送,错误标志复位,正常通信,允许接收,数据准备好,允许发送AGAIN: MOV AH,30H ;发送初值
10、NEXT: MOV DX,D8251_1NEXT1: IN AL,DX RCR AL,1 ;检测TXRDY是否为0,即判断发送是否准备好 JNC NEXT1 CALL DELAY MOV DX,D8251_0 MOV AL,AH INC AH CALL RECEIVE CMP AH,39H ;为9赋初值 JBE NEXT JMP AGAINERROR: MOV DX,OFFSET MES2 ;显示读错误信息 MOV AH,09H INT 21HEXIT: MOV AX,4C00H INT 21H MY_PROC ENDp DELAY PROC NEAR ;延时程序 PUSHF PUSH AX
11、PUSH DX PUSH CX MOV CX,-1 LOOP $ ;延时 POP CX POP DX POP AX POPF RETDELAY ENDpRECEIVE PROC NEARRECEIVE1: MOV DX,PC16550_5 ;接收缓冲区是否满 IN AL,DX AND AL,01H JZ RECEIVE1 ;为0未满,继续 CALL DELAY MOV DX,PC16550_0 ;PC机接收数据 MOV DL,AL MOV AH,02H RECEIVE ENDpBREAK PROC NEAR ;按任意键退出 MOV AH,06H MOV DL,0FFH JE RETURN MO
12、V AX,4C00HRETURN: POP DXBREAK ENDP* /* 找卡子程序 */* FUNCTION CODEIO_port_addre EQU 0CF8H ;32位配置地址端口IO_port_data EQU 0CFCH ;32位配置数据端口IO_PLX_ID EQU 200810B5H ;PCI卡设备及厂商IDBADR0 = 10H ;基地址寄存器0BADR1 = 14H ;基地址寄存器1BADR2 = 18H ;基地址寄存器2BADR3 = 1CH ;基地址寄存器3FINDPCI PROC NEAR ; PUSHAD PUSHFD MOV EBX,080000000HFIN
13、DPCI_next: ADD EBX,100H CMP EBX,081000000H JNZ findpci_continue MOV DX,offset pcicardnotfind ;显示未找到PCI卡提示信息 MOV AH,4CH INT 21H ;退出findpci_continue: MOV DX,IO_port_addre MOV EAX,EBX OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 CMP EAX,IO_PLX_ID JNZ findpci_next ;检查是否发现PCI卡 ADD EAX,BADR1 OUT D
14、X,EAX ; IN EAX,DX ; MOV dword ptr IO_9054base_address,EAX AND EAX,1 JZ findPCI_next ;检查是否为i/o基址信息 MOV EAX,dword ptr IO_9054base_address AND EAX,0fffffffeh MOV dword ptr IO_9054base_address,EAX ;去除i/o指示位并保存 ADD EAX,BADR2 MOV dword ptr IO_base_address,EAX MOV EAX,dword ptr IO_base_address MOV dword pt
15、r IO_base_address,EAX ; MOV DX,offset good ;显示开始执行程序信息 POPfd POPadfindPCI ENDPMY_CODE ENDS END START七、实验心得通过实验,进一步了解了串行通信的原理以及通过串行方式发送和接收数据的过程。输出数据是以字符为单位首先送到数据发送保持寄存器中,再进入发送移位寄存器,这些过程都是并行方式传送的。在发送移位寄存器中,按照事先和接收端约定的字符传输格式,加上起始位,奇偶校验位和停止位,然后再以约定的波特率先低位后高位地发送出去。在实验中,选择的时钟频率脉冲为1MHz,波特率选择为1200B/s 。串行通信时,构成一个字符或数据的各位按时间先后,从低位到高位一位一位地传送,占用较少的通信线,使成本降低,因而适合远距离的传输。串行通信常用作计算机与低速外设或计算机之间传输信息。当传输距离较远时,可采用通信线路(如线、无线电台等)。此外在使用时,发送及接收端必须具备并行-串行转换电路。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1