鱼C论坛

 找回密码
 立即注册
查看: 2242|回复: 10

请问一段代码的问题

[复制链接]
发表于 2014-1-8 23:00:44 | 显示全部楼层 |阅读模式
5鱼币
#include<reg51.h>

#define SHOW P0

sbit btnStart = P1^0;
sbit btnStop = P1^7;
sbit btnP = P1^1;
sbit btnR = P1^2;
sbit btnN = P1^3;
sbit btnD = P1^4;
sbit lwP = P2^0;
sbit lwN = P3^4;
sbit rwP = P2^1;
sbit rwN = P3^5;

int fStart = 0;
int fP = 0;
int fR = 0;
int fN = 0;
int fD = 0;

int segP = 0x8c;
int segR = 0x88;
int segN = 0xc8;
int segD = 0xa1;

void gearP();
void gearR();
void gearN();
void gearD();
void initial();
void delay(int time);

void main()
{
        initial();
        while(1)
        {
                if(btnStart == 0)
                {
                        while(btnStart == 0)
                        {
                                ;
                        }

                        fStart = 1;
                }

                if(btnStop == 0)
                {
                        while(btnStop == 0)
                        {
                                ;
                        }

                        fStart = 0;
                }


                if(fStart == 1)
                {
                        if(btnP == 0)
                        {
                                while(btnP == 0)
                                {
                                        ;
                                }

                                fP = 1;
                                fR = 0;
                                fN = 0;
                                fD = 0;
                        }

                        if(btnR == 0)
                        {
                                while(btnR == 0)
                                {
                                        ;
                                }

                                fP = 0;
                                fR = 1;
                                fN = 0;
                                fD = 0;
                        }

                        if(btnN == 0)
                        {
                                while(btnN == 0)
                                {
                                        ;
                                }

                                fP = 0;
                                fR = 0;
                                fN = 1;
                                fD = 0;
                        }

                        if(btnD == 0)
                        {
                                while(btnD == 0)
                                {
                                        ;
                                }
                                
                                fP = 0;
                                fR = 0;
                                fN = 0;
                                fD = 1;
                        }


                        if(fP == 1)
                        {
                                gearP();
                        }

                        if(fR == 1)
                        {
                                gearR();
                        }

                        if(fN == 1)
                        {
                                gearN();
                        }

                        if(fD == 1)
                        {
                                gearD();
                        }
                }
                else
                {
                        initial();
                }
        }
}

void gearP()
{
        SHOW = segP;

        lwP = 1;
        lwN = 1;
        rwP = 1;
        rwN = 1;
}

void gearR()
{
        SHOW = segR;
        
        lwP = 0;
        lwN = 1;
        rwP = 0;
        rwN = 1;

        delay(20);

        lwP = 0;
        lwN = 0;
        rwP = 0;
        rwN = 0;

        delay(20);


}

void gearN()
{
        SHOW = segN;

        lwP = 0;
        lwN = 0;
        rwP = 0;
        rwN = 0;
}

void gearD()
{
        SHOW = segD;

        lwP = 1;
        lwN = 0;
        rwP = 1;
        rwN = 0;
}

void initial()
{
        fStart = 0;
        fP = 0;
        fR = 0;
        fN = 0;
        fD = 0;

        P0 = 0xff;
        P1 = 0xff;
        P2 = 0xff;
        P3 = 0xff;
}

void delay(int time)
{
        int i,j;
        for(i=0;i<time;i++)
        {
                for(j=0;j<120;j++)
                {
                        ;
                }
        }
}



SHOW = segR;
        
        lwP = 0;
        lwN = 1;
        rwP = 0;
        rwN = 1;

        delay(20);

        lwP = 0;
        lwN = 0;
        rwP = 0;
        rwN = 0;

        delay(20);这段    为什么后面延时一定要加
lwP = 0;
        lwN = 0;
        rwP = 0;
        rwN = 0;

        delay(20);不是有delay(20);了吗

最佳答案

查看完整内容

lwP = 0; lwN = 1; rwP = 0; rwN = 1;这4个信号是一组的,所以为了防止忘记对他们其中哪个赋值,所以每次都是4个一起赋值。这仅仅是为了方便看代码,你也可以不对那些值没改变的信号赋值,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-8 23:00:45 | 显示全部楼层
lwP = 0;
lwN = 1;
rwP = 0;
rwN = 1;这4个信号是一组的,所以为了防止忘记对他们其中哪个赋值,所以每次都是4个一起赋值。这仅仅是为了方便看代码,你也可以不对那些值没改变的信号赋值,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-9 03:02:54 | 显示全部楼层
难道一个两帖子还要散两次分?嘎嘎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-9 11:04:34 | 显示全部楼层
哥,你的问题是啥啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-1-9 13:50:51 | 显示全部楼层

if(btnR == 0)
                        {
                                while(btnR == 0)
                                {
                                        ;
                                }

                                fP = 0;
                                fR = 1;
                                fN = 0;
                                fD = 0;
                        }
这段请问一下 是不是btnR == 0就一直空循环在那   如果不是就执行
                                fP = 0;
                                fR = 1;
                                fN = 0;
                                fD = 0;这个呢????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-16 18:03:13 | 显示全部楼层
请问能不能把这个程序想干什么写上(还有注释)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-16 18:05:14 | 显示全部楼层
这场雨好安静 发表于 2014-1-9 13:50
if(btnR == 0)
                        {
                                while(btnR == 0)

是啊,这个程序好像有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-16 20:19:41 | 显示全部楼层
这场雨好安静 发表于 2014-1-9 13:50
if(btnR == 0)
                        {
                                while(btnR == 0)

这个while确实是等待btnR变为非零才退出循环。因为你的程序一定存在中断处理程序,该中断里将btnR变为非零了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-26 15:47:50 | 显示全部楼层
太长不看:huffy::huffy::huffy::huffy::huffy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-27 17:13:37 | 显示全部楼层
坑  这么长的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-9 20:40:14 | 显示全部楼层
好长的代码呀。。看得头的晕了~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 00:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表