比较器中断函数如下:
- /******************* 比较器中断函数 ********************/
- void CMP_Isr() interrupt 21
- {
-
-
-
- CMPIF = 0; //清中断标志
- P42 = CMPRES; //中断方式读取比较器比较结果
-
- if(CMPRES)
- {
- if(LowVolFlag)
- {
- LowVolFlag = 0; //清除低电压标志
- if(Test_cnt != Temp_cnt)
- {
- EEPROM_read_n(EE_ADDRESS,tmp,2); //读出2字节
- Test_cnt = ((u16)tmp[0] << 8) + tmp[1]; //秒计数
- if(Test_cnt > 10000) Test_cnt = 0; //秒计数范围为0~10000
- Temp_cnt = Test_cnt;
- EEPROM_SectorErase(EE_ADDRESS); //擦除扇区
-
- }
- }
- }
- else
- {
-
- /*下面8行关闭数码管
- HC595_SER = 0;
- for(i=0; i<16; i++) //先关闭显示,省电
- {
- HC595_SCK = 1;
- HC595_SCK = 0;
- }
-
- HC595_RCK = 1;
- HC595_RCK = 0; //锁存输出数据
- */
- Display_Seg(0,0); //实际这个函数入口参数直接写0,就是上面8行关闭数码管
-
-
-
- if(!LowVolFlag)
- {
- LowVolFlag = 1; //设置低电压标志
- if(Test_cnt != Temp_cnt)
- {
- Temp_cnt = Test_cnt;
-
- tmp[0] = (u8)(Temp_cnt >> 8);
- tmp[1] = (u8)Temp_cnt;
- EEPROM_write_n(EE_ADDRESS,tmp,2);
- }
- }
- }
- }
-
复制代码
这个是严格按照冲哥的步骤来写的
|