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

📄 ev_time1_1ms.c

📁 利用DSP EV模块实现1ms延时程序
💻 C
字号:
//测试功能:定时器1发生1ms周期中断后,进入中断服务程序使LED DS1亮灭(间隔2秒)

#include  "ioreg.h"
unsigned int wait_ms( volatile unsigned int delay_val );

void inline disable()
{ 
    asm(" setc INTM");
}

void inline enable()
{
    asm(" clrc INTM");
}

initial()
{
     asm(" setc SXM");
     asm(" clrc OVM");
     asm(" clrc CNF");
     SCSR1 = 0x81fe;         //CLKIN=15MHz , CLKOUT=4*CLKIN=60MHz
     WDCR = 0X0e8;
     
     IMR = 0x0002;
     IFR = 0x0ffff;
     WSGR = 0x00;
}

int timer1int()
{
     EVAIMRA = EVAIMRA|0x0080;
     EVAIFRA = EVAIFRA&0x0080;  
  /* EVAIFRA = EVAIFRA|0x0080; */ 
     T1CON = 0x160c;
     T1PR = 0x03a8;          // T1PR=(1/1000)/(1*64/60/1000000)-1=936=0x3a8
     T1CNT = 0x00;
}

void interrupt T1INT()
{
     int flag;
     flag = EVAIFRA&0x0080;
     if(flag!=0x0080)
     {
     	 enable();
     	 return;
     }
     
     MCRB=MCRB&0xFF00;
     PCDATDIR=PCDATDIR|0x0FF00;
     PCDATDIR=PCDATDIR&0x0FF00;
     
     PCDATDIR=PCDATDIR|0x0001;    //DS1点亮
     wait_ms(1000);   
     PCDATDIR=PCDATDIR&0x0FF00;   //DS1熄灭  
     wait_ms(1000);
   
     
            
     
     T1CNT = 0x00;
     EVAIFRA = EVAIFRA&0x0080;
     
     enable();
     return;
}

void interrupt nothing()
{
     enable();
     return;
}

main()
{
     disable();
     initial();
     timer1int();
     enable();
     T1CON = T1CON|0x0040;
     while(1)
     {
     	;
     }
}


/* #define MS_TIME_LOOP  */
#define MS_TIME_LOOP   0x500

unsigned int wait_ms( volatile unsigned int delay_val )
{
    unsigned int i;
/*    unsigned int ms_ctr;  */
    int ms_ctr;
    
    for ( i = 0; i < delay_val; i++ )
    {
	   ms_ctr = MS_TIME_LOOP;

	   while ( ms_ctr )
	   {
	         ms_ctr--;
	   }
    }

    return( delay_val );
}

                   

⌨️ 快捷键说明

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