导航:首页 > 编程语言 > 串口c语言程序

串口c语言程序

发布时间:2025-02-11 02:31:23

① 急需单片机W78E58B与pc串口通信的C语言程序代码,发送用查询方式,接收用中断方式的程序。

#include <REG52.H>

bit Flag;
unsigned int ReData,SenData;

void main (void) {

SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON= 0x00;
TH1 = 0xFD; //baud reload value 9600、数据位8、停止位1。效验位无 (11.0592)
TL1 = 0xFD;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断

while(1)
{

if (Flag==1)
{
SBUF=SenData; //SUBF接受/发送缓冲器
while(TI==0);
TI=0;
Flag=0;
}

}

}

void ser_int (void) interrupt 4 using 1
{

if(RI == 1) //RI接受中断标志
{
RI = 0; //清除RI接受中断标志
ReData = SBUF; //SUBF接受/发送缓冲器
SenData=ReData;
Flag=1;
}
}

试下这个程序,PC发什么,它就回送什么。

② C语言51单片机串口通信程序求教

串口通讯,首先设置波特率,再设置串口模式,之后就可以收发数据了。比如:

init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
}
send(unsignedchardat)
{
SBUF=dat;
while(TI==0);
TI==0;
}
unsignedcharrecive()
{
unsignedchardd;
if(RI)
{
dd=SBUF;
RI=0;
}
return(dd);
}

③ 51单片机串口通信c语言编程

#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int

sbit ring=P3^7;
sbit CASE1=P2^0;
sbit CASE2=P2^1;
sbit CASE3=P2^2;
sbit CASE4=P2^3;

uchar se=0,re=0;
uchar temp=0;

void wait(uint cnt)
{
while(--cnt);
}

//串口发送程序
void send(uchar se)
{
SBUF=se; //发送数据
while(TI == 0);
TI = 0;
}
//串口接收程序
uchar receive(void)
{
re=SBUF; //接收数据
while(RI==0);
RI=0;
return re;
}
//串口初始化
void sinti(void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1;
}
void delay(int cnt)
{
while(--cnt);
}

//主程序
int main (void)
{
int i;
sinti(); //串口初始化程序
ring=1;
while(1)
{
while (1)
{
if(CASE1==0)
{
send('a');
ring=0;
break;
}
if(CASE2==0)
{
send('b');
ring=0;
break;
}
if(CASE3==0)
{
send('c');
ring=0;
break;
}
if(CASE4==0)
{
send('d');
ring=0;
break;
}
}
if(ring==0)
{
wait(60000);
ring=1;
}
for(i=0;i<10000;i++);
}
}
//串口中断程序
void UART_SER (void) interrupt 4 //串行中断服务程序
{

if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
temp=SBUF;
}
if(TI) //如果是发送标志位,清零
TI=0;
}

④ 如何用c语言编写向串口发送指令的程序 如0x01

#include<windows.h>
#include<stdio.h>
intmain()
{
HANDLEhComm;

hComm=CreateFile(“COM1”,//forCOM1—COM9only
GENERIC_READ|GENERIC_WRITE,//Read/Write
0,//NoSharing
NULL,//NoSecurity
OPEN_EXISTING,//Openexistingportonly
0,//NonOverlappedI/O
NULL);

if(hComm==INVALID_HANDLE_VALUE)
printf(“Errorinopeningserialport”);
else
printf(“openingserialportsuccessful”);

charlpBuffer[]=0x01;
DWORDdNoOFBytestoWrite;//Noofbytestowriteintotheport
DWORDdNoOfBytesWritten=0;//Noofbyteswrittentotheport
dNoOFBytestoWrite=sizeof(lpBuffer);

Status=WriteFile(hComm,//HandletotheSerialport
lpBuffer,//Datatobewrittentotheport
dNoOFBytestoWrite,//Noofbytestowrite
&dNoOfBytesWritten,//Byteswritten
NULL);

CloseHandle(hComm);//ClosingtheSerialPort

return0;
}

⑤ 一道51单片机的C语言程序,关于串口通讯的,很简单......

#include<reg52.h> //增强型52寄存器的定义
#define uchar unsigned char //用uchar代替unsigned char
#define uint unsigned int //用uint代替unsigned int
unsigned char flag,a,i; //定义变量flag,a,i
uchar code table[]="I receive,thanks"; //定义一个字符串数组

void init()
{
} //设置工作方式,这个懂。

void main()
{
init(); //系统初始化,你懂的
while(1) //主循环部分,一直运行
{
if(flag==1) //等待flag标志位置位,当接收到数据的时候在串口接收中断中置位
{
ES=0; //禁止串口中断,但是注意发送中断标志位的置位仍然正常
for(i=0;i<18;i++) //for循环为了一个个把之前定义的字符串
{
SBUF=table[i]; //向串口收发缓冲器中写入回应的内容“I receive,thanks”
while(!TI); //等待发送完成,发送中断标志被置一,否则while循环一直进行
TI=0; //清除发送中断标志位
}
SBUF=a; //继续通过串口向串口收发缓冲器发送a,回显收到的数据
while(!TI); //等待发送完成
TI=0; //清除发送中断标志位
ES=1; //重新使能串口中断
flag=0; //清除flag,为了等待下一次接收
}
}
}
void serial() interrupt 4 //串口中断服务程序,优先级为4
{
RI=0; //当接收完成之后RI被置一,发生串口中断,清标志位
a=SBUF; //读取收到的字符,并赋给变量a
flag=1; //置接收完成标志flag为一,便于主程序中发送响应
}

阅读全文

与串口c语言程序相关的资料

热点内容
开机不选择系统文件系统 浏览:612
网络广告的发展前景 浏览:430
iphone4s录音 浏览:651
off文件格式 浏览:488
钢笔工具确定选区 浏览:922
win10虚拟ram怎么设置 浏览:607
苹果手机怎么开通app的权限 浏览:764
音乐文件怎么改mp3 浏览:833
游侠9怎么升级成5级 浏览:947
编程可以做什么有趣的事 浏览:569
乡村大数据健康码二维码怎么弄 浏览:118
qq异地怎么取消 浏览:207
新人一角购包邮的app有哪些 浏览:198
三菱编程窗口怎么缩小编程距离 浏览:401
将阿拉伯数字转换为英文美元表述的小程序 浏览:810
当前nginx配置文件目录 浏览:856
vivo云服务在哪个文件夹 浏览:527
linuxshm无法挂在 浏览:210
代码大全第三 浏览:449
重启电脑桌面文件不见了如何找回 浏览:621

友情链接