| 
 
| 辅助程序 1,定义用到的变量
 unsigned int Count = 0;                           //定义计数值变量COUNT
 bit Flag = 0;
 sbit DQ = P3^3;
 辅助程序 2,中断子函数
 void exint1() interrupt 2
 {
 _nop_();
 _nop_();
 If (DQ == 0)
 {
 //定义中断服务标志位C_FLAG;
 //定义IO引脚
 //误触发判断
 Count++;             //计数+1
 Flag = 1;               //中断标志Flag
 }
 }
 辅助程序 3,延时子函数
 void Delay2ms()
 {
 for( i=0; i<xxxx; i++) {;}   //时钟周期延时10ms,根据MCU指令周期设计具体的xxxx值
 }
 主程序
 void main(void)
 {
 unsigned int  Data = 0;
 unsigned float  Temp = 0;
 INT1 = 1;
 //主程序 main
 // 中断IO口初始状态为High
 IT1 = 1;
 EX1 = 1;
 EA = 1;
 // 外中断信号方式控制位,1:下降沿中断。单脉冲周期触发一次
 // 外部中断1允许控制位
 // 中断允许总控制位
 Count = 0;        //计数值清零
 12
 Copyright ©  NOVOSENSE Microelectronics Co.,Ltd 2023. All rights reserved.
 
 while (1)
 {                  if( Flag == 1)
 {                        Flag = 0;
 Delay2ms();
 if(!Flag)
 {                              EX1 = 0;    //关闭外部中断
 Data = Count;  //锁存计数值
 Count = 0;
 if(Data >= 801)      //正负温度判断
 {                                    Temp = (Data - 801)*0.0625; }//正温度      else      {                                       Temp = (
 801 - Data)*0.0625;
 }   //负温度                                        Flag = 0;
 EX1=1;  //开启外部中断                                       }     //
 END if(!Flag)
 }
 //END if(Flag == 1)                           }
 //
 END while 循环}
 
 | 
 
×本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?注册 
  |