这个C语言语句是什么意思啊?还有作用是什么啊?请详细点回答,谢谢。我是C语言白痴
发布网友
发布时间:2022-05-14 07:35
我来回答
共3个回答
热心网友
时间:2023-11-01 00:51
void SPI_Out(unsigned char dat)//整个函数就是将dat这个值通过spi总线输出
{
unsigned char i;
for(i=0;i<8;i++)//dat这个值是unsigned char 是一个8位数据,所以要传送8次
{
SCLK=RESET_SCLK;//这里的RESET_SCLK应该在你程序的其他地方定义好了为0吧,这个没什么好说的。
if(dat&0x80) /*得到dat的最高位值*/ //这个就是判断dat这个的最高位是否为1
{
SDIO=SET_SDIO; //如果dat的最高位是1则把SET_SDIO这个值放到SDIO这个引脚上。这里的SET_SDIO这个值也是应该在你的程序其他地方有定义成1吧。没有的话就自己定义好了
}
else
{
SDIO=RESET_SDIO; //这里是说如果最高位不是1,是0,那么就把RESET_SDIO放到你的SDIO的引脚上。
}
delay(1); //延时函数
/**************是否需要延时?**************/
SCLK=SET_SCLK; /*得到时钟信号上升沿*/
delay(1);
dat<<=1; /*得到dat的最高位MSB后将dat左移1位,逐步获得8bit的每一bit*/
//dat<<=1这句是关键,是说你的最高位在上面已经被你发送出去了。这里的就次高位通过右移一位变成最高位。以后也是类似,最后dat这个值的所以位全部移出,这个值最后是0.
}
SCLK=RESET_SCLK; /*得到时钟信号下降沿*/
delay(2);
}
好了,每一句我都加上注释了。基本上就是这样。
热心网友
时间:2023-11-01 00:51
用软件方式来模拟SPI的时序 将字符dat发送出去 程序没什么好说的 这是嵌入式的风格 如果你看不懂 就先把对应的芯片手册 拿出来 然后看懂SPI通信这一章
热心网友
时间:2023-11-01 00:52
把一个字节的8位从高到底设置到sdio上,也就是发送出去。