?? lx11a.c
字號:
//********************************
//產品名稱: NEW_KJ09H
//使用MCU: S3F9488
//FOSC = 3.2MHZ
//********************************
//#include "ioS3C9454.h"//
//#include "iobit.h" //IO端口位操作定義文件
//#include "intrinsics.h"//包含內部函數
//#include "stdio.h"//
//#include "math.h"//
//*************************************************************************
#include "Define1.h"
uchar Key=0;
uchar Biao_Zi=0;
uchar ArchDATA=0x07;
uchar TemperDATA1=0;
uchar Error_LED_DATA=0x02;
uchar SMGDATA2;//數碼管第二位特殊處理 有故障E顯示
#define Error_Bi_zi (Biao_Zi=Biao_Zi|0x01)
#define Ja_re_Bi_zi (Biao_Zi=Biao_Zi|0x02)
#define Set_Chao_wen_Bi_zi (Biao_Zi=Biao_Zi|0x04)
#define Set_LO_diang_Bi_zi (Biao_Zi=Biao_Zi|0x08)
#define Ok_Bi_zi (Biao_Zi=Biao_Zi& ~0x01)
#define No_Ja_re_Bi_zi (Biao_Zi=Biao_Zi& ~0x02)
#define Clr_Chao_wen_Bi_zi (Biao_Zi=Biao_Zi& ~0x04)
#define Clr_LO_diang_Bi_zi (Biao_Zi=Biao_Zi& ~0x08)
#define Test_Biao_Zi (Biao_Zi&0x01)
#define Test_Ja_re_Biao_Zi (Biao_Zi&0x02)
#define Test_Chao_wen_Bi_zi (Biao_Zi&0x04)
#define Test_LO_diang_Bi_zi (Biao_Zi&0x08)
#define Set_KeyDown (Key=Key|0x01)
#define On_ONOFFKey (Key=Key|0x02)
#define Clr_KeyDown (Key=Key& ~0x01)
#define Off_ONOFFKey (Key=Key& ~0x02)
#define Test_KeyDown (Key&0x01)
#define ONOFFKey (Key&0x02)
#define SMGDATA1 ArchDATA
#define SMGDATATS_Error_E (TemperDATA1/10)//數碼管第二位特殊處理 有故障E顯示 SMGDATA2
#define SMGDATA3 (TemperDATA1%10)
#define DECKey 0x01
#define ONOFF 0x02
#define INCKey 0x03
#define Error_LED_Chao_wen 0x01
#define Ok_LED_Ja_re 0x02
#define Error_LED_LO_diang 0x03
#define Error_SMG_Chao_wen 0x1
#define Error_SMG_LO_diang 0x2
//**************************************************************************
//========================主程序控制===========================
uchar IRQLed=0x0;
uchar T0count=0x0;
uchar T0count2=0x0;
uchar T0count3=0x0;
uchar T0count4=0x0;
uchar T0count5=0x0;
uchar XNDlay1=0;
uchar XNDlay2=0;
uchar XNDlay3=0;
uchar XNDlay4=0;
uchar XNDlay5=0;
uchar LOOP1=0x04;
uchar LOOP2_160us=0;
uchar LOOP3_120ms=0;
uchar LOOP4_1s=0;
uchar LOOP5_3s=0;
uchar LOOP6_6s=0;
uchar INT0BZ=0;//INT0中斷標志
uchar E2BJ=0;//E2標志
uchar E2=0;//E2返回值
uchar ZJBZ=0;//自檢標志
uchar LO=0;//漏電標志
uchar ZJSD=0;//自檢閃燈標志
/*
uchar INT1AJ=0x0;
uchar INT1sing=0x00;
*/
//uchar Data=((~0xbe)&0xfe);//=='---0x40';////0//0x06;//1//40;//0x06;//0xca;//0x65;//0x77;9//0x2e;0//0x3;//;0x1f;0xbe;//0x40;//
//uchar Data2=5;
//uchar LEDcount=5;
void main(void)
{
// uchar INC_key=0x1;
//***填充系統SMART OPTION***/
// uchar buffer = SmartOption[0];
//***初始化過程***//
chip_init();
//main_start:
//***主循環開始***//
// LedScan2(DigitCode[0]);
// iic_DelayNS2(1);
Set_P25;
Set_P00;//VG54123復位
Clr_P23;//蜂鳴器No響!!
while(1)
{ ei;
/*//////////////////Error check!//////////////////////// */
/*
Error_Bi_zi;
Clr_Chao_wen_Bi_zi;
Set_LO_diang_Bi_zi;
if(XNDlay3==1)
{
Set_Chao_wen_Bi_zi;
Clr_LO_diang_Bi_zi;
XNDlay3=0;
}
*/
Error_check();
KeyScan();
TemperDATA1=TempRSET(177);//TempADcon()
//TemperDATA1=14;
//Clr_P26;
/*
E2=1;
iic_DelayNS (30);
E2=0;
iic_DelayNS (30);
*/
if(XNDlay5==1)//3S zi ji one!
{XNDlay5=0;
E2=E2ZJ(2);//E2ZJ(5);//自檢高電平時間 短了 自檢不到 長了 自檢30R電阻發熱10
}//iic_DelayNS (30); //不加延時聲音沒那么純!!!!!! 30!!!!!!!!!
/*
if(ZJSD)//自檢閃燈標志3S閃燈!
{Set_P21;} //LED deng
else
{Clr_P21;}
if(E2!=0)
{FMQ(3);}
else//指示燈閃
{ //Clr_P26;
if(XNDlay1)//計時
{Set_P10;} //LED deng
else
{Clr_P10;}
}
if(LO==1)
{Set_P26;//LO diang 長鳴 只有斷電源才可以復位
}//LO=0;
*/
/*
if(LOOP6_6s)//計時
{Set_P21;} //LED deng
else
{Clr_P21;}
*/
/*
Set_P25;
iic_DelayNS (1);
Clr_P25;
iic_DelayNS (3);
*/
/*
Set_P25;
if(LOOP5)//3S
{Clr_P25;
if(LOOP3)//120MS
{Set_P25;}
}
*/
/*
if(INT0BZ!=0)
{Clr_P26;
Set_P21; //LED deng
iic_DelayNS (2);
Clr_P21;//
iic_DelayNS (2);
Set_P21; //LED deng
iic_DelayNS (2);
Clr_P21;//
iic_DelayNS (2);
Set_P21; //LED deng
iic_DelayNS (2);
Clr_P21;//
iic_DelayNS (2);
Set_P20;//每中斷一次 要復位一次VG54123
INT0BZ=0;
}
*/
/*
else
{
Set_P26; //蜂鳴器響!!!
while(LOOP3_120ms);
Clr_P26;
while(LOOP4_1s);
}
*/
/*
else
{
Clr_P26;
//LOOP4=0;
if(LOOP4_1s)//1s
{ Set_P26;
//LOOP3=0;
if(LOOP3_120ms)//120MS
{Clr_P26;} //蜂鳴器響!!!}
}}
*/
/* if(LOOP4==0)
{} */
/*
if(LOOP3==0)
{Set_P26;}
else
{Clr_P26;}
iic_DelayNS (10);
if(LOOP3==0)
{Set_P26;}
else
{Clr_P26;}
iic_DelayNS (10);
*/
/*
if(ONOFF==0x00)
{ Set_P22;
Set_P10;
Set_P11;}
else
{ Clr_P22;
Clr_P10;
Clr_P11;}
ei;
if (IRQLed==0x1)
{di;
if((LEDcount<15)&&(LEDcount>0))
{ LedScan2(DigitCode[LEDcount]);//display 0,1,2,3,--f 中斷將引起程序只走前兩步
//iic_DelayNS2(1);
}
else
{LEDcount=0;
LedScan2(DigitCode[LEDcount]);}
IRQLed=0x0;
ei;}
*/
}}// goto main_start;
float TempRSET(float TempAD)
{ float TempRSET2;
uchar AA,BB;
AA=(uchar)(((TempAD*5.00/255.00)*22.00));//137254901960784313725490196078;//
BB=(uchar)((5.00-(TempAD*5.00/255.00)));//0.0196078143725490196078431372549);//
//TempRSET2=(float)((uchar)(((TempAD*5.00/255.00)*22.00))/(uchar)((5.00-(TempAD*5.00/255.00))));
TempRSET2=(float)AA/BB;//((uchar)(((TempAD*5.00/255.00)*22.00))/(uchar)((5.00-(TempAD*5.00/255.00))));
/*TempRSET2=(char)(((TempAD*5/255)*22)/(5-(TempAD*5/255)));*/
return (TempRSET2);
}
void KeyScan(void)
{uchar TempKey1,TempKey3;//TempKey2,
// di;可以不禁止中斷
Clr_WatchDog;
TempKey1=ADcon();
Delay(4);//iic_DelayNS2(1); //
/*
TempKey2=ADcon();
if(TempKey1!=TempKey2)
goto Key_back;
Delay(2);*/
TempKey3=ADcon();
if(TempKey1!=TempKey3)
goto Key_back;
/**********一定要有按鍵按下和彈起識別標志 不然數據更新太快 看不清************/
if(TempKey3==0xff)
{Clr_KeyDown;
goto Key_back;}
if(Test_KeyDown)goto Key_back;
Set_KeyDown;
E2=1;
switch(TempKey3)
{case 0xff:
break;
case DECKey:
{if(ONOFFKey)
{ArchDATA--;
if(ArchDATA>9)ArchDATA=0;
}
break;}
case ONOFF:
{ if(ONOFFKey)
{Off_ONOFFKey;
Clr_P22;
Clr_P21;
Clr_P20; }
else
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -