为什么不可以只改占空比那个寄存器,
一修改就要产生混乱波形
要不要复位下,重新写全部寄存器
参考程序:请指教~
#include <at89x51.h>
sbit SCK=P1^2;
sbit SO=P1^0;
sbit SI=P1^1;
sbit RESET=P1^3;
void delay(void)
{
unsigned char i;
for(i=0;i<50;i++);
}
void delayms(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void SPISendByte(unsigned char date)
{
unsigned char n,temp;
temp=date;
for(n=0;n<8;)
{
SCK=0;
if(temp&0x80)
SO=1;
else
SO=0;
delay();
SCK=1;
delay();
n++;
temp=(temp<<1);
}
SCK=0;
}
void main( void )
{
/*添加必要的初始化程序*/
RESET=0; /*先复位*/
SCK=0; /*SCK信号,上电后要输出低*/
SO=0;
delayms(5);
RESET=1;
delayms(5);
SPISendByte(0x5c); /*寄存器控制字*/
SPISendByte(0x00); /*对应寄存器的值*/
delayms(1); /*两帧数据之间要加>1ms的延时,同一帧的两组数据之间不用*/
SPISendByte(0x50); /*通道1*/
SPISendByte(0xc0);
delayms(1);
SPISendByte(0x53);
SPISendByte(0x80);
delayms(1);
SPISendByte(0x54); /*通道2*/
SPISendByte(0xc0);
delayms(1);
SPISendByte(0x57);
SPISendByte(0x80);
delayms(1);
SPISendByte(0x58); /*通道3*/
SPISendByte(0xe0);
delayms(1);
SPISendByte(0x5b);
SPISendByte(0x80);
delayms(1);
delayms(1000);
SPISendByte(0x53);
SPISendByte(0x0F);
while(1)
{
}
}