本帖最后由 闲来玩玩 于 2014-5-5 07:01 编辑
#define uchar unsigned char
#define uint unsigned int
unsigned int temp;
uchar dis_buff[8]={0,0,0,0,0,0,0,0};
const uint segled[]={0xc000,0xf900,0xa400,0xb000,0x9900,0x9200,
0x8200,0xf800,0x8000,0x9000,0xff00,0xbf00};
void Poweroninit(void)
{
SPI1STAT=0x8000; SPI1CON=0x44af;
}
void display(void)
{
uchar k=0;
uint j=0x0001;
for(k=0;k<=4;k++)
{
SPI1BUF=((segled[dis_buff[k]])|j);
while(_SPITBF==1);
j<<=1;
}
}
int main(void)
{
Poweroninit();
while(1)
{
display();
dis_buff[3]=(temp%10000)/1000;
dis_buff[2]=(temp%1000)/100;
dis_buff[1]=(temp%100)/10;
dis_buff[0]=temp%10;
temp=++temp;
}
}
//器件是dspic30f2010, 原来写for(k=0;k<4;k++), 后改写for(k=0;k<=4;k++)正常。我只要显示4位数据,用SPI模块,查询方法。附595和数码管文件,估计是2010和595通SPI时序不对,把第一帧数据丢失了。
|