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

📄 project based on embeded system(c51).txt

📁 一个基于嵌入式内核做的项目的源代码(c51的).
💻 TXT
📖 第 1 页 / 共 5 页
字号:
** 全局变量: 无
** 调用模块: 
**        
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void da5615(unsigned int da)
{
unsigned char i;
da<<=6;

CS_DA=0;
SPI_CLK=0;

for (i=0;i<12;i++)
{
SPI_DATA=(bit)(da&0x8000);
SPI_CLK=1;
da<<=1;
SPI_CLK=0;
}

CS_DA=1;
SPI_CLK=0;
for (i=0;i<12;i++);
} 

/*********************************************************************************************************
** 函数名称: Wenkong(void)
** 功能描述:  温控任务这里直接输出了数值,将pi控制的部分已经删除
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 
**        
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

        void Wenkong(void)
{

    while (1)
    {
        da5615(wendu);
            //在此省略了温度的反馈和控制
                OSWait(K_TMO,20);
    }

}
/*********************************************************************************************************
** 函数名称: Time_0() interrupt 1
** 功能描述: 流量反馈的记数,每有一个液滴下落,就向队列中发一个消息
** 输 入: 无
** 输 出: 无
** 全局变量: 
** 调用模块: 
**            OSQIntPost(),
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


#if EN_OS_INT_ENTER >0 
#pragma disable                                         /* 除非最高优先级中断,否则,必须加上这一句                 */
#endif

void Time_0() interrupt 1
{ 


#if EN_OS_INT_ENTER >0
    OS_INT_ENTER();                                     /* 进入中断处理             */
#endif
    OSQIntPost(Drip, 2);
    TH0=T0_INT/256;
    TL0=T0_INT%256;     //T0定时器的初值
    OSIntExit();                                        /* 退出中断处理             */
}
void IntiT0()
{

    TMOD=TMOD & 0xf0;
    TMOD = TMOD | 0x05;    
    TH0=T0_INT/256;
    TL0=T0_INT%256;     //T0定时器的初值
    TR0=1;
}
/*********************************************************************************************************
** 函数名称: Liuliang()
** 功能描述:  流量控制任务,这里把一些特殊情况处理的部分去掉了,
              只有已经输入量大于设定输入量,就停止的功能了
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: OSQCreate(),OSQPend(),
**        
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void Liuliang()
{
    uint8 temp;
    OSQCreate(Drip,5);                      
    IntiT0();
     while (1)
    {    
           OSQPend(&temp,Drip,0);
        dripnub++;//流量反馈具体数据已经去掉
        switch(moshi)
        {
        case 1:
            if(dripnub>3)
            {
                dripnub=0;
                yijing++;
        
            }
        break;
        case 2:
            if(dripnub>3)
            {
                dripnub=0;
                yijing++;
            
            }
        break;
        case 3:
            if(dripnub>3)
            {
                dripnub=0;
                yijing++;
            
            }
        break;
        case 4:
            if(dripnub>3)
            {
                dripnub=0;
                yijing++;
            
            }

        break;
        default :
        break;
        }

        if(yijing>sheding)//如果已经输入的数值大于设定的数值,停止运行
        {
            run=0;
        }
    }

}

/*********************************************************************************************************
** 函数名称: INT_1() interrupt 2
** 功能描述: 消音键
** 输 入: 无
** 输 出: 无
** 全局变量: 
** 调用模块: 
**            OSQIntPost(),
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


void INT_1() interrupt 2
{ 


#if EN_OS_INT_ENTER >0
    OS_INT_ENTER();                                     /* 进入中断处理             */
#endif
    


    if(shengyin==0)
    {
        shengyin=1;
    }
    else
    {
        shengyin=0;
        speaker=1;                        //停止蜂鸣器
    }
    OSIntExit();                                        /* 退出中断处理             */
}



/*********************************************************************************************************
** 函数名称: Baojing()
** 功能描述:  报警任务,
** 输 入: 无
** 输 出: 无
** 全局变量: setbaojing,
** 调用模块:
**        
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void Baojing()
{


  
  while(1)
  {  
       if(setbaojing==1)
    {
        //报警的方法已经去掉
    }
    else
    {
        OSWait(K_TMO,OS_TICKS_PER_SEC );
    }


  }
}

/*********************************************************************************************************
** 函数名称: TimeSum
** 功能描述: 让红色个发光二极管闪动任务
** 输 入: 无
**
** 输 出: 无
** 全局变量: ShowCase
** 调用模块: OSWait
**
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
   


         void TimeSum(void)
{
    while (1)
    {
        red=0;
        OSWait(K_TMO,OS_TICKS_PER_SEC / 10);
        red=1;
        OSWait(K_TMO,(OS_TICKS_PER_SEC + 1) / 10);
    }
}
/*********************************************************************************************************
** 函数名称: LcdCommand(void)
** 功能描述: 液晶显示任务,根据主控任务传递过来的命令和数据显示在液晶上面
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: OSSemCreate(),OSQPend()
**            以及其他与显示有关的所有函数
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/



        void LcdCommand(void)
{
    uint8 data temp;
                                                    /* 初始化使用到的信号量 */
    while (1)
    {
        OSQPend(&temp,CommandData,0);               /* 等待消息             */
        switch (temp)
        {
            case CYEMIAN:
                switch(serial[1])
                {
                    case 1:
                        Showpage1();
                    break;
                    case 2:
                        Showpage2();
                    break;
                    case 3:
                        Showpage3();
                    break;
                    case 4:
                        Showpage4();
                    break;
                    case 5:
                        Showpage5();
                    break;
                    case 6:
                        Showpage6();
                    break;
                    case 7:
                        Showpage7();
                    break;
                    case 8:
                        Showpage8();
                    break;
                    case 9:
                        Showpage9();
                    break;
                    case 10:
                        Showpage10();
                    break;
                    case 11:
                        Showpage11();
                    break;
                    case 12:
                        Showpage12();
                    break;
                    case 13:
                        Showpage13();
                    break;
                    case 14:
                        Showpage14();
                    break;
                    default:
                    break;
                    
                }
                
            break;
            case CMOSHI:
                moshi=serial[1];
                Showmoshi(moshi);
            break;
            case CSHEDING:
                sheding=256*serial[1]+serial[2];
                if(serial[3]==0)
                {
                    Showsheding(sheding);
                }
                else
                {
                    Showshedingfan(sheding);
                }
            break;
            case CYIJING:
                yijing=256*serial[1]+serial[2];
                if(serial[3]==0)
                {
                    Showyijing(yijing);
                }
                else
                {

⌨️ 快捷键说明

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