熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(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 ... |
SBUF = Data; while(TI == 0); TI = 0;這些放到main()里面的while(1)最下面試試;中斷函數(shù)里面不能while(TI == 0);堵塞 |
笨笨兔 發(fā)表于 2019-2-13 08:14 其實(shí)是將數(shù)據(jù)保存在了Data這個(gè)變量了,我估計(jì)樓主重新發(fā)出去的操作是看看有沒有正確接收,調(diào)試用的吧。 |
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)行處理的。 |
試著用字符串比較函數(shù)strcmp替代if判斷? |
查查波特率有無問題。 |
這個(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è)中斷處理也不是很好。 |
Powered by 單片機(jī)教程網(wǎng)