- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一串口通信
实验一 基本串口通信程序设计
实验学时数:2
实验类型:验证型
实验类别:专业实验
每组人数:2人
实验要求:掌握串口通信基本知识,特别是串口通信控制器各寄存器作用;学习串口通信程序调试以及串口通信程序设计方法和技术;
实验内容:
在COMDEBUG中针对串口通信各寄存器进行设置,掌握各寄存器在串口通信中的作用及各参数的含义;
组内通过COMDEBUG实现通信;
学习利用COMDEBUG进行串口通信程序调试的一般方法。
选择采用DOS或者BIOS功能调用实现组内两台计算机的串口通信(组内一人编写发送方程序,另一人编写接收方程序)。
主要仪器设备及其配套数:PC机、串口通信连接线
实验步骤:
(1). COMDEBUG的使用,如下图:
该软件可支持1-64个串行端口;可设置非标准或更高的波特率,不限于列表中的特定波特率;可设置串口的2个输出线路信号DTR/RTS的状态,以及TxD信号的BREAK状态;可实时显示串口的4个输入线路信号CTS/DSR/RING/DCD的状态;可分别清空发送区或接收区的数据;可对发送的数据和接收的数据单独计数。
A.发送数据:
1.发送数据时,可采用手动发送和自动发送,自动发送还可以指定发送的周期。
2.发送区的数据可以按字符方式或16进制方式解释、发送。
3.按字符方式发送时,发送区可输入中英文混合字符。
4.按16进制方式发送时,发送区的每个数据间只需用空格或回车隔开,每个数据只有最低2个16进制字符有效。
5.发送区的数据可以从文件中调入,读入到发送区时,可按字符方式或16进制方式显示。
B.接收数据:
1.接收区的数据可以按字符方式或16进制方式显示。
2.按字符方式接收时,在低速波特率下,可正确接收和显示中英文混合字符。
3.可手动或自动保存接收区内容到指定文件中。自动保存的接收内容长度没有限制。
4.可采用仿超级终端方式操作和显示。
(2)采用C语言实现组内两台计算机的串口通信
A.发送数据:
#include conio.h
#includestdio.h
#include bios.h
#includedos.h
void main()
{
char a;
int i,s;
outportb(0x3fb,0x80);
outportb(0x3f8,0x0c);
outportb(0x3f9,0x30);
outportb(0x3fb,0x03);
outportb(0x3fc,0x03);
do{
if(a=bioskey(1)){
a=bioskey(0)0x0ff;
if(a==27)
exit(0);
else{
s=0;
do{
outportb(0x3f8,a);
putchar(a);
printf(\n);
for(i=0;i6;i++){
delay(10);
s=inportb(0x3fd);
if((s0x01)){
break;
}
}
if(s0x01){
s=inportb(0x3f8);
if(s==1){
printf(next!\n);
}
else{
if(s!=1)
printf(error!\n);
}
}
else{
if(!(s0x01)){
s=0;
printf(out time!\n);
}
}
}
while(s!=1);
}
}
}
while(s);
}
B.接收数据:
#include conio.h
#includestdio.h
#include bios.h
#includedos.h
void main()
{
char a;
int s=1;
outportb(0x3fb,0x80);
outportb(0x3f8,0x0c);
outportb(0x3f9,0x30);
outportb(0x3fb,0x03);
outportb(0x3fc,0x03);
while(1){
if(bioskey(1)){
a=bioskey(0)0x0ff;
if(a==27)
exit(0);
}
else
{
delay(12);
a=inportb(0x3fd);
if(a0x01){
outportb(0x3f8,s);
a=inportb(0x3f8);
putchar(a);
}
}
}
}
(3)利用Win32串口编程在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,
文档评论(0)