導航:首頁 > 操作系統 > 單片機串口發送信息

單片機串口發送信息

發布時間:2022-08-19 07:39:07

㈠ pic單片機用串口發送接收數據

這個問題是這樣的,當接收到數據時,RCIF會被置1,如果你讀了接收結果RCREG,則系統自動會把RCIF清0。
你這程序把清RCIF語句屏蔽了,但TXREG=RCREG;這一句就是讀接收結果(把接收結果RCREG送到發送寄存器TXREG里),所以會自動讓RCIF清0,只有新數據來時,RCIF才會置1,才能再進入中斷。
如果你把發送的語句改為TXREG=0X12(或其他不是RCREG的寄存器的變數),因此中斷後沒有讀取接收數據,也就不能清RCIF,RCIF仍然為1,即中斷服務程序退出後,還存在的中斷請求,因此就會馬上進入中斷,從而出現不停的發送數據的現象。
解決的辦法有2:
1、讓原來屏蔽的語句RCIF=0有效;
2、空讀RCREG,如定義一個變數A(unsigned
char
A),在發送數據後或前,增加A=RCREG就可以了。

㈡ 單片機串口接受和發送簡訊息的實現

串口中斷函數里發送,接收沒弄好!!現在簡單實現發送,接收都能行。再做下一步、。。。。

㈢ 51單片機通過串口實現數據的發送與接收程序

串口收發,要有通信協議。也就是什麼時候開始接收,接收到指令後,轉發什麼數據。這個要知道,才可以寫。而且使用不同的51單片機,其內部寄存器配置是不同的。
一般來說,過程如下:
1,配置串口參數、波特率等,開啟串口中斷;
void Init_UART()
{

}
2,中斷函數里寫中斷響應函數,根據接收的指令或者數據,執行相應的動作;
程序一般為:
void UART_ISR() interrupt x using y
{
;串口中斷處理函數
}
x - 單片機的C51中斷號
y - 指定使用的當前工作寄存器組號(0-3 PSW中的RS0,RS1組合)

3,主程序
int main(void)
{
Init_UART();
while(1)
{
;//數據發送函數
}
}

㈣ 單片機串列口工作方式發送

串口通信是指多個單片機之間,或單片機與電腦進行互相通信,這時,RXD是接收,TXD是發送。串列通信是遠距離的。
而串口的方式0,其實並不是串口收/發,准確說只是串列輸入/輸出數據,注意,不是通信。只是單片機與串/並轉換晶元之間傳輸數據,而且限於同一個板內。所以,RXD不再接收,TXD也不再是發送。而是用TXD做同步時鍾信號,用RXD做串列數據線。輸出數據時,也是用發送狀態,可以接74LS164晶元。而用接收狀態時,是輸入數據,外部可用74LS165晶元。這是串口的另一個應用。

㈤ 51單片機串口發送

//這是一個單片機C51串口接收(中斷)和發送常式,可以用來測試51單片機的中斷接收
//和查詢發送,另外我覺得發送沒有必要用中斷,因為程序的開銷是一樣的
//程序編寫: 龔建偉 [email protected]
//技術主頁:http://www.gjwtech.com
//您有這方面的問題可以和我討論

#include <reg51.h>
#include <string.h>

#define INBUF_LEN 4 //數據長度

unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3;
bit read_flag=0;

void init_serialcomm(void)
{
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
// TI=1;
}

//向串口發送一個字元
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}

//向串口發送一個字元串,strlen為該字元串長度
void send_string_com(unsigned char *str,unsigned int strlen)
{
unsigned int k=0;
do
{
send_char_com(*(str + k));
k++;
} while(k < strlen);
}

//串口接收中斷函數
void serial () interrupt 4 using 3
{
if(RI)
{
unsigned char ch;
RI = 0;
ch=SBUF;
if(ch>127)
{
count3=0;
inbuf1[count3]=ch;
checksum= ch-128;
}
else
{
count3++;
inbuf1[count3]=ch;
checksum ^= ch;
if( (count3==(INBUF_LEN-1)) && (!checksum) )
{
read_flag=1; //如果串口接收的數據達到INBUF_LEN個,且校驗沒錯,
//就置位取數標志
}
}
}
}

main()
{
init_serialcomm(); //初始化串口
while(1)
{
if(read_flag) //如果取數標志已置位,就將讀到的數從串口發出
{
read_flag=0; //取數標志清0
send_string_com(inbuf1,INBUF_LEN);
}
}

}

㈥ C51單片機發送串口數據到電腦

#include

<reg52.h>
sbit
RELAY
=
P1^2;
//定義繼電器:接P1^1
unsigned
char
command[3],ptr=0,dat;
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
main()
{
TMOD=0x20;
//
TH1=0xfd;
TL1=0xfd;
SM0=0;
SM1
=1;
REN=1;
//控制RI
TR1=1;
/*以上為定時器設置和
波特率
設置,這樣的話,通過串口調試助手發送數據(隨意數據)通過改變RI(串口接收標志來實現繼電器的吸合與打開
*/
while(1)
{
if(RI==1)
{
RI=0;
command[ptr]=SBUF;
ptr++;
if(ptr==2)
{
ptr=0;
if((command[0]=='0')&&(command[1]=='0')&&(command[2]=='7'))RELAY=0;
if((command[0]=='0')&&(command[1]=='0')&&(command[2]=='8'))RELAY=1;
}
}
}
}

㈦ 單片機通過串口發送的是什麼

發送的是2進制八位數據,它發送是以貞為單位,通常會有起始位結束位奇偶校驗位等等,加起來就不止8位,所以你在接收的時候要能區別每個電平到來時所攜帶的信息,提取每貞裡面的8位數據信息。

㈧ 51單片機串口發送數據

程序採用了查詢式發送,for(i=0;i<6;i++){SendChar(askconfig[i]); },共發送了6個字元。
再去查詢收到否。
這種方法,就是有問題的,發送6個字元時,就可能收到了好幾個字元,而沒有及時保存,完全可能丟失信息。
應該採用中斷方式接收;發送,也可以用查詢,也可以用中斷。
方法弄清楚了,程序就容易編寫、調試了。

㈨ 單片機怎麼通過串口發送一串數據

通過SBUF! 一塊是接受,一塊發送!還要設置工作方式。

單片機(Microcontrollers)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

㈩ 串口發送數據是單片機發送數據嗎

只要有串口就可以發送數據
電腦有串口,可以發送數據
單片機有串口,也可以發送數據
串口有單工的也有雙工的:單工的同一個時間內只能發送或接受數據,雙工的可以同時發送和接受數據。

閱讀全文

與單片機串口發送信息相關的資料

熱點內容
pdf合並成一個pdf在線 瀏覽:383
柱加密區構造要求 瀏覽:514
地板木龍骨標准跟加密區別 瀏覽:150
解壓放鬆的好地方河南 瀏覽:965
搜狗怎麼移動到文件夾 瀏覽:617
文件自動選擇到文件夾 瀏覽:794
贈送的app怎麼在ipad下載 瀏覽:508
頸椎解壓後神經恢復 瀏覽:849
怎麼看app訂閱扣費 瀏覽:314
linux系統的負載均衡 瀏覽:419
遇到挫折解壓視頻 瀏覽:778
什麼指令看伺服器運行負載 瀏覽:84
因碩智能門鎖卡片是加密的么 瀏覽:336
為什麼會伺服器不可用 瀏覽:290
wow宏命令設置 瀏覽:264
解壓神器一張紙折疊魔術球 瀏覽:23
怎麼樣可以取消加密軟體oppo 瀏覽:580
屏幕共享源碼哪家比較不錯 瀏覽:665
vb中雙擊命令按鈕 瀏覽:208
伺服器做了磁碟陣列怎麼重裝 瀏覽:606