導航:首頁 > 編程語言 > 串口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語言程序相關的資料

熱點內容
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
安卓多屏互動開發教程 瀏覽:745
虛擬機拉文件 瀏覽:640

友情鏈接