单片机计算机通信定义,单片机与计算机串行通信的心得体会

参数com是串口号,COM1为1,COM2为2。bps是所需的波特率。这里是用BIOScom函数实现初始化的大部分功能。若按照前边给出的8250初始化步骤,可以用下列程序段对COM1进行初始化:

outportb (0x3fb ,0x80) ;

outportb (0x3f9 ,0) ;

outportb (0x3f8 ,0x30) ;

outportb (0x3fb ,0x03) ;

outportb (0x3f9 ,0) ;

outportb (0x3fc ,0) ;

下面是写串口函数和读串口函数:

void outcom(int com ,char ch)

{int st-a ,io-a ;

st-a = (com - 1) ? 0x2fd :0x3fd ;

io-a = (com - 1) ? 0x2f8 :0x3f8 ;

while ( ! (inportb (st-a) &0x20) ) ;

outportb (io-a ,ch) ;

}

int incom(int com ,char 3 ch)

{int st-a ,io-a ;

st-a = (com - 1) ? 0x2fd :0x3fd ;

io-a = (com - 1) ? 0x2f8 :0x3f8 ;

if (inportb (st-a) &0x01)

{ 3 ch = inportb (io-a) ;

return 1 ;}

else return 0 ;

}

outcom函数将ch从com指定的串口发送出去,incom函数从com指定的串口读取字符,若成功则返回1并改写ch单元。Incom函数不等待串口接收完毕,若无数据可读则立即返回,可以在主调函数中等待。

dfae184114d19f321c573aa2835533c1.png

现在,我们可以用右图所示的连接进行计算机和单片机之间的串行通信了,使用如下程序可以实现通信的实验:

# include″dos. h″

# include″bios. h″

main ()

{int i ;

char ch = 65 ;

initcom(1 ,2400) ;

for (i = 0 ;i < 256 ;i + + )

{outcom(1 ,i) ;

printf (″%c″,i) ;

while ( ! incom(1 , &ch) ) ;

printf (″- %c″,ch) ;

}

printf (″\ n″) ;

getch () ;

}

该程序发送一个字符后,等待接收,若发送的字符和接收的字符一致,表明通信成功。

读者可以在此基础上定义通信协议,完成串口通信的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值