微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问有逻辑错误吗?

请问有逻辑错误吗?

时间:10-02 整理:3721RD 点击:

利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数

显示

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit L=P3^0;


void delay(uint);


void main()

{

        uchar LED[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x06,0x77};

        uchar i=0,j=0;

        

        while(1)

        {

                  

                if(L==0)

                {        

                        delay(20);

                        if(L==0)

                        {        ++i;

                                if(i==10)

                                {

                                        i=0;

                                           if(j==10)

                                                j=0;

                                        else

                                                ++j;

                                }

                        }

                }

                        P1=LED;

                        P2=LED[j];

        }


}


void delay(uint t)

{

        uint z,a;

        for(z=t;z>0;z++)

                for(a=110;a>0;a--);


}


主函数里P1赋值是有问题的,应该是P1 = LED[i],延时函数第一个for循环最后因该是a--吧

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

网站地图

Top