串口通讯试验
6.8源代码(ASM&C51)
;发送与接收程序ASM
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP UARTI;转串行中断服务程序
ORG 0030H
MAIN: MOV SP,#70H
MOV 25H,#00H
MOV R0,#30H;30H开始存数
MOV SCON,#50H;串口方式1,REN=1(允许串口接收数据)
MOV TMOD,#20H;定时器1作为波特率发生器,工作模式为2
MOV PCON,#00H;SMOD=0
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1;定时器开始计数
SETB EA
SETB ES
LOOP: LCALL FSAT;发送程序
LJMP LOOP
;串口中断接收程序
UARTI:
JB RI,recive;RI=1,本机接收中断,转接收程序,RI=0继续
CLR TI
SJMP ENDT
recive: CLR RI
MOV A,SBUF
MOV @R0,A
INC 25H;接收字节计数
RE1: INC R0
MOV A,R0
CJNE A,#5FH,ENDT ;超过50H从30H开始
MOV A,#30H
MOV R0,A
ENDT: RETI
;发送1234指令子程序
FSAT: CLR ES
CLR TI;先对TI进行软件复位
MOV A,#31H;将ASCII码A发送到串口去
MOV SBUF,A
JNB TI,$;如果TI为0说明发送没有完成,程序等待
CLR TI;先对TI进行软件复位
MOV A,#32H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#33H
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,#34H
MOV SBUF,A
JNB TI,$
SETB ES
lcall delay5ms
lcall delay5ms
lcall delay5ms
lcall delay5ms
lcall delay5ms
delay5ms:
MOV R4,#0FFH
DA222: MOV R5,#0FFH
DJNZ R5,$
DJNZ R4,DA222
RET
END
//(C51)
//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收
#include <reg51.h>
#include <string.h>
#define INBUF_LEN 4 //数据长度
unsigned char inbuf1[INBUF_LEN]={'a','b','4','2'};//发送缓冲区
unsigned char inbuf2[50];//接收缓冲区
unsigned char count3;
void init_serialcomm( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFA ; //Baud:4800 fosc=11.0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
}
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}
//向串口发送一个字符串,strlen为该字符串长度
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
} while (k < strlen);
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI) //RI==开始接收
{
unsigned char ch;
RI = 0 ; //软件RI=0
ch=SBUF;
if (ch> 50 )
{
count3= 0 ;
inbuf2[count3]=ch;
}
else
{
count3++;
inbuf2[count3]=ch;
}
}
}
main()
{
init_serialcomm(); //初始化串口
while ( 1 )
{
send_string_com(inbuf1,INBUF_LEN);
}
}
6.9 总结与其他知识
l 串口通信基本接线方法
目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422、RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。
1、DB9和DB25的常用信号脚说明
2、RS232C串口通信接线方法(三线制)
首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连
同一个串口的接收脚和发送脚直接用线相连 对9针串口和25针串口,均是2与3直接相连;
两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)
上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。
3、串口调试中要注意的几点:
不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接;
线路焊接要牢固,不然程序没问题,却因为接线问题误事;
串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果;
强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。
l 串口连接线的制作方法
在电脑的使用中往往会遇到各种各样的连接线。这些连接线外观上好像都差不多,但内部结构完全不同并且不能混用。如果在使用中这些连接线坏了,往往很多使用者都不知道应该怎么办,下面就给出这些常见的连接线的连线方法以便于修理或查找故障。在介绍之前先对一些市场常用名词做出解释。现在所有的接头都可以分为公头和母头两大类。
公头:泛指所有针式的接头。
母头:泛指所有插槽式的接头。
所有接头的针脚有统一规定,在接头上都印好了的,连接时要注意查看。
在接线时没有提及的针脚都悬空不管。
下面给出串口,并口各针脚功能表以供高级用户维护电缆或接头时使用。
25针串口功能一览
针脚 功能
2 发送数据(TXD)
3 接收数据 (RXD)
4 发送请求 (RTS)
5 发送清除 (CTS)
6 数据准备好 (DSR)
7 信号地 (GND)
8 载波检测 (DCD)
20 数据终端准备好 (DTR)
22 振铃指示 (RI)
9针串口功能一览表
针脚 功能
1 载波检测 (DCD)
2 接收数据 (RXD)
3 发送数据(TXD)
4 数据终端准备好 (DTR)
5 信号地 (GND)
6 数据准备好 (DSR)
7 发送请求 (RTS)
8 发送清除 (CTS)
9 振铃指示 (RI)
串口联机线的连接方法
串口联机线主要用于直接把两台电脑的com口连接。比较早一点的AT架构的电脑的串口有为9针,和25针两种,现在的ATX架构的电脑两个串口全部是9针。于是联机线就分为3种(9针对9针串口联机线,9针对25针串口联机线,25针对25针串口联机线)这些直接电缆连接线可以互换的连线方法如下表:
串口连机线一览
9针对9针串口连接
9针母头 9针母头
2 —— 3
3 —— 2
4 —— 6
5 —— 5
6 —— 4
7 —— 8
8 —— 7
25针对25针串口连接
25针母头 25针母头
2 —— 3
3 —— 2
4 —— 5
5 —— 4
6 —— 20
7 —— 7
20 —— 6
9针对25针串口连接
9针母头 25针母头
2 —— 2
3 —— 3
4 —— 6
5 —— 7
6 —— 20
7 —— 5
8 —— 4
串口转接线
这种转接线适用于9针串口和25针串口的转换。
首先,根据需要(9转25或25转9)选择两个转接头。选择方法如下:
9针转25针(9针公头,25针母头)。25针转9针(25针公头,9针母头)。然后使用尽量短的带屏蔽的多芯连接线。连接方法如下表
串口转接线一览
9针接头 25针接头
1 —— 8
2 —— 3
3 —— 2
4 —— 20
5 —— 7
6 —— 6
7 —— 4
8 —— 5
9 —— 22
6.10 如何通过DG3000实现串口通讯?
由于DG3000仿真过程中占用了串口,所以是不能通过硬件进行仿真。不过我们完全可以通过模拟软件来观察结果。方法如下:
例如:我们打开汇编程序界面如下:
然后,点击Target 1 右键,选择:
跳出下面窗口,我们选择如下,然后确定:
然后点击编译:
再点击开始仿真:
出现下面界面:
然后,我们打开:
调出Serial Window #1 ,界面如下:
然后全速运行程序 :
可以观察 Serial Window #1,显示如下:
其中1234就是串口发出的数据。
[ 本帖最后由 HGP7561 于 2008-8-31 12:25 编辑 ]
实验六:串口通讯试验.rar
(2008-08-31 12:25:09, Size: 8.07 KB, Downloads: 6)

最新回复
Jary203704 (2008-8-28 11:03:16)
ybyb8989 (2008-8-28 11:48:44)
LUOSPRING (2008-8-28 15:41:02)