這個mode (mode 0),利用TX pin送出固定Xtal/12的clock,利用程式來從RX 收/送 串列資料。
這樣的工作模式通常是用來配合shit-register (也就是串轉並/並轉串)的chip作IO擴充,當然,也有一些AD是用這種工作模式:如Microchip : MCP3201,在AN702中有說明。
要用Mode 0作送的動作:
SCON = 0; // Mode 0, SM0=SM1=0; disable REN
SBUF=data; // send data out, send clk at the same time
while(!TI); // wait complete
要用Mode 0作收的動作
SCON = 0x10; // Mode0, REN - enable receive function , RI=0 = send clk
while(!RI); // wait receive
data = SBUF;
RI=0; // SCON.0 :RI =0 , send clk out
while(!RI); // wait receive
data=SBUF;
當然要注意的是,通常都會用一個pin街道shit register,作chip select,有些是rising edge trigger,有些是falling trigger。
如果分開用bit addressing:
READ:
RI=0;
REN=1;
while(!RI);
return SBUF;
RI要手動clear,又因為REN一但set後clock就送出,所以RI要先clear才可以set REN。
沒有留言:
張貼留言