Ⅰ 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);
}
Ⅱ 簡述c51單片機串列口數據發送和數據接收過程
參考吳鑒鷹吧裡面的資料,我也學習單片機,有吳鑒鷹單片機開發板(評價不錯的一款單片機開發板),這樣實驗+理論,然後看視頻學習會更好。有興趣可以看下
串列口初始化編程格式:
SIO: MOV TMOD,#20H ;T1作波特率發生器
MOV TH1,#X ;定時初值選定波特率
MOV TL1,#X MOV PCON,#00H ;SMOD=0,就是波特率不增倍CLR TI ;清除發送中斷標志SETB TR1 ;打開定時器1 2、發送程序
查詢方式: TRAM: MOV A,@R0 ;取數據
MOV SBUF,A ;發送一個字元
WAIT:JBC TI,NEXT ;等待發送結束
SJMP WAIT NEXT: INC R0 ;准備下一次發送
SJMP TRAM3、接收程序
WAIT: JBC RI,NEXT ;查詢等待
SJMP WAIT NEXT: MOV A,SBUF ;讀取接收數據
MOV @R0,A ;保存數據
INC R0 ;准備下一次接收
SJMP WAIT 這個是用軟體查詢方法做的,沒有設定數據校驗。
Ⅲ 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;
}
Ⅳ 51單片機的串口接收一幀數據有幾位
發送的位數跟工作方式有關。51單片機的發送和接受,只有10位和11位兩種。
先說單片機串口的工作方式:
單片機串口的工作方式共4種,方式0--方式3.
方式0:用移位脈沖。RXD做輸入/輸出,TXD進行移位。收發的數據為八位。
方式1:傳送一幀信息為10位,即1位起始位(0),8位數據位(低位在先)和1位停止位(1)。數據位由TXD發送,由RXD接收
方式1:一幀信息也是10位;即 1位起始位,8位數據位(先低位),1位停止位。在起始位到達移位寄存器的最左位時,它使控制電路進行最後一次移位。
方式2和方式3:發送(通過TXD)和接收(通過RXD)一幀信息都是 11位: 1位起始位(0), 8位數據位(低位在先),1位可編程位(即第9位數據)和1位停止位(1)。
可見:不論單片機串口接收還是發送一幀數據是多少位,實際有效位數據位都是8位,其餘位是為了奇偶校驗、做起始位或終止位用的。
以前所述有誤,特修正。
Ⅳ C51單片機如何從PC機串口接收字元串
1、單片機串口不管從哪
接收數據
都是遵循串口協議的。字元串就是一個挨一個的ASKII碼,中間沒有加任何東西。2、不發字元串結束標志。3、回車符可以發送,但具體發不發送看你程序了。