#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 编辑 ]
|