谁能帮我解释下这个单片机花样流水灯程序?
#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodePattern_P0[]=...
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Pattern_P0[]=
{
0xfc,0xf9,0xf3,0xe7,0xcf,0x9f
};
uchar code Pattern_P2[]=
{
0xf5,0xf6,0xfe,0x54,0x56,0x76,0xd7,0x49,0xa9,0xe4,0xc6
};
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void main()
{
uchar i;
while(1)
{
for(i=136;i>0;i--)
{
P0=Pattern_P0;
P2=Pattern_P2;
DelayMS(150);
}
}
}
现象是花样流水灯.
这个程序小弟咋看不懂捏?这个数组是什么意思?以及这个for循环, 进入for循环的时候i=136, 那P0数组里选的是哪个数呢? 应该没有136这个值啊?
补充下 这个程序可以实现花样流水灯 我在proteus里仿真的 展开
#define uchar unsigned char
#define uint unsigned int
uchar code Pattern_P0[]=
{
0xfc,0xf9,0xf3,0xe7,0xcf,0x9f
};
uchar code Pattern_P2[]=
{
0xf5,0xf6,0xfe,0x54,0x56,0x76,0xd7,0x49,0xa9,0xe4,0xc6
};
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void main()
{
uchar i;
while(1)
{
for(i=136;i>0;i--)
{
P0=Pattern_P0;
P2=Pattern_P2;
DelayMS(150);
}
}
}
现象是花样流水灯.
这个程序小弟咋看不懂捏?这个数组是什么意思?以及这个for循环, 进入for循环的时候i=136, 那P0数组里选的是哪个数呢? 应该没有136这个值啊?
补充下 这个程序可以实现花样流水灯 我在proteus里仿真的 展开
4个回答
展开全部
数组里的数是流水灯花样数据和或者位选吧。没有电路图,不好乱说。
i=136,这是循环的次数,FOR循环一共会执行到i=0时结束退出。
P0=Pattern_P0;这句话是错的,Pattern_P0是指针,指到第一个数据,估计流水流不起来。P0、P2永远不变。
在KEIL中调试,P0/P2均无变化。
您的仿真有误,就程序而言,肯定是不会变的。
i=136,这是循环的次数,FOR循环一共会执行到i=0时结束退出。
P0=Pattern_P0;这句话是错的,Pattern_P0是指针,指到第一个数据,估计流水流不起来。P0、P2永远不变。
在KEIL中调试,P0/P2均无变化。
您的仿真有误,就程序而言,肯定是不会变的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个程序有问题,不能实现花样流水灯,输出的永远是第一个值,它没有自增
可以这和写
P0=Pattern_P0[i%6];
P2=Pattern_P2[i%11];
可以这和写
P0=Pattern_P0[i%6];
P2=Pattern_P2[i%11];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的程序是有问题啊, 怎么能P0=Pattern_P0; P2=Pattern_P2;这样赋值呢?用一个变量控制P0和P2口的数组位置,就加个
void main()
{
uchar n;
uchar i;
while(1)
{
for(i=136;i>0;i--)
{
P0=Pattern_P0[n%6];
P2=Pattern_P2[n%11];;
n++;
DelayMS(150);
}
}
}
包你行了
void main()
{
uchar n;
uchar i;
while(1)
{
for(i=136;i>0;i--)
{
P0=Pattern_P0[n%6];
P2=Pattern_P2[n%11];;
n++;
DelayMS(150);
}
}
}
包你行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询