您的位置 首页 开关

CEPARK AVR大学堂—-Linglong AVR单片机之SPI通讯

includeavrioh>includeutildelayh>defineDD_SPIDDRBdefineDD_MOSIPB5defineDD_SSPB4defineDD_SCKPB7u

#include <avr/io.h>
#include

#define DD_SPI DDRB
#define DD_MOSI PB5
#define DD_SS PB4
#define DD_SCK PB7

unsigned char DispBuff[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //共阳数码管字库

void SPIMasterInit(void ) //SPI初始代函数
{
DD_SPI = (1 << DD_MOSI)|(1 << DD_SS)|(1 << DD_SCK); // MOSI,SS,SCK 设置为输出

SPCR = (1 << SPE)|(1 << MSTR)|(1 << SPR0); //设置SPI始能,主机形式,时钟速率为fck/16.

}

void SPIDataTrantsmit(unsigned char cData) //SPI传输函数
{
SPDR = cData;
while(!(SPSR&(1 << SPIF))); //这儿是判别SPIF是否为1,为1表明8位数据传完了。这儿咱们没有用中止的方法。
}

int main(void)
{
unsigned char count = 0; //设制循环变量
PORTB = 0xff;
// DDRB = 0xff;
SPIMasterInit();

while(1)
{

PORTB &= ~(1 << DD_SS);
SPIDataTrantsmit(DispBuff[count]);
PORTB |= (1 << DD_SS); //上升沿
_delay_ms(500);


count++;
if(count > 9)
{
count = 0;
}
}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/262347.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部