① 單片機中的SBUF究竟是什麼
SBUF是指串列口中的兩個緩沖寄存器,一個是發送寄存器,一個是接收寄存器,在物理結構上是完全獨立的,但地址是重疊的。它們都是位元組定址的寄存器,位元組地址均為99H。
SBUF,全稱:serial data buffer,中文名為串列數據緩沖器。這個重疊的地址靠讀/寫指令區分:串列發送數據時,CPU向SBUF寫入數據,此時99H表示發送SBUF;串列接收數據時,CPU從SBUF讀出數據,此時99H表示接收SBUF。
(1)單片機buffer擴展閱讀
SBUF 包含了兩個獨立的寄存器,一個是發送寄存,另一個是接收寄存器,但它們都共同使用同一個定址地址-99H。
CPU 在讀SBUF 時會指到接收寄存器,在寫時會指到發送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒有及時的被響應,數據沒有被取走,下一幀數據已到 來,而造成的數據重疊問題。
發送器則不需要用到雙緩沖,一般情況下我們在寫發送程序時也不必用到發送中斷去外理發送數據。操作SBUF寄存器的方法則很簡 單,只要把這個99H 地址用關鍵字sfr定義為一個變數就可以對其進行讀寫操作。
如sfr SBUF = 0x99;當然你也可以用其它的名稱。通常在標準的reg51.h 或at89x51.h 等頭文件中已對其做了定義,只要用#include 引用就可以了。
② 51單片機SBUF什麼意思
51單片機SBUF意思是SBUF串列口數據緩沖寄存器,分為輸入和輸出,但使用時用同一個名字。比如MOV SBUF,A(是輸出),MOV A,SBUF(是輸入)。SBUF既是接收緩沖器又是發送緩沖器,同一時間只能為一種,要麼接收,要麼發送。a=SBUF是把接收緩沖器中的數據復制給a。SBUF=a是把a中的數據復制給發送緩沖器。通過讀寫緩沖器SBUF實現數據收發功能。