引用:
|
作者print810
需要請求大家的協助
想了好久 還是不會
電路動作:
當5pin開關全部off時
8051的動作 P0.5為負緣觸發 P0.6一直送ck
當任何依各開關打開 則會以陣列或是查表的方式找到相對映的16bit的data送到P0.7
送的同時P0.5為負緣觸發 P0.6一直送ck
依各CK 就送1BIT的資料
|
樓主寫的程式應該是做SPI串列傳輸的動作吧!
其實SPI還算簡單,只有4支腳,就你腳位的定義,P0.5是chip select,P0.6是Clock,P0.7是
Data Out,另外還有一支Data In你沒定義,其中chip select是Low動作,沒有要傳資料時是
設為High,當要傳送資料時才設為Low,所以一開始要先設為Low,然後再經由Clock觸發將
Data Out腳資料送出,下面的程式是傳8bit資料,傳送資料的關鍵就在Clock的邊緣觸發,
由下面程式來看是當Clock在0變1的瞬間(正緣觸發)將一個bit送出,那做八次就可送出8bit,
依此類推做16次就是16bit,另外要注意是資料傳送順序是由高位元開始傳,如果有問題可以
去找有內建SPI的MCU的datasheet,應該會有詳細的解說和時序圖.
void DataOut(BYTE bByte)
{
BYTE i;
for(i=0;i<8;i++)
{
P0.6=0;
P0.7=bByte&0x80;
bByte<<=1;
P0.6=1;
}
P0.7=1;
}