📄 mega8_spi._c
字号:
/****************************************************************************************
mega8的SPI功能实验
程序功能:使用MEGA8的SPI口控制74HC595,
循环发送0-255到74hc595,
使LED循环点亮
硬件连接:SCK--SHCP,MOSI--DS,PB1--STCP
位时钟 , 数据 , 桢时钟
作者:张国旗
2008年12月29号
****************************************************************************************/
//=========================
// 毫秒延时函数8M晶振
//=========================
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++)if(exit1==1)j=1141;
}
}
//============================
// SPI 口初始化
//主机、高位在前、SCK在闲置时
//为低电平,SPI时钟为fosc/128
//============================
void spi_init()
{
DDRB|=0x2f; //设置SCK、MOSI、SS、使能为输出
SPCR=0X53; //设置SPI控制寄存器SPE、MSTR、SPR1、SPR0为1
}
//============================
// 数据发送子函数
//入口参数:spi_data
//============================
void senddat(uchar spi_data)
{
uchar status;
SPSR=0; //清中断标志
PORTB&=~BIT(PB0); //桢时钟
SPDR=~spi_data;
while(!(SPSR&=0x80));//等待操作完成
SPSR=0; //清中断标志
delay(10);
PORTB|=BIT(PB0); //桢时钟
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -