⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test1.c

📁 功能测试
💻 C
字号:
/
#include "c:\c51\STC54.h"

#define inc     P17
#define dec     P14
#define set     P32
#define fall    P33
#define velo_out P34

#define ing     'D'
#define velo    'A'
#define water   'C'
#define oil     'B'
#define lamp    'L'
#define all     'S'

bit auto_,run,key_mark,err,comm_work,next,rec_mark,set_var,edit,half,set_t,
    ti_mark,velo_mark;
unsigned char count1,dip[5],addrl,status,dip_mark,count,set_time[3],number,meter_t;
unsigned int lamp_number,peri0,peri1;
union
{
    char a[2];
    int ax;
}period;

union
{
    char a[3];
    unsigned int ax;
}buff;

union
{
    int ax;
    char a[2];
}period0;

union
{
    int ax;
    char a[2];
}period1;

void key_fun();
void next_work();
void cacl_period();
void stop_work();

extern control_relay(char);
extern test_lamp(char,char);

void time0() interrupt 1
{
    if (status==velo && ++count>0x10)
    {
        count=0;
        SBUF='X';
    }
}

/******* 串行口中断接受上级机命令 **********************/
void receive() interrupt 4  using 1
{
unchar n;
static int m;
    if (TI)
    {
        TI=0;
        ti_mark=1;
    }
    else if (RI)
    {
        RI=0;                          
        n=SBUF;
        if (n==0xd)               
        {
            rec_mark=1;               
            buff.ax=m;
            m=0;
        }
        else if (n>0x40 && n<0x5b)
        {
            if (n==velo)
            {
                count=0;
            }
            else if (n=='S')
            {
                CCAPM0=0;
                CCAPM1=0;
                lamp_number=0;
                test_lamp(&lamp_number,1);
                control_relay(0);
            }
            else if(n=='K')
                SBUF='K';

            status=n;
            m=0;
        }
        else if (n>0x2f && n<0x3a)      
        {
            m=m*10+(n & 0xf);
        }
    }
}

void pca() interrupt 6
{
    if (CCF0)              
    {                     
        CCF0=0;
        period0.ax=period0.ax+peri0;
        CCAP0L=period0.a[1];
        CCAP0H=period0.a[0];
    }
    if (CCF1)               
    {                     
        CCF1=0;
        period1.ax=period1.ax+peri1;
        CCAP1L=period1.a[1];
        CCAP1H=period1.a[0];
    }
}

main()
{
    TMOD=0x21;         
    SCON=0x50;          
    TH1=0xf3;           
    TCON=0x55;
    SBUF='A';
    IE=0xd2;     
    CCON=0x40;  
    test_lamp(&lamp_number,1);
    control_relay(0);
    /********        主程序             ***************/
    for (;;)
    {
        if (!inc || !dec || !set || !fall)
        {
            if (!key_mark)
            {
                delay(1);
                if (!inc || !dec || !set || !fall) key_fun();
            }
        }
        else key_mark=0;
        if (rec_mark)
        {
            rec_mark=0;
            next_work();
        }
        if (velo_out!=velo_mark)
        {
            velo_mark=velo_out;
            count=0;
        }
    }
}

void next_work()                      
{
unsigned long l;
    if (status==ing)                   
    {
        if (buff.ax==0)/
        {
            CCAPM1=0;
        }
        else                        
        {
            CCAPM1=0x4d;
            cacl_period();
        }
    }
    else if (status==velo)          
    {
        if (buff.ax==0)              
        {
            CCAPM0=0;
        }
        else                          
        {
            CCAPM0=0x4d;
            cacl_period();
        }
    }
    else if (status==water)             
    {
        control_relay(buff.a[1]);
        /*if (buff.ax==0)               
        /*{
            temp_meter=0;
        }
        else                         
        /*{
            l=(buff.ax-51);
            buff.ax=l*1024/1250;
            P0=buff.a[1];
            if (buff.a[0] & 2) D_A_H=1;
            else D_A_H=0;
            if (buff.a[0] & 1) D_A_L=1;
            else D_A_L=0;
            temp_meter=1;
            oil_meter=0;
        }*/
    }
    else if (status==oil)               
    {
        control_relay(buff.a[1]);
        /*if (buff.ax==0)              
        /*{
            oil_meter=0;
        }
        else                          
        /*{
            l=(buff.ax-51);
            buff.ax=l*1024/1250;
            P0=buff.a[1];
            if (buff.a[0] & 2) D_A_H=1;
            else D_A_H=0;
            if (buff.a[0] & 1) D_A_L=1;
            else D_A_L=0;
            oil_meter=1;
            temp_meter=0;
        }*/
    }
    else if (status==lamp || status==all)
    {
        if (buff.ax==0) lamp_number=0;
        else if (buff.ax<16)
        {
            lamp_number=1<<(buff.ax-1);
        }
        else lamp_number=0x0000;
        if (buff.ax==17) lamp_number=0xffff;
        test_lamp(&lamp_number,2);
    }
}
/********  键功能函数  ************/
void key_fun()
{
char n;
    key_mark=1;
/********  SET    *********/
    if (!set)                        
    {                                
        while (!ti_mark);
        ti_mark=0;
        SBUF='B';
    }
/******   +     ********/
    else if (!inc)
    {                                   
        while (!ti_mark);
        ti_mark=0;
        SBUF='U';
    }
/******   -        *******/
    else if (!dec)
    {                                 
        while (!ti_mark);
        ti_mark=0;
        SBUF='D';
    }
/*************************/
    else if (!fall)                    
    {
        while (!ti_mark);
        ti_mark=0;
        SBUF='F';
    }
}

void cacl_period()
{
unint ax;
    ax=5000000/buff.ax;
    if (status==velo)
    {
       peri0=ax;
    }
    else peri1=ax; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -