[mw_shl_code=c,true]#include<reg52.h>
#include <intrins.h>
unsigned char segout[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //8??
unsigned char code tab[]={ 0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00};
sbit LATCH = P2^1;
sbit SRCLK= P2^2;
sbit SER = P2^0;
sbit LATCH_B = P2^4; //595 11引脚
sbit SRCLK_B= P2^5; //595 12
sbit SER_B= P2^3; //595 14
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//?ó?????±1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void SendByte(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
SRCLK=0;
SER=dat&0x80;
dat<<=1;
SRCLK=1;
}
}
void Out595(void)
{
LATCH=1;
DelayMs(1);
LATCH=0;
} void SendSeg(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++) //·???×???
{
SRCLK_B=0;
SER_B=dat&0x80;
dat<<=1;
SRCLK_B=1;
}
LATCH_B=1; //????
DelayMs(1);
LATCH_B=0;
}
/*------------------------------------------------
?÷???ò
------------------------------------------------*/
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++) //8??????
{
SendSeg(~segout);
SendByte(tab);
Out595();
}
}
} [/mw_shl_code]
仿真以后是这样,为什么右边那个595没有输出呢?
|