📄 342.c
字号:
*P_DAC_Ctrl=0x0000; //通过读P-ADC_MUX_DATA 启动转换
*P_LVD_Ctrl=0x0003; //设置低电压检测为3。6V
while(1)
{
*P_SystemClock=0x00f0; //设置时钟为49。152M
asm("int off");
if(time_flag==1) //如显示时间标志为1,则循环显示
{ da(8,0,gaoshi,0);
da(9,0,shi,0);
da(10,0,':',0);
da(11,0,gaofen,0);
da(12,0,fen,0);
da(13,0,':',0);
da(14,0,miao,0);
da(15,0,j,0);
}
asm("IRQ ON");
asm("FIQ ON");
delay();
delay();
*P_ADC_MUX_Ctrl=0x0007; //选择温度检测通道7
*P_ADC_Ctrl=0x0039; //允许A/D转换
asm("IRQ ON");
asm("FIQ ON");
*P_Watchdog_Clear=0x0001;
}
}
void IRQ5(void) __attribute__ ((ISR)); //2HZ时钟中断程序,时钟运算
void IRQ5(void)
{
if (*P_INT_Ctrl&C_IRQ5_4Hz)
*P_INT_Clear=C_IRQ5_4Hz;
if (*P_INT_Ctrl&C_IRQ5_2Hz)
{ *P_INT_Clear=C_IRQ5_2Hz;
i=i+1;
if ((i/2)==1)
{ i=0;
j=j+1;
if(j==10) {j=0;miao=miao+1; }
if(miao==6) {j=0;miao=0;fen=fen+1;}
if(fen==10) {j=0;miao=0;fen=0;gaofen=gaofen+1;}
if(gaofen==6) {j=0;miao=0;fen=0;gaofen=0;shi=shi+1;}
if(shi==10) {j=0;miao=0;fen=0;gaofen=0;shi=0;gaoshi=gaoshi+1;}
if((gaoshi==2)&&(shi==4)){j=0;miao=0;fen=0;gaofen=0;shi=0;gaoshi=0;}
}
}
}
void IRQ3(void) __attribute__ ((ISR)); // 红外解码外中断EXT1
void IRQ3(void)
{
if (*P_INT_Ctrl&C_IRQ3_KEY)
*P_INT_Clear=C_IRQ3_KEY;
if (*P_INT_Ctrl&C_IRQ3_EXT2)
*P_INT_Clear=C_IRQ3_EXT2;
if (*P_INT_Ctrl&C_IRQ3_EXT1)
{ *P_INT_Clear=C_IRQ3_EXT1;
a=*P_TimerB_Data;
if ((a>=60)|| ((a<=35)&&(a>=25)) )
{ if ((a>=60)&&(a<=75)) CY=1;
if ((a<=40)&&(a>=25)) CY=0;
data1=data1|CY;
data1<<=1;
co=co-1;
if (co==0x08) data2 = data1;
if (co==0x00) { co=0x10;
if (data2==0xe2)
{ switch(data1&0x00ff) //以上为红外解码程序
{
case 0x40: //开关背光 按键ON/OFF
if(light_flag==1) { Set_IOA_Bit(light,1,1,0,0);
light_flag=0;}
else { Set_IOA_Bit(light,1,1,1,1);
light_flag=1;}
break;
case 0x00: // 显示“郑州轻工业学院 206工作室欢迎你”
Init_lcd(); //按键 “1”
time_flag=0; //时间显示消隐
hang=0; lie=1;
for(count=0;count<7;count++)
{ dh(lie,hang,count,0);
lie+=2;};
da(3,3,2,0);
da(4,3,0,0);
da(5,3,6,0);
hang=3;lie=6;
for(count=7;count<10;count++)
{ dh(lie,hang,count,0);
lie+=2;}
hang=6;lie=1;
for(count=10;count<17;count++)
{ dh(lie,hang,count,0);
lie+=2;}
break;
case 0x10:
time_flag=0; //时间显示消隐
show_pic(1,0);
break;
case 0x08: //语音报温及显示
Init_lcd();
hang=3;lie=1;
for(count=17;count<22;count++)
{ dh(lie,hang,count,0);
lie+=2;}
temp=read_tem();
qa=temp/10;
qa2=temp-(qa*10);
da(11,3,qa,0);
da(12,3,qa2,0);
dh(13,3,22,0);
playvoice(temp); //播报温度
temp=0;
j=j+3; //播放温度时的时间补偿
if(j==10) {miao+=1;j=0;}
if(j==11) {miao+=1,j=1;}
if(j==12) {miao+=1,j=2;}
asm("INT OFF");
*P_ADC_Ctrl=0x0039; //恢复语音播报所占用寄存器的值
*P_DAC_Ctrl=0x0000;
*P_INT_Ctrl=0x0104;
asm("IRQ ON");
asm("FIQ ON");
break;
case 0x50: //时间设置功能键,按键CH^
time_flag=0;
*P_INT_Ctrl=0x0100; //关2HZ中断,停止时间记数
da(10,0,':',0);
da(13,0,':',0);
set=set+1; //指针焦点移动
if (set==7) set=1;
if(set==1) { da(8,0,gaoshi,1);da(9,0,shi,0);
da(11,0,gaofen,0);da(12,0,fen,0);
da(14,0,miao,0);da(15,0,j,0);
}
if(set==2) { da(8,0,gaoshi,0);da(9,0,shi,1);
da(11,0,gaofen,0);da(12,0,fen,0);
da(14,0,miao,0);da(15,0,j,0);
}
if(set==3) { da(8,0,gaoshi,0);da(9,0,shi,0);
da(11,0,gaofen,1);da(12,0,fen,0);
da(14,0,miao,0);da(15,0,j,0);}
if(set==4) { da(8,0,gaoshi,0);da(9,0,shi,0);
da(11,0,gaofen,0);da(12,0,fen,1);
da(14,0,miao,0);da(15,0,j,0);}
if(set==5) { da(8,0,gaoshi,0);da(9,0,shi,0);
da(11,0,gaofen,0);da(12,0,fen,0);
da(14,0,miao,1);da(15,0,j,0);}
if(set==6) { da(8,0,gaoshi,0);da(9,0,shi,0);
da(11,0,gaofen,0);da(12,0,fen,0);
da(14,0,miao,0);da(15,0,j,1);}
delay();
delay();
break;
case 0x44: //调整时间值 按键VOL^
if(set==1) {gaoshi=gaoshi+1;
if(gaoshi>=3) gaoshi=0;
da(8,0,gaoshi,1);}
if(set==2) {shi=shi+1;
if(shi>=10) shi=0;
if((shi>=4)&&(gaoshi==2)) shi=0;
da(9,0,shi,1);}
if(set==3) {gaofen=gaofen+1;
if(gaofen>=6) gaofen=0;
da(11,0,gaofen,1);}
if(set==4) {fen=fen+1;
if(fen>=10) fen=0;
da(12,0,fen,1);}
if(set==5) {miao=miao+1;
if(miao>=6) miao=0;
da(14,0,miao,1); }
if(set==6) {j=j+1;
if(j>=10) j=0;
da(15,0,j,0);}
delay();
delay();
break;
case 0x54: //打开时间中断,时间开始记数,
*P_INT_Ctrl=0x0104;
time_flag=1; //时间显示
set=0; //消除时间设置焦点
da(10,0,':',0);
da(13,0,':',0);
break;
case 0x1c: //开关时间的消隐与显示 按键“8”
if(time_flag==1) { time_flag=0;
da(8,0,' ',0);
da(9,0,' ',0);
da(10,0,' ',0);
da(11,0,' ',0);
da(12,0,' ',0);
da(13,0,' ',0);
da(14,0,' ',0);
da(15,0,' ',0);
delay();
delay();
}
else { time_flag=1;
delay();
delay();
delay();
delay();}
delay();
delay();
delay();
delay();
break;
case 0x18: //语音播报时间
playtime();
j=j+4; //时间记数补偿
if(j==10) {miao+=1;j=0;}
if(j==11) {miao+=1,j=1;}
if(j==12) {miao+=1,j=2;}
if(j==13) {miao+=1,j=3;}
asm("INT OFF"); //恢复播放语音占用的寄存器
*P_ADC_Ctrl=0x0039;
*P_DAC_Ctrl=0x0000;
*P_INT_Ctrl=0x0104;
asm("IRQ ON");
asm("FIQ ON");
break;
case 0x00dc: //低电压检测功能的保存数据,按键LDV
power=*P_LVD_Ctrl;
power&=power&0x8000;
if(power==0x8000)
{ F_FlashErase(0xfe00);
F_FlashWrite1Word(0xfe00,temp);
F_FlashWrite1Word(0xfe01,gaoshi);
F_FlashWrite1Word(0xfe02,shi);
F_FlashWrite1Word(0xfe03,gaofen);
F_FlashWrite1Word(0xfe04,fen);
F_FlashWrite1Word(0xfe05,miao);
F_FlashWrite1Word(0xfe06,j);
}
case 0x98: //读取掉电后的数据,按键2+
temp=F_FlashRead(0xfe00);
gaoshi=F_FlashRead(0xfe01);
shi=F_FlashRead(0xfe02);
gaofen=F_FlashRead(0xfe03);
fen=F_FlashRead(0xfe04);
miao=F_FlashRead(0xfe05);
j=F_FlashRead(0xfe00);
break;
default:
break;
}
}
data1=0; //数据为零
}
};
}
*P_TimerB_Data=0x0000; //定时器回初值
*P_TimerB_Ctrl=0x0032;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -