8251串行通讯实验
安徽师范大学数计学院实验报告
专业名称11计科
课程微机原理
实验名称串行通信实验姓名
学号110704012
8251 可编程串行口与PC 机通讯实验
一、实验目的
(1) 掌握8251 芯片的结构和编程,掌握微机通讯的编制。
(2) 学习有关串行通讯的知识。
(3) 学习PC 机串口的操作方法。
二、实验说明
1、8251 信号线
8251 是CPU 与外设或Mode 之间的接口芯片,所以它的信号线分为两组:一组是用于与CPU 接口
的信号线,另一组用于与外设或Mode 接口。
(1)与CPU 相连的信号线:
除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有:
RESET:复位。通常与系统复位相连。
CLK:时钟。由外部时钟发生器提供。
C/D:控制/数据引脚。
TxRDY:发送器准备好,高电平有效。
TxE:发送器空,高电平有效。
RxRDY:接收器准备好,高电平有效。
SYNDET/BRKDET:同步/中止检测,双功能引脚。
(2)与外设或Mode 相连的信号线:
DTR:数据终端准备好,输出,低电平有效。
DSR:数据装置准备好,输入,低电平有效。
RTS:请求发送,输出,低电平有效。
CTS:准许传送,输入,低电平有效。
TxD:发送数据线。
RxD:接收数据线。
TxC:发送时钟,控制发送数据的速率。
RxC:接收时钟,控制接收数据的速率。
2、8251 的初始化编程和状态字
8251 是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。初始化编
程包括CPU 写方式控制字和操作命令字到8251 同一控制口,在初始化编程时必须按一定的顺序。如
下面的流程图:
三、实验原理图
四、实验内容
本实验由实验器发送一串字符0~9,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 定时器电路的GATE 接+5V
e. 8251 选通线CS 与ISA 总线接口模块的0000H 相连,8254 选通线CS 与ISA 总线接口模块的0020H 相连。
f. 8251 及8254 的WR 连到8086 主模块的,8251 及格8254 的RD 连8086 主模块的RD。
g. 8251 及8254 模块的数据(D0~D7)、地址线(A0~A7)分别连
到主模块的数据(AD0~AD7)、地址线(A0~A7)。
(2)PC 机设置:进入WINDOWS 附件——>通讯——>超级终端。进入终端后在“连接时使用”下
拉框选择你所使用的COM 口,波特率设置为4800,数据位8 位,奇偶校验位无,停止位1 位,流量
控制无。等待接收数据。
(3)编译、运行程序(8251xp.asm),运行程序前先按硬件复位,正常运行后应在PC 机屏幕上循环显示“Qingdong Microcomputer Institute ”
六、实验代码
MY_STACK SEGMENT PARA 'STACK'
DB 100 DUP(?)
MY_STACK ENDS
MY_DATA SEGMENT PARA 'DATA'
IO_9054base_address DB 4 DUP(0) ;PCI卡9054芯片I/O基地址暂存空间
IO_base_address DB 4 DUP(0)
pcicardnotfind DB 0DH,0AH,'pci card not find or address/interrupt error !!!',0DH,0AH,'$'
GOOD DB 0DH,0AH,'The Program is Executing !',0DH,0AH,'$'
D8251_0 DW 0000H ;DLAB=0:接收数据寄存器,发送保持寄存器;DLAB=1:波特率除数寄存器低位
D8251_1 DW 0001H ;DLAB=0:中断允许寄存器;DLAB=1:波特率除数寄存器高位
P8254_T0 DW 0020H
P8254_MODE DW 0023H
PC16550_0 EQU 03F8H ;DLAB=0:接收数据寄存器,
发送保持寄存器;DLAB=1:波特率除数寄存器低位
PC16550_1 EQU 03F9H ;DLAB=0:中断允许寄存器;DLAB=1:波特率除数寄存器高位
PC16550_3 EQU 03FBH ;线路控制寄存器LCR
PC16550_4 EQU 03FCH ;MODEM控制寄存器MCR PC16550_5 EQU 03FAH ;线路状态寄存器LSR DELAY_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 Configuration Space Registers-------------------------------
BN DB ? ;BUS NUMBER
DN_FN DB ? ;Device Number and Function Number
MY_DATA ENDs
MY_CODE SEGMENT PARA 'CODE'
MY_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,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
OUT DX,AL
MOV DX,PC16550_1 ;波特率除数寄存器高位
MOV AL,00H
OUT DX,AL
MOV DX,PC16550_3 ;DLAB为0
MOV AL,03H ;附加奇偶标志位选择,无校验,1位停止位,8位字符03
OUT DX,AL
MOV DX,PC16550_4 ;RTS、DTR置0:请求发送、数据终端就绪
MOV AL,03H
OUT DX,AL
MOV DX,PC16550_1 ;中断允许寄存器IER,屏蔽中断
MOV AL,00H
OUT DX,AL
MOV DX,P8254_MODE
MOV AL,36H ;计时器0,先低后高,方式3,二进制计数
OUT DX,AL
MOV DX,P8254_T0
MOV AL,13H ;计数初值晶振6MHz 波特率4800BIT,分频频率为(6000/76.8=4EH)
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,D8251_1
MOV AL,4EH ;异步1个停止位,无奇偶校验,8位字符,波特率为=发送(接收)时钟/16
OUT DX,AL
MOV AL,37H ;不搜索,不内复位,请求发送,错误标志复位,正常通信,允许接收,数据准备好,允许发送OUT DX,AL
AGAIN: MOV AH,30H ;发送初值
NEXT: MOV DX,D8251_1
NEXT1: IN AL,DX
RCR AL,1 ;检测TXRDY是否为0,即判断发送是否准备好
JNC NEXT1
CALL DELAY
MOV DX,D8251_0
MOV AL,AH
OUT DX,AL
INC AH
CALL RECEIVE
CMP AH,39H ;为9赋初值
JBE NEXT
JMP AGAIN
;
ERROR: MOV DX,OFFSET MES2 ;显示读错误信息MOV AH,09H
INT 21H
EXIT: MOV AX,4C00H
INT 21H
MY_PROC ENDp
DELAY PROC NEAR ;延时程序
PUSHF
PUSH AX
PUSH DX
PUSH CX
MOV CX,-1
LOOP $ ;延时
POP CX
POP DX
POPF
RET
DELAY ENDp
RECEIVE PROC NEAR
PUSHF
PUSH AX
PUSH DX
PUSH CX
RECEIVE1: MOV DX,PC16550_5 ;接收缓冲区是否满IN AL,DX
AND AL,01H
JZ RECEIVE1 ;为0未满,继续
CALL DELAY
MOV DX,PC16550_0 ;PC机接收数据
IN AL,DX
MOV DL,AL
MOV AH,02H
INT 21H
POP CX
POP DX
POPF
RET
RECEIVE ENDp
;
BREAK PROC NEAR ;按任意键退出PUSHF
PUSH AX
PUSH DX
MOV AH,06H
MOV DL,0FFH
INT 21H
JE RETURN
MOV AX,4C00H
INT 21H
RETURN: POP DX
POP AX
POPF
RET
BREAK ENDP
;
;**************************************************** *************************
; /* 找卡子程序 */
;**************************************************** *************************
;
;FUNCTION CODE
IO_port_addre EQU 0CF8H ;32位配置地址端口
IO_port_data EQU 0CFCH ;32位配置数据端口
IO_PLX_ID EQU 200810B5H ;PCI卡设备及厂商ID
BADR0 = 10H ;基地址寄存器0 BADR1 = 14H ;基地址寄存器1 BADR2 = 18H ;基地址寄存器2 BADR3 = 1CH ;基地址寄存器3
FINDPCI PROC NEAR ;查找PCI卡资源并显示PUSHAD
PUSHFD
MOV EBX,080000000H
FINDPCI_next:
ADD EBX,100H
CMP EBX,081000000H
JNZ findpci_continue
MOV DX,offset pcicardnotfind ;显示未找到PCI卡提示信息
MOV AH,09H
INT 21H
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卡
MOV DX,IO_port_addre
MOV EAX,EBX
ADD EAX,BADR1
OUT DX,EAX ;写地址口
MOV DX,IO_port_data
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指示位并保存
MOV DX,IO_port_addre
MOV EAX,EBX
ADD EAX,BADR2
OUT DX,EAX ;写地址口
MOV DX,IO_port_data
IN EAX,DX ;读数据口
MOV dword ptr IO_base_address,EAX
AND EAX,1
JZ findPCI_next ;检查是否为i/o基址信息
MOV EAX,dword ptr IO_base_address
AND EAX,0fffffffeh
MOV dword ptr IO_base_address,EAX ;去除i/o指示位并保存
MOV DX,offset good ;显示开始执行程序信息
MOV AH,09H
INT 21H
POPfd
POPad
RET
findPCI ENDP
MY_CODE ENDS
END START
七、实验心得
通过实验,进一步了解了串行通信的原理以及通过串行方式发送和接收数据的过程。输出数据是以字符为单位首先送到数据发送保持寄存器中,再进入发送移位寄存器,这些过程都是并行方式传送的。在发送移位寄存器中,按照事先和接收端约定的字符传输格式,加上起始位,奇偶校验位和停止位,然后再以约定的波特率先低位后高位地发
8251串行通讯实验
安徽师范大学数计学院实验报告 专业名称11计科 课程微机原理 实验名称串行通信实验姓名 学号110704012
8251 可编程串行口与PC 机通讯实验 一、实验目的 (1) 掌握8251 芯片的结构和编程,掌握微机通讯的编制。 (2) 学习有关串行通讯的知识。 (3) 学习PC 机串口的操作方法。 二、实验说明 1、8251 信号线 8251 是CPU 与外设或Mode 之间的接口芯片,所以它的信号线分为两组:一组是用于与CPU 接口 的信号线,另一组用于与外设或Mode 接口。 (1)与CPU 相连的信号线: 除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有: RESET:复位。通常与系统复位相连。 CLK:时钟。由外部时钟发生器提供。 C/D:控制/数据引脚。 TxRDY:发送器准备好,高电平有效。
TxE:发送器空,高电平有效。 RxRDY:接收器准备好,高电平有效。 SYNDET/BRKDET:同步/中止检测,双功能引脚。 (2)与外设或Mode 相连的信号线: DTR:数据终端准备好,输出,低电平有效。 DSR:数据装置准备好,输入,低电平有效。 RTS:请求发送,输出,低电平有效。 CTS:准许传送,输入,低电平有效。 TxD:发送数据线。 RxD:接收数据线。 TxC:发送时钟,控制发送数据的速率。 RxC:接收时钟,控制接收数据的速率。 2、8251 的初始化编程和状态字 8251 是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。初始化编 程包括CPU 写方式控制字和操作命令字到8251 同一控制口,在初始化编程时必须按一定的顺序。如 下面的流程图:
串口通信实验报告全版.doc
实验三双机通信实验 一、实验目的 UART 串行通信接口技术应用 二、实验实现的功能 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 三、系统硬件设计 (1)单片机的最小系统部分 (2)电源部分 (3)人机界面部分
数码管部分按键部分 (4)串口通信部分 四、系统软件设计 #include
sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; uint m=0,i=0,j; uchar temp,prt; /***y延时函数***/ void delay(uint k) { uint i,j; //定义局部变量ij for(i=0;i { m=1; //KEY1键按下 return(m); } if(H2==0) { m=4; //KEY4键按下 return(m); } } } if(L2==0) { delay(5); if (L2==0) { L2=0;H1=1;H2=1; if(H1==0) { m=2; //KEY2键按下 return(m); } if(H2==0) { m=5; //KEY5键按下 return(m); } } } if(L3==0) { delay(5); if (L3==0) { L3=0;H1=1;H2=1; if(H1==0) { m=3; //KEY3键按下 课程名称:Zigbee技术及应用实验项目:串口通信实验指导教师: 专业班级:姓名:学号:成绩: 一、实验目的: (1)认识串口通信的概念; (2)学习单片机串口通信的开发过程; (3)编写程序,使单片机与PC通过串口进行通信。 二、实验过程: (1)根据实验目的分析实验原理; (2)根据实验原理编写C程序; (3)编译下载C程序,并在实验箱上观察实验结果。 三、实验原理: 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干条控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分8位才能传送完毕,如图3-1所示。 图2-1串行通信过程 串行通信制式: (1)单工制式 这种制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。 (2)半双工制式 这种制式是指通信双方都具有发送器和接收器,即可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。 (3)全双工制式 这种制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时能发送。 三种制式分别如图3-2所示 图3-2串行通信制式 3.1硬件设计原理 CC2530有两个串行通信接口USART0和USART1,两个USART具有同样的功能,可已分别运行于UART模式和同步SPI模式。 CC2530的两个串行通信接口引脚图分布如表3-1所示 表3-1 CC2530串行通信口引脚图分布 本实验CC2530模块使用的是USART1的位置2,P1_6和P1_7。 串行通信实验报告 班级学号日期 一、实验目的: 1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串口通讯的程序编写方法。 二、实验要求 1.单机自发自收实验:实现自发自收。编写相应程序,通过发光二极管观察收发状态。 2.利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。 三、实验说明 通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上。 连线方法:在第一个实验中将一台实验箱的RXD和TXD相连,用P1.0连接发光二极管。波特率定为600,SMOD=0。 在第二个实验中,将两台实验箱的RXD和TXD交叉相连。编写收发程序,一台实验箱作为发送方,另一台作为接收方,编写程序,从内部数据存储器20H~3FH单元中共32个数据,采用方式1串行发送出去,波特率设为600。通过运行程序观察存储单元内数值的变化。 四、程序 甲方发送程序如下: ORG 0000H LJMP MAIN ORG 0023H LJMP COM_INT ORG 1000H MAIN: MOV SP,#53H MOV 78H,#20H MOV 77H,00H MOV 76H,20H MOV 75H,40H ACALL TRANS HERE: SJMP HERE TRANS: MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1 MOV SCON,#40H MOV IE,#00H CLR F0 MOV SBUF,78H WAIT1: JNB TI,WAIT1 CLR TI MOV SBUF,77H WAIT2: JNB TI,WAIT2 CLR TI MOV SBUF,76H WAIT3: JNB TI,WAIT3 CLR TI 8251串行通讯实验 一.基本实验内容: 实现二台PC机之间的双机通讯。即甲机输入的键值发送到乙机CRT上显示,反之亦然。二原理图及连线: 1.8251CS连208~20FH (波特率2400) 2.9芯电缆对接二机的RS-232口 三.参考程序 D8251 EQU 208H Z8251 EQU 20aH DATA SEGMENT MESS DB '按下!后返回DOS.',0DH,0AH,'$' DATA ENDS STACK SEGMENT STA DW 32 DUP() TOP DW STACK ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV DX,Z8251 ;初始化8251 MOV AL,40H OUT DX,AL MOV CX,1000h LOOP $ MOV AL,0CEH ;设置为8个数据位,两个停止位波特率因子为16 OUT DX,AL ;无奇偶校验位 MOV CX,1000h LOOP $ MOV AL,25H ;设为请求发送,允许发送,允许接收状态 OUT DX,AL MOV CX,1000h LOOP $ ;NIT 8251 END REC: MOV DX,Z8251 MOV AH,02H WAIT9: IN AL,DX ;有数据送到吗 AND AL,AH JZ SEND ;没有数据送到则跳转至发送 MOV DX,D8251 ;有数据送到则从数据缓冲区读入 IN AL,DX MOV DL,AL MOV AH,02H ;显示在屏幕上 INT 21H CMP AL,'!' JE ED ;接收到结束符则返回DOS JMP REC ;不是结束符则继续接收 ED: MOV AX,4C00H INT 21H SEND: MOV CX,1000h LOOP $ MOV DX,Z8251 MOV AH,01H WAIT8: IN AL,DX AND AL,AH JZ WAIT8 ;发送缓冲器不空则等待 MOV DL,0FFH MOV AH,06H INT 21H JZ REC ;无键按下则跳回"接收"处 MOV DX,D8251 ;有键按下则发送相应字符 OUT DX,AL CMP AL,'!' ;是结束字符则返回DOS JE ED1 JMP REC ;不是结束字符则跳回"接收"处ED1: MOV AX,4C00H INT 21H MAIN ENDP CODE ENDS 单片机实验报告 实验名称:串行通信实验 姓名:高知明 学号:110404320 班级:通信3 实验时间:2014-6-11 南京理工大学紫金学院电光系 一、实验目的(四号+黑体) 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD\RXD口; 3、了解MAX232芯片的作用; 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。他有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H)。发送缓冲器只能写入,不能读出,接受缓冲器只能读出,不能写入。要发送的字节数据直接写入发送缓冲器。SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号昨接受或发送移位寄存器的位移时钟。TI与RI分别为发送完数据的中断标志,用来想CPU发中断请求。 三、实验内容 1、发送信号 1)C51程序: #include串口通信实验讲解
串行通信实验报告
8251串行通讯实验
单片机串行通信实验