欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
PIC12F508項目程序(版權所有,謝絕轉載)
[打印本頁]
作者:
huge
時間:
2015-2-18 23:24
標題:
PIC12F508項目程序(版權所有,謝絕轉載)
版權所有,謝絕轉載,此程序僅供學習參考,請勿做商業用途,謝謝!
#include<htc.h>
#include "main.h"
__CONFIG(MCLRDIS&WDTDIS&PROTECT&INTRC); //設置配置位(MCLR腳復位禁止,看門狗關,無代碼保護,內部RC振蕩)
volatile unsigned char Key_Flag=0; /*****用于識別按鍵是否按下的標志*****/
volatile unsigned char Fluid_Flag=0; //流量標志
volatile unsigned char Press_Flag=0; //壓力標志
volatile unsigned char Test_Count=0; //轉存計數器計數值
volatile unsigned char Time_Flag=0; //時間次數標志
/*****延時毫秒級函數*****/
void Delay_Ms(unsigned char Ms_Time)
{
unsigned char t;
while(Ms_Time--)
{
for(t=0;t<165;t++);
}
}
/*****延時秒級函數*****/
void Delay_Sec(unsigned char Sec_Time)
{
unsigned char m;
for(m=0;m<Sec_Time;m++)
{
Delay_Ms(251);
Delay_Ms(251);
Delay_Ms(251);
Delay_Ms(252);
}
}
/*********按鍵掃描函數**********/
void Key_Scan(void)
{
Key_Flag=0; //掃描鍵盤之前先將按鍵標志清零
if(Key==0)
{
Delay_Ms(10); //延時去抖
if(Key==0)
{
while(!Key); //等待K1鍵釋放
Key_Flag=1;
}
}
}
/*********流量壓力監測函數**********/
void DetectWater(void)
{
unsigned char Num=30; //壓力檢測次數
unsigned char Press_Count=0; //壓力計數器
Press_Flag=0;
Fluid_Flag=0;
TMR0=0x00;
do
{
if(Press_In==1) //有壓力,則壓力計數器加1
{
Press_Count++;
}
Delay_Ms(100); //延時
Num--; //壓力檢測次數減1
}while(Num); //壓力檢測完成
if(Press_Count>=20) //壓力數據處理
{
Press_Flag=1;
}
else
{
Press_Flag=0;
}
Test_Count=TMR0; //讀取計數器的計數值,存入Test_Count
if(Test_Count>=3) //流量數據處理
{
Fluid_Flag=1;
}
else
{
Fluid_Flag=0;
}
}
/*********主函數***********/
void main(void)
{
Delay_Ms(20); //上電延時100毫秒,以保證電源可靠供電
OPTION=0xE0; //計數器初始化
TRIS = 0xFC; //繼電器和LED_RED設為輸出 壓力設為輸入,流量使用T0CKI輸入計數
TMR0= 0x00;
Red_Led=0; //紅燈熄滅
Relay_Out=1; //水泵強制啟動8秒
Delay_Sec(7);
DetectWater(); //流量壓力檢測
while(1)
{
/**************正常供水開始*********************/
if(Fluid_Flag==1) //只要有流量,則水泵一直啟動正常供水
{
Time_Flag=1; //進入正常供水標志
Red_Led=0; //紅燈熄滅
Relay_Out=1;
do
{
DetectWater();
}
while(Fluid_Flag); //沒有流量,則終止循環
}
/**************正常供水完成*********************/
/**************保壓停機開始*********************/
if((Fluid_Flag==0)&&(Press_Flag==1)) //沒有流量,有壓力則進入保壓停機
{
unsigned char Detect_Num=30;
Time_Flag=1; //進入保壓停機標志
TMR0=0;
do
{
Delay_Ms(100);
Detect_Num--;
}
while(Detect_Num);
Test_Count=TMR0;
if(Test_Count>=3)
{
break;
}
else
{
Relay_Out=0;
while(1)
{
TMR0=0;
Detect_Num=30;
do
{
Delay_Ms(90);
Key_Scan();
Detect_Num--;
}
while((Detect_Num)&&(!Key_Flag)&&(Press_In));
Test_Count=TMR0;
if((Test_Count>=3) || (Key_Flag) || (Press_In==0))
{
break;
}
}
break;
}
}
/**************保壓停機完成*********************/
/**************缺水保護開始*********************/
if((Fluid_Flag==0)&&(Press_Flag==0)) //沒有流量,沒有壓力則進入缺水循環
{
unsigned char Check_Num=7;
unsigned int Number=0;
Red_Led=1;
if(Time_Flag==1) //識別是從開始就缺水還是從正常供水轉入到缺水狀態
{
Check_Num=10;
}
do //繼續運行20秒后水泵停機,同時紅燈亮
{
DetectWater();
Check_Num--;
}
while((!Fluid_Flag)&&(Check_Num));
if(Fluid_Flag==1)
{
break;
}
/************缺水停30秒,若有按鍵按下,則重新啟動******************/
Relay_Out=0;
Check_Num=60;
do //缺水停30秒,期間進行按鍵掃描,并且紅燈閃爍
{
Red_Led=0;
Delay_Ms(240);
Key_Scan(); //掃描按鍵
if(!Key_Flag)
{
Red_Led=1;
Delay_Ms(240);
Key_Scan();
Check_Num--;
}
}
while((!Key_Flag)&&(Check_Num)); //時間到或者有按鍵按下,跳出循環
if(Key_Flag==1) //有按鍵按下,則重新啟動并檢測
{
break;
}
/************30秒停止時間到,進入啟動4分鐘檢測水流和水壓流量和壓力*************/
Relay_Out=1;
Red_Led=1;
Delay_Sec(8);
Check_Num=78;
do
{
DetectWater();
Check_Num--;
}
while((!Fluid_Flag)&&(Check_Num)); //有流量或者啟動4分鐘時間到,則跳出循環
if(Fluid_Flag==1) //有流量則跳出循環返回到while循環
{
break;
}
/************時間到,則進入停止3小時**************/
Relay_Out=0;
Number=22587;
do
{
Red_Led=0;
Delay_Ms(240);
Key_Scan(); //掃描按鍵
if(!Key_Flag)
{
Red_Led=1;
Delay_Ms(240);
Key_Scan();
Number--;
}
}
while((!Key_Flag)&&(Number));
break;
}
/**************缺水保護完成*********************/
}
}
#ifndef __MAIN_H__
#define __MAIN_H__
#define Relay_Out GP0
#define Red_Led GP1
#define Fluid_In GP2
#define Press_In GP3
#define Key GP4
void Delay_Ms(unsigned char Ms_Time);
void Delay_Sec(unsigned char Sec_Time);
void GPIO_Port_Init(void);
void Start_Count_Fluid(void);
void Stop_Count_Fluid(void);
void Detect_Water(void);
void Key_Scan(void);
#endif
作者:
西邊無法
時間:
2015-10-24 08:07
有保護自己勞動成果的意識。程序寫的不錯,值得學習、借鑒。贊一個!
作者:
xjtpolice
時間:
2015-12-3 16:05
贊一個,不錯
作者:
tranhunga
時間:
2017-5-7 18:53
贊一個
作者:
prostone
時間:
2017-11-8 22:15
PIC12F508只有8pin 樓主又把 watchgog禁止掉,target又是電感性的閥體,
想來硬體保護須作的非常完備,否則一干擾就有可能死機,哈~~
不想microchip先前的cmos otp抗雜訊一級棒,改到這些年頭都是flash,抗雜訊能力每下愈況,令人不勝唏噓...
作者:
rz1976
時間:
2018-8-24 14:57
贊一個
作者:
jjwangxu2008
時間:
2018-8-27 08:56
贊一個
作者:
luyea
時間:
2018-10-24 22:59
贊一個
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1