正文
c语言串口通讯函数 c语言串口通信
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
谁有上位机与下位机的串口通讯代码(C语言的)
兄弟,下面是我自己写的,希望给你帮助,把数据用send_one_uart()这个函数直接发送到串口就行了!最后求采纳,哈哈!
//-----头文件
#includereg52.h
//-----定义全局变量
unsigned
char
temp;
/***************************************************
**
函数名称:
uart_init
**
功能描述:
串口初始化函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
uart_init(void)
{
scon
=
0x50;
//-----scon:
模式
1,
8-bit
uart,
使能接收
tmod
|=
0x20;
//-----tmod:
timer
1,
mode
2,
8-bit
重装
th1
=
0xfd;
//-----th1:
重装值
9600
波特率
晶振
11.0592mhz
tr1
=
1;
//-----tr1:
timer
1
打开
es
=
1;
//-----打开串口中断
ea
=
1;
//-----打开总中断
}
/***************************************************
**
函数名称:
sendbyte
**
功能描述:
发送字节函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
sendbyte(unsigned
char
dat)
{
sbuf
=
dat;
while(!ti);
ti
=
0;
}
/***************************************************
**
函数名称:
sendstr
**
功能描述:
发送字符串函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
sendstr(unsigned
char
*s)
{
while(*s!='\0')
{
sendbyte(*s);
s++;
}
}
/***************************************************
**
函数名称:
main
**
功能描述:
主函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
main
(void)
{
uart_init();
//-----串口初始化
while(1)
{
if(temp=='h''i')
{
temp=0;
sendstr("hello");
}
}
}
/***************************************************
**
函数名称:
uart_ser
**
功能描述:
串口中断服务子函数
**
输
入:无
**
输
出:
无
**
说
明:
无
****************************************************/
void
uart_ser
(void)
interrupt
4
//-----串行中断服务程序
{
if(ri)
//-----判断是接收中断产生
{
ri=0;
//-----标志位清零
temp=sbuf;
//-----读入缓冲区的值
}
}
c语言串口通讯过程?
分接收端和发送端。
接收端:
1·打开com1端口
fd=fopen("/dev/ttys0",方式);
2·取得当前串口值,保存到结构体变量oldtio
tcgetattr(fd,oldtio);
3·串口结构体变量newtio清0.
bzero(newtio,sizeof(newtio))
4·设置串口参数
主要设置比特率、是否忽略奇偶校验错误,启用正规模式等等。
接收端
1·打开com端口
2·取得当前串口值
3·串口结构体变量清0
4·设置串口参数。
C语言变成实现串口收发数据
#include reg51.h
#include intrins.h
unsigned char key_s, key_v, tmp;
char code str[] = "welcome! \n\r";
void send_str();
bit scan_key();
void proc_key();
void delayms(unsigned char ms);
void send_char(unsigned char txd);
sbit K1 = P1^4;
main()
{
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
SCON = 0x50; // 设定串行口工作方式
PCON = 0xef; // 波特率不倍增
TR1 = 1; // 启动定时器1
IE = 0x0; // 禁止任何中断
while(1)
{
if(scan_key()) // 扫描按键
{
delayms(10); // 延时去抖动
if(scan_key()) // 再次扫描
{
key_v = key_s; // 保存键值
proc_key(); // 键处理
}
}
if(RI) // 是否有数据到来
{
RI = 0;
tmp = SBUF; // 暂存接收到的数据
P0 = tmp; // 数据传送到P0口
send_char(tmp); // 回传接收到的数据
}
}
}
bit scan_key()
// 扫描按键
{
key_s = 0x00;
key_s |= K1;
return(key_s ^ key_v);
}
void proc_key()
// 键处理
{
if((key_v 0x01) == 0)
{ // K1按下
send_str(); // 传送字串"welcome!...
}
}
void send_char(unsigned char txd)
// 传送一个字符
{
SBUF = txd;
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
}
void send_str()
// 传送字串
{
unsigned char i = 0;
while(str[i] != '\0')
{
SBUF = str[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i 120; i++);
}
}
拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
单片机串口232通信c语言
我写的串口通信代码比较长,给几个关键函数你吧,可实现PC与单片机的双工通信
/*串口通讯 单片机晶振:11.0592MHz
T1工作于方式2 波特率=2^smod*fosc/32/12/(256-X)*/
#includecommon.h
void do_uart(void); //串口接收执字符时的操作
/*串口发送字符串 */
void sendstr(uchar *p)
{
while(*p!='\0')
{ SBUF=*p; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI=0; //清零发送标志位
p++; //指针加1
cnt_s++; //发送计数
}
}
/*串口接收中断函数*/
void int_rec(void) interrupt 4 using 2
{
if(RI) //查询接收标志位(有数据发送过来时置为1)
{
RI = 0; //接收标志位清零
// sendchar(SBUF);//让从电脑上传到单片机的数据,传回的电脑显示
do_uart();//对接受到得字符操作
}
}
/*串口初始化*/
void com_init(uint baud)
{
SCON = 0x50; //串口工作方式为1,串行允许接受
TMOD = 0x21; //定时器1工作在方式2 定时器0工作在方式1
//PCON = 0x80; //SMOD = 1; 波特率加倍
TH1=256-fosc/32/12/baud;
TL1=TH1;
ES = 1; //开串口中断
TR1 = 1; //允许定时器1工作
EA = 1; //开总中断
}
void sendchar(uchar uart_dat) //串口发送字符函数
{
SBUF = uart_dat; //待发送的数据写入缓冲区
while(!TI); //等待发送完成
TI = 0; //清零发送标志位
cnt_s++; //发送计数
}
c语言串口通信代码的理解
串口通信用VB是最简单c语言串口通讯函数的c语言串口通讯函数,MSCOMM控件就可以c语言串口通讯函数了。
c语言怎么实现串口通信
编程原理
程序1为查询通信方式接口程序,为一典型的数据采集例程。其中bioscom()函数初始化COM1(此函数实际调用BIOS
INT
14H中断0号功能)。这样在程序中就避免了具体设置波特率因子等繁琐工作,只需直接访问发送/接收寄存器(3F8H)和线路状态寄存
c语言串口通讯函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言串口通信、c语言串口通讯函数的信息别忘了在本站进行查找喔。