#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit shcp=P1^0;
sbit ds=P1^1;
sbit stcp=P1^2;
sbit oe1=P1^6;
sbit oe2=P1^7;
uchar code table1[]={
0xaa,0x55,0xaa,0x55,
0xaa,0x55,0xaa,0x55};
uchar code table2[]={
0x01,0x02,0x04,0x08,
0x10,0x20,0x40,0x80};
uchar a,b,c,x,y,num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=124;y>0;y--);
}
void main()
{
while(1)
{
num=table1[x];
x++;
x=x%8;
for(b=0;b<8;b++)
{
num<<=1;
ds=CY;
shcp=1;
delay(5);
shcp=0;
}
stcp=0;
delay(5);
stcp=1;
delay(5);
stcp=0;
oe1=0;
delay(500);
oe1=1;
num=table2[y];
y++;
y=y%8;
for(c=0;c<8;c++)
{
num<<=1;
ds=CY;
shcp=1;
delay(5);
shcp=0;
}
stcp=0;
delay(5);
stcp=1;
delay(5);
stcp=0;
oe2=0;
delay(500);
oe2=1;
}
}
在仿真开始时候亮的第一个灯是错的。。。为什么啊?跪求帮助。。。。谢谢啦
如图,亮的P1口应该是4个灯,可只有三个,第一次亮了以后再亮就是好的,为什么啊?
[
本帖最后由 zq554747236 于 2011-11-14 12:11 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>