星期五, 6月 24, 2005

MCS51 8051 52 Serial Mode0 Read procedure

很少有人提到的51 serial port用mode 0來收送的功能:
這個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。

沒有留言:

網誌存檔