SPl初始化和数据传输程序实例:下面的例子说明如何将SPl初始化为主机以及如何进行简单的数据发送。例子中DDR—SPl必须由实际的数据方向寄存器代替;DD—MOSl、DD—MIS0和DD—SCK必须由实际的数据方向代替。比如说,MOSl为PB5引脚,则DD_MOSl要用DDB5取代,DDR—SPl则用DDRB取
代。汇编代码例子:
SPl—Masterlnit:
;设置MOSl和SCK为输出,其他为输入
idi rl7,(1<
out DDR_SPl,rl7
;使能SPl主机模式,设置时钟速率为fck/16
idi rl7,(1<
out SPCR,rl7
ret
SPl—MasterTransmit:
;启动数据传输(r16)
out SPDR.rl6
Wait—Transmit:
;等待传输结束
sbis SPSR,SPIF
rj mp Wait_Transmit
ret
C代码例子(1):
void SPl—MasterInit(void)
{
/*设置MOSl和SCK为输出,其他为输入*/
DDR_SPI=(1<
/*使能SPl主机模式,设置时钟速率为fck/16*/
SPCR=(1<
)
void SPl..MasterTransmit(char cData)
{
/*启动数据传输*/
SPDR=cData;
/*等待传输结束*/
while(!(SPSR&(1<
;
)
更多信息请关注