菜鸟求高手帮忙,第一次发帖。

[复制链接]
 楼主| 51小刚 发表于 2011-5-20 19:25 | 显示全部楼层 |阅读模式
这是个花样流水灯的程序,请问P2是怎么执行的?谢谢!
#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[i];
                        P2=Pattern_P2[i];
                        DelayMS(150);
                }       
        }
}
 楼主| 51小刚 发表于 2011-5-20 19:33 | 显示全部楼层
对了,P2口是不接线的,我用的是普中的开发板!但屏蔽了P2,又实现不了了
liang7143 发表于 2011-5-20 20:30 | 显示全部楼层
for(i=136;i>0;i--)
                {
                         P0=Pattern_P0[i];
                        P2=Pattern_P2[i];
                        DelayMS(150);
                }

Pattern_P0[136]  这里会是一个神马值?
 楼主| 51小刚 发表于 2011-5-20 20:55 | 显示全部楼层
不知道,反正是P2没接线,但屏蔽了P2就不行了,那个应该是循环136次,轮流赋值吧!
原野之狼 发表于 2011-5-20 21:50 | 显示全部楼层
void main()
{
        uchar i;
        uchar n_p0,n_p2;

       n_p0 = sizeof(Pattern_P0) / sizeof(uchar);
       n_p2 = sizeof(Pattern_P2) / sizeof(uchar);


        while(1)
        {
                 for(i=136;i>0;i--)
                {
                         P0=Pattern_P0[i % n_p0];
                        P2=Pattern_P2[i % n_p2];

                        DelayMS(150);
                }        
        }
}
枫叶求缘 发表于 2011-5-21 08:18 | 显示全部楼层
关注
 楼主| 51小刚 发表于 2011-5-21 21:12 | 显示全部楼层
这个程序是可以执行的,而且改了i的初值会出错的,花样正常,不像是错误的程序
yqp0424 发表于 2011-5-21 23:51 | 显示全部楼层
数组越界了吧。。。
yuyi21ic 发表于 2011-5-22 11:59 | 显示全部楼层
是不是故意让数组越界,得到未知的数据进而看到“花样”流水灯?:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

943

帖子

1

粉丝

6

主题

943

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部