1樓:匿名使用者
不是的,串列埠傳送資料時,不需要對txd專門處理,只要設定好串列埠工作方式,將資料送入到sbuf之後,就自動將資料傳送出去了。
2樓:匿名使用者
你提出的問題應該是通過串列埠向74ls164同步傳送資料的問題吧,串列埠工作方式版0時,txd用於傳送同步脈衝,權rxd用於傳送資料,你只要將資料載入subf之後,時鐘脈衝和資料就會自動出現在微控制器的i/o埠,程式不需要對i/o口再進行干預。但由於51微控制器是準雙向i/o,在使用串列埠通訊時,不能將i/o置0。所以在傳送資料前,應對對i/o口置1進行初始化,以保障微控制器對串列埠的操控。
3樓:匿名使用者
不需要,資料裝入sbuf後 硬體自動 由 p3.1 傳送時鐘脈衝, 由 p3.0 傳送 八位資料.
4樓:
不是的 p3^1是傳送資料口,在正常傳送資料時輸出脈衝訊號。 sbuf中的資料就是通過p3^1傳送出去的!
51微控制器串列埠工作方式0 外接74ls164的問題,ti=0還是ti=1?
5樓:匿名使用者
你所說的 i/o腳,與ti沒有任何關係。
ti是傳送標誌位,是在內部暫存器scon中的一位。
再說:while(ti==0); 這樣寫內就行,不要另加容一對大括號,這是迴圈語句,條件是當ti=0時就迴圈等待,就是當sbuf,即串列埠正在傳送資料時,ti=0,當傳送結束了,ti=1,那就結束迴圈了,向下執行了,再ti=0,是為了下一次的再傳送。
所以,這裡的ti,是傳送資料是否結束的標誌位,與外部引腳i/o沒有一點關係。
請教:用51微控制器的串列埠驅動74ls164要怎麼連線啊?
6樓:做而論道
如果採用串列埠方式
復0來驅制動74164,就要用:
rxd連線bai 74164的序列dudat;
txd連線 74164的序列clk。
因為這種方式是用rxd輸出數zhi據,daotxd輸出移位脈衝。
電路可見:
51微控制器串列埠通訊寫字元,51微控制器串列埠通訊寫一個字元
你主程式這麼寫,傳送一個字元後,微控制器並不停止。應該加一行無限迴圈語句,while 1 才能停,如下 include include unsigned char ch bit read flag 0 void init serialcom void 串列埠通訊初始設定 向串列埠傳送一個字元 voi...
51微控制器,通過串列埠助手向微控制器傳送字串,微控制器將字串逆序傳送回計算機,用C語言程式設計
電腦通過串列埠助手向微控制器傳送字串,微控制器定義一個可以儲存7個字元的陣列,依次儲存接收的字串,當接收到7個字串後,就可以從陣列的最後一個字元向前傳送每一個字元給電腦就可以了。剩下的就是串列埠初始化,串列埠接收和傳送程式了,就比較好寫了。其實,電腦傳送任意的7個字元的字串都可以,微控制器收到後就可...
51微控制器串列埠傳送「 」是怎麼回事
51微控制器的串列埠,是個全雙工的串列埠,傳送資料的同時,還可以接收資料。當序列傳送完畢後,將在標誌位 ti 置 1,同樣,當收到了資料後,也會在 ri 置 1。無論 ri 或 ti 出現了 1,只要串列埠中斷處於開放狀態,微控制器都會進入串列埠中斷處理程式。在中斷程式中,要區分出來究竟是傳送引起的...