微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请各位大神帮忙看看,新人刚接触单片机

请各位大神帮忙看看,新人刚接触单片机

时间:10-02 整理:3721RD 点击:
做了一个用数码管显示数字,并且让数字每隔一段时间加1的程序,但里面的一个变量count出问题了,百思不得其解:我用count这个变量放在主循环里面每循环一次加1,到1000的时候就归零重新计数,同时显示数字num+1,达到延迟一定时间显示加1的效果,但是调试的时候发现count最大只能到255,然后就归零重计了,数据类型是unsigned int应该没错啊,请大神指教
程序如下:
void main()
{
        unsigned int count=0;
        long num=3420;
        while(1)
        {
                a[5]=num/100000%10;
                a[4]=num/10000%10;
                a[3]=num/1000%10;
                a[2]=num/100%10;
                a[1]=num/10%10;
                a[0]=num%10;
                disp();
                count++;
                if(count==1000)
                {
                        num++;       
                        count=0;
                }       
        }       
}
void disp()
{
        unsigned char i;
        for(i=0;i<6;i++)
        {
                WE=1;
                P0=wei[i];
                WE=0;
                DU=1;
                P0=numbercode[a[i]];
                DU=0;
                delay1ms();
        }
}

好像还真没看出啥问题来,把整个程序贴上来看看吧

前面没什么,就头文件和引脚定义#include <reg52.h>       
#include <intrins.h>
unsigned char numbercode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char wei[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
unsigned char a[5]=0;
sbit DU=P2^6;
sbit WE=P2^7;
void delay1ms(void)   //误差 -1.074652777778us
{
    unsigned char a,b;
    for(b=2;b>0;b--)
        for(a=215;a>0;a--);
}
void disp();

这是前面的部分

这个我也是遇到了,不知道怎么去解决的,而且课本上面的没有看懂

这个还真没遇到过,把他也放到最前面试试呢

估计是你调试器的问题而已

亲,我知道你这个问题在哪里,
void disp()
{
        unsigned char i;//吧这里修改成unsigned  int i试一试
        for(i=0;i<6;i++)
        {
                WE=1;
                P0=wei[i];
                WE=0;
                DU=1;
                P0=numbercode[a[i]];
                DU=0;
                delay1ms();
        }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top