📄 main.c
字号:
//主机程序
#include<avr/io.h>
#include<util/delay.h>
void spi_init(void)
{
//PORTB |= (1<<PB4); //按照spi协议的握手方式手动操作ss(低):在开始传输前将其拉低,传输结束后再将其抬高。
PORTB |= (1<<PB0);
//DDRB |= (1<<DDB4) | (1<<DDB5) | (1<<DDB7);//ss(低)、sck、mosi 输出方式
DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2);
SPCR = 0x70; //使能spi、主机模式、低位在先、模式0、fosc/2
}
void spi_mt(char cData)
{
//PORTB &=~ (1<<PB4); //开始传输前拉低ss
PORTB &=~ (1<<PB0);
SPCR |= (1<<MSTR); //设主机模式
SPDR = cData;
while(!(SPSR & (1<<SPIF)))//等待传送完毕
;
//PORTB |= (1<<PB4);//传输结束后太高ss
PORTB |= (1<<PB0);
}
/*void delay1s(void)
{
unsigned char i;
for(i=20;i>0;i--)
{
_delay_loop_2(50000);// 50ms
}
}
*/
int main(void)
{
// unsigned char shuma[10] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
unsigned char shuma[8] = {0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
spi_init();
unsigned char tmp;
while(1)
{
//for(tmp=0;tmp<10;tmp++)
for(tmp=0;tmp<8;tmp++)
{
spi_mt(shuma[tmp]);
//spi_mt(tmp);
//delay1s();
_delay_ms(1000);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -