
程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom()函数初始化COM1(此函数实际调用BIOS
INT
14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存
分接收端和发送端。接收端:
1·打开com1端口
fd=fopen("/dev/ttys0",方式)
tcgetattr(fd,&oldtio)
3·串口结构体变量newtio清0.
bzero(&newtio,sizeof(newtio))
4·设置串口参数
主要设置比特率、是否忽略奇偶校验错误,启用正规模式等等。
接收端
1·打开com端口
2·取得当前串口值
3·串口结构体变量清0
4·设置串口参数。
发送:#include
<reg52.h>
#include<intrins.h>
#include<string.h>
#define
uchar
unsigned
char
uchar
data
i,j,p,TEST
sbit
INTT0=P3^2
uchar
code
V_35[10]={'V','o','l','t','
','3','.','5',13,10}
void
Init()
void
Delay()
void
Volt_35()
void
main()
{
Init()
while(1)
{
if(TEST)
{
Volt_35()
TEST=0
}
}
}
void
Init()
{
P0=0XFF
//I/O口初始化
P1=0xFF
P2=0XFF
P3=0xFF
SCON=0x50
//设置成串口方式1
T2CON=0x34
TH2=0xff
//晶振11.0592MHZ,波特率9600
TL2=0xdc
RCAP2H=0XFF
RCAP2L=0XdC
EA=1
EX0=1
IT0=1
TEST=0
}
void
Delay()
{
for(i=0i<100i++)
for(j=0j<100j++)
}
void
Volt_35()
{
for(p=0p<10p++)
{
SBUF=V_35[p]
while(!TI)
TI=0
}
}
void
int0svr(void)
interrupt
0
using
1
{
Delay()
if(!INTT0)
{
while(!INTT0)
TEST=1
}
}
接收:
#include
<reg52.h>
#include<intrins.h>
#include<string.h>
#define
uchar
unsigned
char
uchar
data
i
void
Init()
void
main()
{
Init()
while(1)
{
for(i=0i<10i++)
{
while(!RI)
P1=SBUF
RI=0
}
}
}
void
Init()
{
P0=0XFF
P1=0xFF
P2=0XFF
P3=0xFF
SCON=0x50
T2CON=0x34
TH2=0xff
TL2=0xdc
RCAP2H=0XFF
RCAP2L=0XdC
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)