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位数了,这样是不是不合适的?
本人水平偏低,目前是在学习中,可能这个问题有些愚笨,尽管如此,还是希望大神不吝赐教,越简单易懂越好,谢谢。
|