共阳极数码管动态显示程序显示问题

2019-07-15 16:35发布

一个简单的共阳极数码管动态显示程序。
Q:当i=16时,按常理说数码管一直显示F,为什么会继续从0到F继续循环?
程序如下:
#include<reg52.h>
#define DUAN P0
#define uchar unsigned char
#define uint unsigned int

uchar code duan_code[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};

void delayMs(uint);

void main()
{
        uchar i=0;
        for(i=0;i<16;i++)
        {
                DUAN=~duan_code;//共阴取反(接下来应写if(i==16) i=0;   但忽略此if语句也可以达到效果,so why?)
                delayMs(500);
        }
}

void delayMs(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=113;j>0;j--);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
mcu_fan
1楼-- · 2019-07-16 23:22
dabing89 发表于 2015-7-18 11:29
你这孩子怎么还较真呢?呵呵,大家通用的学习方法就是加上while(1)
{
//代码

嘿嘿,多多尝试才好嘛!我也知道while(1){}是行的通哒!
dabing89
2楼-- · 2019-07-17 04:11
你加上WHILE(1);停在这里,看看是不是F
mcu_fan
3楼-- · 2019-07-17 09:19
 精彩回答 2  元偷偷看……
mcu_fan
4楼-- · 2019-07-17 11:17
dabing89 发表于 2015-7-18 11:34
你加上WHILE(1);停在这里,看看是不是F

待会试下!
dabing89
5楼-- · 2019-07-17 11:48
程序执行的是人的思维,你告诉他干什么他才干什么!!!如果你不告诉他停下来,他会乱执行下面的未知代码,造成单片机跑飞或者是复位,总之。。。。。。。
mcu_fan
6楼-- · 2019-07-17 12:09
dabing89 发表于 2015-7-18 11:39
程序执行的是人的思维,你告诉他干什么他才干什么!!!如果你不告诉他停下来,他会乱执行下面的未知代码,造成单片机跑飞或者是复位,总之。。。。。。。

嗯嗯,谢谢提醒,我会牢记在心的!
这个问题还真是有趣!我会继续探索的!

一周热门 更多>