灯光校验程序

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SER = P2^0;
sbit SRCLK = P2^1;
sbit SRCLR = P2^2;
sbit RRCLK =  P2^3;
sbit E = P2^4;
sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
uchar code table595[]={0x30,0x7e,0x29,0x2c,0x66,0xa4,0xa0,0x3e,0x20,0x24};
uchar code Table[]={0xee,0xdd,0xbb,0x77};//P1
uchar code Led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //P0
uchar flag,flag1,tt,i,j; //flag为手动、自动转换
char m;
void X74HC595(uchar a)
{
uchar i,temp;
E = 1;
_nop_();
_nop_();
E = 0;
SRCLR = 1;
temp=table595[a];
for(i=0;i<8;i++)
{
temp=_crol_(temp,1);
SER = temp & 0x80; //SER连J9的1口
SRCLK = 0;
_nop_();
SRCLK = 1;
_nop_();
RRCLK= 0;
_nop_();
RRCLK = 1;
_nop_();
}
}
void delay(uchar b)
{
uchar x,y;
for(x=110;x>0;x--)
for(y=b;y>0;y--);
}
void X74HC573(uchar c,uchar d)
{
P1=Table[c];
P0=Led[d];
delay(5);
}
void init()
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt=0;
flag=0; //默认自动
TR0=1; //启动定时器0
flag1=0;//自动时正常运行
X74HC595(m);
X74HC573(0,0);
}
void exter()
{
flag=!flag;
TR0=!TR0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void time() interrupt 1
{
tt++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void key()
{
if(KEY1==0||KEY2==0||KEY3==0||KEY4==0)
{
delay(5);
if(KEY1==0)
{
exter();
while(!KEY1);
}
else if(KEY2==0&&flag==1)
{
if(i==3&&j==7)
{
i=0;
j=0;
X74HC573(0,0);
}
else if(j!=7)
X74HC573(i,++j);
else
X74HC573(++i,0);
X74HC595(++m);
while(!KEY2);
}
else if(KEY3==0&&flag==0)
{
flag1=!flag1;
TR0=!TR0;
while(!KEY3);
}
else if(KEY4==0&&flag==1)
{
if(i==0&&j==0)
{
i=3;
j=7;
X74HC573(3,7);
}
else if(j!=0)
X74HC573(i,--j);
else
{
j=0;
X74HC573(--i,0);
}
X74HC595(--m);
while(!KEY4);
}
}
}
void main()
{
init();
while(1)
{
if(m>0&&m<9)
key();
else if(m==0)
{
if(KEY4==0)
m=10;
key();
}
else if(m==9)
{
if(KEY2==0)
m=-1;
key();
}
if(tt==30&&flag==0)
{
tt=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(i==3&&j==7)
{
i=0;
j=0;
X74HC573(0,0);
}
else if(j!=7)
X74HC573(i,++j);
else
{
j=0;
X74HC573(++i,0);
}
if(m<9)
X74HC595(++m);
else if(m==9)
{
m=0;
X74HC595(m);
}
}
}
}
以上是灯光校验程序的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>