找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機(jī)串口通信出了點(diǎn)問題 求大神看一下

查看數(shù): 2771 | 評論數(shù): 8 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2019-2-12 19:19

正文摘要:

就是輸入1的時(shí)候蜂鳴器響 2的時(shí)候led流水燈 但是什么反應(yīng)都沒有 串口通信可以實(shí)現(xiàn) 但是不能時(shí)間額外的功能 #include "reg51.h" #define led P0 typedef unsigned char u8; typedef unsigned int u16; sbit ...

回復(fù)

ID:476375 發(fā)表于 2019-2-14 11:11
SBUF =  Data; while(TI == 0); TI = 0;這些放到main()里面的while(1)最下面試試;中斷函數(shù)里面不能while(TI == 0);堵塞
ID:476086 發(fā)表于 2019-2-13 09:54
笨笨兔 發(fā)表于 2019-2-13 08:14
這個(gè)未必是單片機(jī)串口通信出了問題。
void tx() interrupt 4
{

其實(shí)是將數(shù)據(jù)保存在了Data這個(gè)變量了,我估計(jì)樓主重新發(fā)出去的操作是看看有沒有正確接收,調(diào)試用的吧。
ID:476086 發(fā)表于 2019-2-13 09:50
1.串口接收到數(shù)據(jù),然后根據(jù)數(shù)據(jù)內(nèi)容進(jìn)行蜂鳴器或者LED顯示處理后,是否需要將Data變量進(jìn)行清零?
2.我們這種前后臺系統(tǒng),在做延時(shí)的時(shí)候,不能直接調(diào)用DELAY這種函數(shù)的,這樣系統(tǒng)會(huì)死在這里很長時(shí)間的。如果此時(shí)有新的串口指令過來的話,你的MCU是無法進(jìn)行處理的。
ID:393699 發(fā)表于 2019-2-13 09:45
試著用字符串比較函數(shù)strcmp替代if判斷?
ID:164602 發(fā)表于 2019-2-13 09:23
你的程序什么問題也沒有(已經(jīng)用板子試驗(yàn)通過了),是你在使用串口調(diào)試軟件時(shí)范了錯(cuò)誤。
從你的程序上看:判斷是1、2——注意!注意!注意——重要的事兒說三遍,你判斷的數(shù)字1、2,不是字符1、2
而從你截圖中看到的,是發(fā)送字符1、2,當(dāng)然沒反應(yīng)了。呵呵呵
要勾選HEX發(fā)送嘛!

評分

參與人數(shù) 2黑幣 +40 收起 理由
yousunny + 30 很給力!
日本人孫笑川 + 10 很給力!

查看全部評分

ID:94031 發(fā)表于 2019-2-13 08:44
查查波特率有無問題。
ID:158375 發(fā)表于 2019-2-13 08:14
這個(gè)未必是單片機(jī)串口通信出了問題。
void tx() interrupt 4
{
        Data=SBUF;
        RI=0;
        SBUF=Data;
        while(TI==0);
        TI=0;
}
中斷接收了數(shù)據(jù),然后發(fā)送出去;什么時(shí)候按照你的想法處理這個(gè)數(shù)據(jù)呢?
這個(gè)中斷處理也不是很好。
ID:432823 發(fā)表于 2019-2-13 07:24

        RI=0;
        Data=SBUF;
        
        while(TI==0);
        TI=0;

評分

參與人數(shù) 1黑幣 +20 收起 理由
yousunny + 20 贊一個(gè)!

查看全部評分

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表