菜鸟求助;我编的程序哪里出问题了?

[复制链接]
2756|6
 楼主| hzocce 发表于 2009-12-16 19:12 | 显示全部楼层 |阅读模式
本帖最后由 hzocce 于 2009-12-16 19:15 编辑

程序如下所示,是89C52单片机,其中的P1口接了8个LED,
用库函数是学会了怎样让LED闪烁。
今天是我是想用编码表依次让8个LED 闪烁。可我编好后下载到开发板后发现只有LED1,2,7,8一直亮着,其他的没有任何反应。

这是为什么,请大师帮我分析下,小弟感激不尽!
当然我只是想用编码表让LED闪烁。



#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay();
uchar num;
uchar code table[]=
{0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
};
void main()
{

while(1)
{
P1=table;
delay();
for(num=0;num<8;num++);
}
}
void delay()
{
uint x,y;
for(x=500;x>0;x--)
for(y=500;y>0;y--);
}
不亦心 发表于 2009-12-16 19:37 | 显示全部楼层
试试:
uchar num=0;
void main()
{
            while(1)
             {
                           P1=table[num];
                           delay();   
                           num++;
                           if(num==8)   num=0;                        
             }
}
huangqi412 发表于 2009-12-16 19:52 | 显示全部楼层
P1=table;
at80s 发表于 2009-12-16 20:13 | 显示全部楼层
2楼的说的是对的,你直接用
P1=table 不行 table只是一个地址你要指向里面的代码??
danpianjizui 发表于 2009-12-16 21:27 | 显示全部楼层
你定义的table是个数组,p1=table[num]  才能依次调用数组里的数值,从而点亮数码管
ningling_21 发表于 2009-12-17 09:18 | 显示全部楼层
二楼正解...
comelon 发表于 2009-12-17 09:39 | 显示全部楼层
LZ得好好复习C语言了!:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

617

帖子

4

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