⑴ stc單片機串口測試程序,串口接收再發送問題
……你自己把邏輯鎖死了。收到一回4位元組序列後,flag1置位,之後發送數據。可是在發送數據的時候又會進入中斷的,由於接收緩沖區中還是那4位元組的序列,於是flag1再次被置位……於是乎進入永不停歇的死循環。
你的串口中斷應當判斷一下是發送還是接收……
⑵ 求助stc 單片機串口發送接收多個數據的程序
收/發一個數據會了,那收/多個的方法也相同。接收最好用中斷方式,不影響其它程序執行。發送時,採用查詢方式比較方便好寫。發送多個,可用for循環控制,循環體內就是發送一個數據的程序,只是循環發送了。在循環發送前,把串口中斷關了,ES=0;發送結束再打開中斷,ES=1;
⑶ STC單片機接收數據之如何判斷數據結束
單片機接收數據如何判斷呢數據結束有兩種 辦法:
1、根據時間來確定,當超過某個設定時間沒有繼續有數據傳來,那麼認為是結束。
2、根據雙方的約定,接收到一個結束符,就認為數據傳輸結束。
⑷ stc12c2052ad 單片機接收模擬毫伏信號嗎
STC12C2052AD 系列工作電壓: 5.5V - 3.5V(5V單片機)
A/D轉換, 8位精度ADC,共8路。 要ADC轉換基準電壓為5V, 5V/255=0.0196V=19.6mV
19.6mV就能轉換成1個數字量的電壓信號。接受模擬毫伏信號。
⑸ stc12c5a60s2單片機第二串口通訊問題(可以發送不能接接收)
如果確定硬體沒有問題,先用查詢方式測試接收是否正常(標志位是S2CON的最低位)。如果查詢方式接收正常,再檢查中斷相關的設置(串口2中斷允許IE2的最低位置位了沒有,時鍾源有沒有在運行,波特率設置是否正確,中斷入口函數是不是對應於矢量8)
⑹ STC單片機串口接收程序
一組數據,共有多少位元組? 20 個?
根據位元組數,設定一個數組。
收到一個,存放一個。
收到 20 個後,判斷:
if (recbuf[16] == 'm' && recbuf[17] == 'b' && recbuf[18] == 'a' && recbuf[19] == 'r')
滿足條件,就把其前面的,變換成數:
//recbuf[1] = '.';
x = (recbuf[0] - 48) + (recbuf[2] - 48) * 0.1 + (recbuf[3] - 48) * 0.01;
//recbuf[4] = ' ' //recbuf[7] = '.'
n = (recbuf[5] - 48) * 10 + (recbuf[6] - 48) + (recbuf[8] - 48) * 0.1;
//recbuf[9] = ' ' //recbuf[13] = '.'
p = (recbuf[10] - 48) * 100 + (recbuf[11] - 48) * 10 + (recbuf[12] - 48)
+ (recbuf[14] - 48) * 0.1 + (recbuf[15] - 48) * 0.01;
⑺ stc12c5a60s2單片機串口2怎麼接收不到數據
檢查硬體連接有無問題,示波器確認;
檢查串口2是否已經開啟,時鍾源選的哪個,是否x12模式,波特率設置是否正確;
程序里先用查詢方式驗證確認串口配置本身有無問題。
⑻ STC單片機串口不可以連續接收數據
明顯就不合理,你在中斷里發送數據,估計你還是在那裡等它發送完。
當你接收第一次中斷的時候,你清除了中斷,發送你的數據,此時單片機接收到了n次數據,但是還不能被立即中斷,因為你在中斷里發送數據,還沒退出中斷,但此時RI已經置1,發送數據結束後,退出當前中斷,由於之前RI置1了(sbuf被刷新很多次,只能接收最近一個位元組),又響應了一次中斷,所以再發一次數據。
解決辦法:在中斷外發送數據,並採用循環隊列接收方式。
⑼ 怎麼編程用stc單片機串口1接收數據通過串口2送出
讓串口1響應中斷
將串口1接收寄存器中的數據放到內存中
退出串口1中斷
將內存中的數據通過串口2發送寄存器發出去
⑽ STC單片機串口接收數據時,只有第一個位元組正確,其它錯誤,且總漏一個位元組,比正常數據短
看一下STC 15F2K60S數據手冊,是不是什麼寄存器設置的不對。或者是波特率的演算法不對。我記得STC好像有的單片機一個時鍾周期是兩個機器周期。或者是6個機器周期,而一般的單片機都是12個機器周期。這個有一個寄存器可以進行設置,你查一下看是不是這個問題。
T2L=(65536-(FOSC/4/BAUD)); T2H=(65536-(FOSC/4/BAUD))>>8;
去看一下,數據手冊,可能是這里出了問題。