本帖最后由 深夜星空 于 2014-3-28 20:41 编辑
写了一个SSI协议,和SPI差不多。采集程序发送时钟信号,发送程序发送数据。采集程序这有点问题。
1、定义一个32位全局变量NUM,保存采集来的数据,发送一个脉冲,采集一位的数据,NUM左移1位,一共28位。单步调试,发现数据只能左移到第9位,在左移高位数据全被清零。见第二张图和第三张图。
2、第一图,for循环里的变量i,在for循环里第一个断点 Set_TX; 处,有值,在for循环里第二个断点,却没有值了?
C语言学的不到家,还请大神点拨点拨。
void SSI_Sent(void)
{
//u32 byte;
Reset_TX;
delay_ms(2);
for(u8 i=0;i<28;i++)
{
Set_TX;
delay_ms(2);
NUM=(NUM<<1);
Reset_TX;
if(RD_RX==0x01)
NUM|=0x01;
else
NUM&=0xFE;
delay_ms(1);
}
Set_TX;
//return(byte);
} |