當前位置:首頁 » 編程語言 » c語言串口初始化

c語言串口初始化

發布時間: 2023-08-04 15:07:36

Ⅰ 誰有上位機與下位機的串口通訊代碼(c語言的)

兄弟,下面是我自己寫的,希望給你幫助,把數據用send_one_uart()這個函數直接發送到串口就行了!最後求採納,哈哈!
//-----頭文件
#include<reg52.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語言程序代碼

#include <AT89X51.H>//單片機51頭文件,存放著單片機的寄存器
unsigned char dat; //用於存儲單片機接收發送緩沖寄存器SBUF裡面的內容
sbit gewei=P2^2; //個位選通定義
sbit shiwei=P2^3; //十位選通定義
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};
//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc) //延時程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED() //LED顯示接收到的數據
{
shiwei=0;
P0=~table[dat/16];
Delay(8);
shiwei=1;
gewei=0;
P0=~table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()//主程序功能:實現接收數據並把接收到的數據原樣發送回去///////
{
Init_Com();//串口初始化
// P1=0xf0;
while(1)
{
if ( RI ) //掃描判斷是否接收到數據,
{
dat = SBUF; //接收數據SBUF賦與dat
RI=0; //RI清零。
SBUF = dat; //在原樣把數據發送回去
}
LED(); //顯示接收到的數據
}
}

Ⅲ 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;
}

Ⅳ VS或者VC6.0編寫的C語言程序,怎樣能夠實現串口數據的收發

1 、Windows API通信函數方法 。與通信有關的Windows API函數共有26個,但主要有關的有: CreateFile() 用 「comn」(n為串口號)作為文件名就可以打開串口。 ReadFile() 讀串口。

2、WriteFile() 寫串口。 CloseHandle() 關閉串口句柄。初始化時應注意CreateFile()函數中串兆鍵口共享方式應設為0,串口為不可共享設備,其它與一般文件讀寫類似。以下給出API實現的源代碼。



3、利用埠函數直接操作 。這種方式主要是採用兩個埠函數_inp(), _outp()實現對串口的讀寫,其中讀埠函數的原型為: int _inp(unsigned shot port) 。該函數從埠讀取一個位元組,埠號為0~65535。 寫埠的函數原型為: nt _outp(unsigned shot port, int databyte) 。

4、 MSComm控制項 。MSComm控制項是微軟開發的專用通信控制項,封裝了串口的所有功能,使用很方便,但在實際應用中要小心對其屬性進行配置。下面詳細說明該類應用方法族坦巧。



熱點內容
埠掃描源碼 發布:2025-02-07 02:31:01 瀏覽:470
androidurl獲取圖片 發布:2025-02-07 02:22:11 瀏覽:482
調用上傳 發布:2025-02-07 02:19:53 瀏覽:84
aix編譯安裝 發布:2025-02-07 02:19:52 瀏覽:906
android界面設計尺寸 發布:2025-02-07 02:16:25 瀏覽:898
zenly安卓為什麼會一直閃 發布:2025-02-07 02:12:02 瀏覽:357
為什麼安卓手機界面總出廣告 發布:2025-02-07 02:10:33 瀏覽:243
plc數據塊怎麼編譯 發布:2025-02-07 02:09:44 瀏覽:98
ct加密 發布:2025-02-07 02:09:03 瀏覽:919
編程差別 發布:2025-02-07 02:06:37 瀏覽:348