在这里插入代码片
# 点阵
#include <REGX52.H>
void _74595_writebite(unsigned char bite);
sbit RCK =P3^5;
sbit SER = P3^4;
sbit SRCLK = P3^6;
void delay(unsigned int i) //@12.000MHz
{
while(--i)
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void lattice( led_list,unsigned char dat)
{
_74595_writebite(led_list);
delay(100);
P0=dat;
}
void _74595_writebite(unsigned char bite)
{char i;
/* while(--i){
SER=0;SRCLK=1;
delay(20);
SRCLK=0;
}//必须先初始化
for(i=0;i<8;i++)
{
SER=bite&(bite>>i);
SRCLK=1;
SRCLK=0;
}
RCK=1;delay(20);
RCK=0;
*/
SER=bite&0x80;//由于从规则为先传最高位,所以先取最高位
SRCLK=1;
delay(20);
SRCLK=0;
SER=bite&0x40;
SRCLK=1;
delay(20);
SRCLK=0;
SER=bite&0x20;
SRCLK=1;
delay(020);
SRCLK=0;
SER=bite&0x10;
SRCLK=1;
delay(20);
SRCLK=0;
SER=bite&0x08;
SRCLK=1;
delay(20);
SRCLK=0;
SER=bite&0x04;
SRCLK=1;
delay(20);
SRCLK=0;
SER=bite&0x02;
SRCLK=1;
delay(20);
SRCLK=0;
SER=bite&0x01;
SRCLK=1;
delay(20);
SRCLK=0;
RCK=1;
RCK=0;
}
void main()
{
SRCLK=0;//初始化
RCK=0;//初始化
lattice(0x01,0xAA);
while(1);
}