⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmroinitial.c

📁 本程序是关于PIC定时中断服务程序
💻 C
字号:
/*copyright(c)泰永科技股份有限公司电源事业部
*All rights reserved
*
*文件名称:tmroinitial.c
*文件标示:见配置管理计划书
*摘    要:简要描述文件内容
*
*当前版本:
*作    者:
*完成日期:
*
*取代版本:
*原作者  :
*完成日期:
*/
#include <pic18.h>
#include "inc.h"
//#include <stdio.h>
//timer0 init
//10ms interrupt
//union adres adresult;
void tmr0init()
{
	  T0CON = 0x82;	//8分频  ;0xCx is 8bit timer
	  TMR0IE = 1;                   //使能timer0 interrupt  
	  TMR0IF = 0;
	  TMR0H = (unsigned char)tmr0h_bits;//unsigned char 类型转换 
	  TMR0L = (unsigned char)tmr0l_bits;//	  		          
      //GIE = 1;
}
/*
*函数介绍:
*输入参数:
*输出参数:
*返回值:
*/
void tmr1init()
{
	T1CON = 0x39;
	TMR1IE=1;				//TMR1中断允许 
	TMR1IF=0;				//清除TMR1的中断标志 
	TMR1H = (unsigned char)tmr0h_bits;
	TMR1L = (unsigned char)tmr0l_bits;
}
/*
*函数介绍:
*输入参数:
*输出参数:
*返回值:
*/
void interrupt tmr0_ISR(void)
{ 
    if (TMR0IF == 1)
    {
        TMR0H=(unsigned char)tmr0h_bits;		// FFFF-F63B=2500采用 8M 晶振,指令周期0.5微秒
        TMR0L=(unsigned char)tmr0l_bits;		// 对TMR0写入10ms定时调整值2500
        TMR0IF=0;
        
        
        
         
        if (bak_cnt!=0)
            bak_cnt--;
        else
            lcd_blk = 0;
         
        if (spk_cnt!=0)
            spk_cnt--;
        else
        //  spk=0;
         
        sle_2hz++;
        if (sle_2hz>f2hz)//250ms闪动一次
        {
	        sle_2hz = 0;  
            f2hz_flag++;
        }
         
        sle_1hz++;
        if (sle_1hz>f1hz)//500ms闪动一次
        {
	        sle_1hz = 0;  
            f1hz_flag++;
        }
        
        sle_5s++;
        if (sle_5s>f5s)//5s切换一次
        {
	        sle_5s = 0;
	        f5s_flag++;
        }
        
        dis_4hz++;
        if (dis_4hz>121)
        {
	        dis_4hz = 0;
        }
        
        dis_3hz++;
        if (dis_3hz>91)
        {
        	dis_3hz = 0;
        }
        
        dis_2hz++;
        if (dis_2hz>451)
        {
	        dis_2hz = 0;
        }
         
        dis_1hz++;
        if (dis_1hz>691)
        {
	        dis_1hz = 0;
        }
        
        if (tm1s!=0)
            tm1s--;
        else
            flag_1s = 1; 
         
        if (tm2s!=0)
            tm2s--;
        else
            flag_2s = 1;
         
        if (tm3s!=0)
            tm3s--;
        else
            flag_3s = 1; 
        if (return_cnt!=0)  
            return_cnt--;
        else
            scr_id = 0; 
        if (refer_cnt!=0)
            refer_cnt--;
        else
            refer_flag = 0;	
        if (alam_cnt!=0)
            alam_cnt--;
        else
            spk = 0;
        if(amper_count!=0)
            amper_count--;
        else
            amper_flag=1;
        if(temper_count!=0)
            temper_count--;
        else
            temper_flag=1;
        if(air_count!=0)
            air_count--;
        else
            air_flag=1;
        if(smoke_count!=0)
            smoke_count--;
        else
            smoke_flag=1;
    }  
    if(TMR1IF ==1)
    {
	    TMR1H=(unsigned char)tmr0h_bits;		// FFFF-F63B=2500采用 8M 晶振,指令周期0.5微秒
        TMR1L=(unsigned char)tmr0l_bits;
	    TMR1IF = 0;
	    sle_4hz++;
        if (sle_4hz > 12)//125ms闪动一次
        {
	        sle_4hz = 0;  
            f4hz_flag++;
        } 
    } 
    if(ADIF)				    	//AD转换完成
	{
	    ADIF=0;					    // 清除中断标志
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -