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

📄 timer.c

📁 基于5402dsp的软件定时器的一种实现方法
💻 C
字号:

#include <stdio.h>
#include "vc5402.h"
#include "main.h"
   
UBYTE blink = 0;

TIMER Timer_led;              //运行状态灯定时器

interrupt void Timer0Isr(void);   //定时器0中断
interrupt void SINT17_Isr(void);  //软件中断17#


void led_start();

//软件定时器初始化
void TimerInit()
{
        
    Timer_led.run = 0;
    Timer_led.flow = 0;
    Timer_led.period = 0;
  
}

/* led timer start*/
void led_start()
{
        Timer_led.run = 0;
        Timer_led.flow = 0;
        Timer_led.period = 5;
        Timer_led.run = 1;   
}

/* led timer stop*/
void led_stop()
{
      Timer_led.run = 0;
      Timer_led.flow = 0;
}

/* led timer timeout function*/
void led_timeout()
{
       
    if(blink)   
    {
      asm(" STM #080H,03dh"); //置HD1为0
		  blink = 0;
		}
    else
	  {
	    asm(" STM #0c0H,03dh"); //置HD1为0
		  blink = 1;
		}
		
		led_start();
}


//定时器0中断服务程序
interrupt void Timer0Isr(void)  
{
    unsigned char i,j;	
	
		if(Timer_led.run)
    {
      if(--Timer_led.period == 0)
    	{
    	  // led_timeout();
    	  asm(" INTR 2");
    	}
    }
   
}

interrupt void SINT17_Isr(void)
{
	 led_timeout();
}

⌨️ 快捷键说明

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