資料緩衝暫存器 這是一個可以直接定址的序列口專用暫存器。有朋友這樣問起過“為何在序列口收發中,都只是使用到同一個暫存器SBUF?而不是收發各用一個暫存器。”實際上SBUF包含了兩個獨立的暫存器,一個是傳送寄存,另一個是接收暫存器,但它們都共同使用同一個定址地址-99H。CPU在讀SBUF時會指到接收暫存器,在寫時會指到傳送暫存器,而且接收暫存器是雙緩衝暫存器,這樣可以避免接收中斷沒有及時的被響應,資料沒有被取走,下一幀資料已到來,而造成的資料重疊問題。傳送器則不需要用到雙緩衝,一般情況下我們在寫傳送程式時也不必用到傳送中斷去外理髮送資料。操作SBUF暫存器的方法則很簡單,只要把這個99H地址用關鍵字sfr定義為一個變數就可以對其進行讀寫操作了,如sfrSBUF=0x99;當然你也可以用其它的名稱。通常在標準的reg51.h或at89x51.h等標頭檔案中已對其做了定義,只要用#include引用就可以了。
資料緩衝暫存器 這是一個可以直接定址的序列口專用暫存器。有朋友這樣問起過“為何在序列口收發中,都只是使用到同一個暫存器SBUF?而不是收發各用一個暫存器。”實際上SBUF包含了兩個獨立的暫存器,一個是傳送寄存,另一個是接收暫存器,但它們都共同使用同一個定址地址-99H。CPU在讀SBUF時會指到接收暫存器,在寫時會指到傳送暫存器,而且接收暫存器是雙緩衝暫存器,這樣可以避免接收中斷沒有及時的被響應,資料沒有被取走,下一幀資料已到來,而造成的資料重疊問題。傳送器則不需要用到雙緩衝,一般情況下我們在寫傳送程式時也不必用到傳送中斷去外理髮送資料。操作SBUF暫存器的方法則很簡單,只要把這個99H地址用關鍵字sfr定義為一個變數就可以對其進行讀寫操作了,如sfrSBUF=0x99;當然你也可以用其它的名稱。通常在標準的reg51.h或at89x51.h等標頭檔案中已對其做了定義,只要用#include引用就可以了。