CEPARK AVR大学堂----Linglong AVR单片机之SPI通信
时间:11-22
来源:互联网
点击:
#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;
}
}
}
#include
#define DD_SPI DDRB
#define DD_MOSI PB5
#define DD_SS
#define DD_SCK
unsigned char DispBuff[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //共阳数码管字库
void SPIMasterInit(void )
{
}
void SPIDataTrantsmit(unsigned char cData)
{
}
int main(void)
{
//
}
AVR单片机SPI通 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)