?? 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 + -