void ma_write(uchar addr,uchar dat)
{
uchar cycle1;
uint value=0;
value = (( 0x80 | addr ) << 8 ) | dat ;//寫命令 + 地址 + 數據
ma_cs = 0;
for( cycle1=0 ; cycle1<16 ; cycle1++ )
{
ma_sclk = 0; delay1(1);
ma_mosi = value&0x8000; delay1(1);
ma_sclk = 1; delay1(1);
value <<= 1;
}
ma_cs = 1;
delay1(25);
}
我用是的STC15W4K56S4的單片機,從機中寫寄存器操作是一個16位的二進制數 ,包括3位命令+5位地址+8位數據。我把單片機的P1^3口定義為ma_mosi,在上面語句中(ma_mosi = value&0x8000;)這一句表達合不合理?因為MOSI腳是一位一位的發送數據,這一語句發送的直接是一個16位數了,這樣是不是不合適的?
本人水平偏低,目前是在學習中,可能這個問題有些愚笨,盡管如此,還是希望大神不吝賜教,越簡單易懂越好,謝謝。
|