标题: while大循环没有 什么原因啊 [打印本页]

作者: hujia    时间: 2014-8-24 12:24
标题: while大循环没有 什么原因啊
本帖最后由 hujia 于 2014-8-24 12:32 编辑

while大循环没有  什么原因啊

#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,
0x5e,0x79,0x71,0x00};
void delay(uint);
sbit k=P1^4;
sbit duan=P2^6;
sbit wei=P2^7;
void main()
{
        k=0;
        wei=1;
        P0=0x00;
        wei=0;
        while(1)
        {
                for(num;num<16;num++)
                        {
                                 duan=1;
                                P0=table[num];
                                duan=0;
                                delay(1000);
                        }
        }
}
void delay(uint z)
{
        uint x,y;
                for(x=z;z>0;z--)
                        for(y=110;y>0;y--);

}

作者: hujia    时间: 2014-8-24 12:26
#include"reg52.h" #define uchar unsigned char #define uint unsigned int uchar num; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39, 0x5e,0x79,0x71,0x00}; void delay(uint); sbit k=P1^4; sbit duan=P2^6; sbit wei=P2^7; void main() {         k=0;         wei=1;         P0=0x00;         wei=0;         while(1)         {                 for(num;num<16;num++)                         {                                  duan=1;                                 P0=table[num];                                 duan=0;                                 delay(1000);                         }         } } void delay(uint z) {         uint x,y;                 for(x=z;z>0;z--)                         for(y=110;y>0;y--);  }
作者: liaolinhui    时间: 2014-8-24 12:39
感觉你这程序有很多错误,你先说说你这程序要来干什么的,外部线路怎么接的才好判断
作者: liaolinhui    时间: 2014-8-24 12:55
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
uchar num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,
0x5e,0x79,0x71,0x00};
void delay(uint);//uint多余,申明函数不需要uint
sbit k=P1^4;//多余,看样子你是想用P0口驱动一个数码管吧,这个都没用上
sbit duan=P2^6;//多余,这个虽然程序中有,但没必要用
sbit wei=P2^7;//这个也没用上
void main()
{
        k=0;
        wei=1;
        P0=0x00;
        wei=0;//上面这几句完全没用
        while(1)
        {
                for(num;num<16;num++)
                        {
                                 duan=1;
                                P0=table[num];
                                duan=0;//这个感觉完全没必要,你关掉延时后又打开只会让数码管变暗,
                                delay(1000);
                        }
        }
}
void delay(uint z)
{
        uint x,y;
                for(x=z;z>0;z--)
                        for(y=110;y>0;y--);

}
作者: hujia    时间: 2014-8-24 15:05
liaolinhui 发表于 2014-8-24 12:55
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int

太感谢你了,解释得非常详细。
作者: highffff    时间: 2014-8-25 10:32
你想做P0口输出LED7段数码管显示,间隔几秒钟显示一个数?
作者: hujia    时间: 2014-8-25 12:21
highffff 发表于 2014-8-25 10:32
你想做P0口输出LED7段数码管显示,间隔几秒钟显示一个数?

你好,,一秒
作者: highffff    时间: 2014-8-25 13:33
hujia 发表于 2014-8-25 12:21
你好,,一秒

3楼写的很详细了,按照他的做没问题~还有几个要注意,你的数码管共阳极还是共阴极;延时1秒可以用单片机工具去测,也可以用定时中断做




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1