找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1891|回復(fù): 7
收起左側(cè)

程序錯誤,請教一下,這個是什么問題

[復(fù)制鏈接]
ID:97678 發(fā)表于 2020-1-9 13:49 | 顯示全部樓層 |閱讀模式
這個程序里是什么錯誤?


#include "func.h"
#include "main.h"
#include "io.h"
sbit Test=P2^2;
extern u8 IsDebug;
void WaitACZero(void)
{
    int i;    //while(Zero);while(!Zero);
    i=1;
}
void Delay1ms()        //@11.0592MHz
{
    unsigned char i, j;
    i = 11;
    j = 190;
    do
    {
        while (--j);
    } while (--i);
}
u32 allWorkTime=(s32)3600*(s32)65535;
void update_allWork(void){ReadBytes(0x100,4,&allWorkTime);if(allWorkTime==0xffffffff)allWorkTime=0;}
void save_allWork(void){    WriteBytes(0x100,4,&allWorkTime);}

void update_SetTemp(void){ReadBytes(0x200,1,&SetTemp);if(SetTemp==0xff)SetTemp=0;}
void save_SetTemp(void){WriteBytes(0x200,1,&SetTemp);}
u8 t123456[6];
void update_t123456(void)
{
    u8 i;
    ReadBytes(0x300,6,t123456);
    for(i=0;i<6;i++)
    {
        if(t123456[i]==0xff || t123456[i]==0)return;
    }
    t1=t123456[0];
    t2=t123456[1];
    t3=t123456[2];
    t4=t123456[3];
    t5=t123456[4];
    t6=t123456[5];
}
void save_t123456(void)
{
    t123456[0]=t1;
    t123456[1]=t2;
    t123456[2]=t3;
    t123456[3]=t4;
    t123456[4]=t5;
    t123456[5]=t6;
    WriteBytes(0x300,6,t123456);
}
void delay_ms(u32 t)
{
    u32 i;
    for(i=t;i>0;i--)
        Delay1ms();
}

STATUS status=Reset;
STATUS status_next=Reset;

void main_control()//call for every 10ms
{
    static u16 cWaitTemp=0;
    static u16 cStarting=0;
    static u16 cT12=0,cT6=0,cKey=0,c1S=0;
    static u32 cT34=0;
    switch(status)
    {
        case Reset:
            cWaitTemp=0;cT12=0;cT6=0;cKey=0;cT34=0,c1S=0;
            Motor1_OFF;Motor2_OFF;Motor3_OFF;Motor4_OFF;
            Pump1_OFF;Pump2_OFF;Pump3_OFF;
          if(cStarting++==10){
                if(!IsDebug){
                    Pump4=1;
                    update_allWork();
                    update_SetTemp();
                    update_t123456();
                }
            }else if(cStarting==15){
                Pump4=0;
                status_next=WaitForKey;
                cStarting=0;
            }
            break;
        case WaitForKey:
            if(Key)cKey=0;else cKey++;
            if(cKey>5){ cKey=0;status_next=WaitForTemp;    }
            break;
        case WaitForTemp:
            if(Temp > SetTemp)
            {
                status_next=Starting;cWaitTemp=0;Motor4_OFF;
                Pump1_ON;Pump2_ON;
                WaitACZero();
                Motor3_ON;Motor2_ON;
            }    else if(cWaitTemp++==10){WaitACZero();Motor4_ON;}
            
            if(Key)cKey=0;else cKey++;
            if(cKey>tKey*10){ cKey=0;status_next=Reset;    }
            
            break;
        case Starting:
            if(cStarting++==t5*10)
            {
                status_next=Started;cStarting=0;
                WaitACZero();
                Motor1_ON;
                Pump3_ON;
            };
            Test=~Test;
            break;
        case Started:
            /*閥門*/
            cT12++;
            if(cT12<t1){Pump1_ON;Pump2_OFF;}
            else if(cT12<(t1+t2)){Pump1_ON;Pump2_ON;}
            else if(cT12<(t1+t2+t1)){Pump1_OFF;Pump2_ON;}
            else if(cT12<(t1+t2+t1+t2)){Pump1_ON;Pump2_ON;}
            else cT12=0;
            /**/
            cT34++;
            if(cT34<t3*10)Pump3_ON;
            else if(cT34<(t3*10+t4*10*60*10))Pump3_OFF;
            else cT34=0;
            
            
            if(Key)cKey=0;else cKey++;
            if(cKey>tKey*10){ cKey=0;status_next=Stoping;    }

            if(Temp < SetTemp-5 && Motor4==1){WaitACZero();Motor4_ON;}
            else if(Temp > SetTemp && Motor4==0){Motor4_OFF;}
            /*work*/
            if(c1S++==10){allWorkTime++;c1S=0;}
            break;
        case Stoping:
            Motor1_OFF;
            Motor4_OFF;        //Pump1_OFF;Pump2_OFF;
          Pump3_OFF;        /*閥門*/
            cT12++;
            if(cT12<t1){Pump1_ON;Pump2_OFF;}
            else if(cT12<(t1+t2)){Pump1_ON;Pump2_ON;}
            else if(cT12<(t1+t2+t1)){Pump1_OFF;Pump2_ON;}
            else if(cT12<(t1+t2+t1+t2)){Pump1_ON;Pump2_ON;}
            else cT12=0;
            /**/
            Pump4=~Pump4;
            cT6++;
            if(cT6<t6*10);
            else {
                cT6=0;
                status_next=Reset;
                if(!IsDebug)save_allWork();
            }
            break;
        default:
            break;
    }
    status=status_next;
}
回復(fù)

使用道具 舉報

ID:584814 發(fā)表于 2020-1-9 16:30 | 顯示全部樓層
最大的錯誤是一句注釋都沒有
回復(fù)

使用道具 舉報

ID:684474 發(fā)表于 2020-1-10 09:42 | 顯示全部樓層
報的錯誤是什么?
回復(fù)

使用道具 舉報

ID:158375 發(fā)表于 2020-1-10 09:52 | 顯示全部樓層
次大的錯誤是一句都沒有說程序是干嘛的
回復(fù)

使用道具 舉報

ID:681455 發(fā)表于 2020-1-10 10:52 來自觸屏版 | 顯示全部樓層
生成hex的時候keil下面是怎么寫的
回復(fù)

使用道具 舉報

ID:282850 發(fā)表于 2020-1-10 15:32 | 顯示全部樓層
沒看見有錯誤,很好的程序和問題。
回復(fù)

使用道具 舉報

ID:282850 發(fā)表于 2020-1-10 15:34 | 顯示全部樓層
再次看,確定是內(nèi)核壞了,換一個就好。
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2020-1-10 17:28 | 顯示全部樓層
沒有原理圖、沒有實物,誰能知道怎么來找問題
寫程序要養(yǎng)成良好的備注習(xí)慣,不然別人怎么看的懂你的代碼  
你這個程序不完整,沒法給你看是哪里出問題了!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表