我的595控制流水灯出错在哪?挥泪跪求帮助

2019-03-24 19:36发布

#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 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
jishuaihu
2019-03-25 01:14
没有用过595,对于这个芯片第一次发送数据的时候有没有类似启动接收之类的东西啊。你的现象应该是第一次发出去的数595第一位没有接收到,或者接收到了而被忽略了。你用的protues和keil连调了吗?可以但不运行看一下。

一周热门 更多>