📄 x20gdnzh1.c
字号:
12, //19 //100
13, //20 //105
14, //21 //110
15, //22 //115
17, //23 //120
18, //24 //125
19, //25 //130
21, //26 //135
22, //27 //140
24, //28 //145
25, //29 //150
27, //30 //155
28, //31 //160
30, //32 //165
31, //33 //170
32, //34 //175
34, //35 //180
36, //36 //185
};
//****************************************************
//看门狗 1.4s
//****************************************************
void dog(void)
{
EECS=0;
_nop_();
EECS=1;
}
//****************************************************
//特殊功能寄存器初始化
//****************************************************
void rest(void)
{
IP=0x02;//ET0,hige IP
TMOD=0x11;//T0 = MOD1 timer T1 = MOD1 timer
SCON=0;
PCON=0;
TCON=0x55;
RCAP2H=0xfc;
RCAP2L=0x66;
T2MOD=0xfc;
T2CON=0x04;//00000100B---TF2 EXF2 BCLK TCLK EXEN2 TR2 C/T2 CP/RL2
//DN=1;//低浓工作
GN=0;//高浓不工作
BJ=0;//不进行报警
DD=0;//不断电
//P0_7=0;
IE=0xa6;//10100110B---EA XX ET2 ES ET1 EX1 ET0 EX0
}
//*******************************************************************
//定时器0频率输出中断
//*******************************************************************
void TIM0(void) interrupt 1 //TIME0频率输出
{
TH0=timerh;TL0=timerl;
if(fp) { //fp是分频的标志
if(++countt>=64) {
P0_7=!P0_7;
countt=0;
}
}
else {
P0_7=!P0_7;
}
}
//*************************************************
//遥控器输入中断+定时器1
//*************************************************
void INTT1(void) interrupt 2 //外部中断处理遥控器输入
{
unsigned char countx; //累加记数
union x { //公用体处理遥控器
unsigned long int d;
unsigned char a[4];
unsigned int k;
}z;
z.a[0]=TH1;
z.a[1]=TL1;
TL1=0;TH1=0; //去定时时间,清定时器
if((z.k>=768)&&(1200>=z.k)) {flag=0;flag1=0;}//"0"
else if((z.k>=1536)&&(2400>=z.k)) {flag=1;flag1=0;}//"1"
else flag1=1;
if(flag1){
TL1=0;TH1=0;
} //flag=1 not "1" and "0"
else {
YK<<=1;
if(flag) YK++;
flag=0;
z.d=YK;
for(countx=0;countx<=16;countx++){
z.d<<=1;
if(z.a[0]==0xE2){
YKCODE=z.a[1];
enyk=1;
}//找到功能码退出
if(enyk){
YK=0;TL1=0;TH1=0;
break;
}
}
}
}
//-----------------------------------------------
//显示和定时中断
void TIM2(void) interrupt 5
{
unsigned char i;
if(alarmflag&&(alarmsec++>=500)){alarmsec=0;BJ=!BJ;}
if(sec++>=400){second1=1;//second2=1;second3=1;second4=1;
sec=0;}//0.4秒
if(min++>=60000){minute=1;gnflag=0;led1c=0;led1sc=0;tbuffer1=0;}//1分到不允许功能码显示不闪烁
if(min6++>=180000){minute6=1;min6=0;}//6分
P1=0xff;//清空显示
switch(dispcount)
{
case 0:
{
dispcount++;
if(!led1c)i=0xFF; //不显示功能码
else //显示功能码
{
if(led1sc) //功能码允许闪烁显示
{
if(second1)//0.5s到
{
second1=0;//清标志
led1s=!led1s;
}
else
{
if(led1s) {i=table[tbuffer1];if(led1p)i&=0x7F;}//第一位小数点显示 //闪烁不显示
else i=0xFF; //功能码单元
P1=i;
}
}
else
{
P1=table[tbuffer1];//功能码不允许闪烁显示
//P1=i;
if(led1p)P1_7=0;//P1&=0x7F;//第一位小数点显示
}
}
P2_0=0;P2_1=1;P2_2=1;P2_3=1;
break;
}
case 1:
{
dispcount++;
if(led2c)i=0xFF; //不显示功能码
else //显示功能码
{
if(led2sc) //功能码允许闪烁显示
{
if(second2)//0.5s到
{
//second2=0;//清标志
//led2s=!led2s;
}
else
{
if(led2s) {i=table[tbuffer2];if(led2p)i&=0x7F;}//第二位小数点显示//闪烁不显示
else i=0xFF; //功能码单元
P1=i;
}
}
else
{
P1=table[tbuffer2];//功能码不允许闪烁显示
//P1=i;
if(led2p)P1_7=0;//P1&=0x7F;//第二位小数点显示
}
}
P2_0=1;P2_1=0;P2_2=1;P2_3=1;
break;
}
case 2:
{
dispcount++;
if(led3c)P1=0xFF; //不显示功能码
else //显示功能码
{
if(led3sc) //功能码允许闪烁显示
{
if(second3)//0.5s到
{
//second3=0;//清标志
///led3s=!led3s;
}
else
{
if(led3s) {i=table[tbuffer3];if(led3p)i&=0x7F;}//第三位小数点显示 //闪烁不显示
else i=0xFF; //功能码单元
P1=i;
}
}
else
{
P1=table[tbuffer3];//功能码不允许闪烁显示
//P1=i;
if(led3p)P1_7=0;//P1&=0x7F;//第三位小数点显示
}
}
P2_0=1;P2_1=1;P2_3=1;P2_2=0;
break;
}
case 3:
{
dispcount=0;
if(led4c)i=0xFF; //不显示功能码
else //显示功能码
{
if(led4sc) //功能码允许闪烁显示
{
if(second4)//0.5s到
{
//second4=0;//清标志
//led4s=!led4s;
}
else
{
if(led4s) {i=table[tbuffer4];if(led4p)i&=0x7F;}//第四位小数点显示 //闪烁不显示
else i=0xFF; //功能码单元
P1=i;
}
}
else
{
P1=table[tbuffer4];//功能码不允许闪烁显示
//P1=i;
if(led4p)P1_7=0;//P1&=0x7F;//第四位小数点显示
}
}
P2_0=1;P2_1=1;P2_2=1;P2_3=0;
break;
}
default:
{
P2_0=1;P2_1=1;P2_2=1;P2_3=1;
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -