谁能帮我看懂这段单片机C程序?

来源:百度知道 编辑:UC知道 时间:2024/05/22 07:57:09
TI 10位DA TLC5615的驱动程序

#define SPI_CLK P0_6
#define SPI_DATA P3_1
#define CS_DA P3_4

void da5615(uint da)
{
uchar i;
da<<=6;
CS_DA=0;
SPI_CLK=0;
for (i=0;i<12;i++)
{
SPI_DATA=(bit)(da&0x8000);
SPI_CLK=1;
da<<=1;
SPI_CLK=0;
}
CS_DA=1;
SPI_CLK=0;
for (i=0;i<12;i++);
}

希望后面能够带注解的,麻烦大家了。

/*串行外设通讯,根据程序,外设应该为12位的DA转换芯片。这么专业的问题,悬赏分太低*/

#define SPI_CLK P0_6 //P0.6为外设SPIclock
#define SPI_DATA P3_1 //p3.1为外设dataIN
#define CS_DA P3_4 //p3.4为外设片选信号

void da5615(uint da)
{
uchar i;
da<<=6; //把16位数据左移6位,因为高6位数据无效
CS_DA=0; //片选,使能外设
SPI_CLK=0; //clock=0,产生时钟
for (i=0;i<12;i++) //因为外设为12位DA,
{
SPI_DATA=(bit)(da&0x8000); //把最高位送出
SPI_CLK=1; //clock=1,产生时钟
da<<=1; //数据左移1位,把第14位变成最高位,等待下一次送出
SPI_CLK=0; //clock=0,产生时钟
}
CS_DA=1; //去除片选,外设DISABLE
SPI_CLK=0; //此句多余,可以不要
for (i=0;i<12;i++); //延时
}

串行的DA啊.