📄 project based on embeded system(c51).txt
字号:
** 全局变量: 无
** 调用模块:
**
** 作 者: 陈杰峰 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 + -