📄 timer10ms.c
字号:
#include <main.h>
#include "ex.h"
/*
+------------------------------------------------------------------------------+
函 数 名 : timer10ms_init()
功能描述 : timer10ms的初始化
函数原形 : void timer10ms_init()
参数说明 :
支持资源 :
作 者 : 桂林
最后更改日期: 2002-11-15
+------------------------------------------------------------------------------+
*/
void timer10ms_init(void)//40Mhz
{
GPTCONA = 0;
T1PR = 10*(40000/128); // 10..200(ms)
T1CNT = 0;
T1CON = 0x1706;
EVAIMRA = 0x0080;
EVAIFRA = 0xFFFF;
T1CON = 0x1746;
}
/*
+------------------------------------------------------------------------------+
函 数 名 : TIMER10MS_ISR()
功能描述 : TIMER10MS_ISR中断服务程序
函数原形 : interrupt void TIMER10MS_ISR(void)
参数说明 :
支持资源 :
作 者 : 桂林
最后更改日期: 2002-11-15
+------------------------------------------------------------------------------+
*/
interrupt void TIMER10MS_ISR(void)
{
static U16 temp_state=0;
U16 tempi=0;U16 *p16;
// sci_tx(0x55);// 测试中断是否产生
if((GVAR.timer_10ms_num++)>=100) {GVAR.timer_10ms_num = 0;GVAR.GRT.SEC++;};
if(GVAR.GRT.SEC>=60){GVAR.GRT.SEC=0;GVAR.GRT.MIN++;};
if(GVAR.GRT.MIN>=60){GVAR.GRT.MIN=0;GVAR.GRT.HOUR++;};
GVAR.ADCNUM = adc_read();
p16 = (U16 *)&GVAR.dsp0out;read_para_dsp0(p16);
p16 = (U16 *)&GVAR.dsp0in;write_para_dsp0(p16);
switch(temp_state)
{
case 0:
{
temp_state = 1;
// 发空闲标志到LCD
tempi = 0x00a5;
if(GVAR.GS.LCD=LENGTH) st16_lcd_tx(1,&tempi);
break;
}
case 1:
{
temp_state = 2;
break;
}
case 2:
{
temp_state = 3;
// 发数据到PROFIBUS
tempi = sizeof(GVAR.dsp0out);p16 = (U16 *)&GVAR.dsp0out;
if(GVAR.GS.PROFIBUS=LENGTH) st16_pro_tx(tempi,p16);
break;
}
case 3:
{
temp_state = 4;
// 发空闲标志到PROFIBUS
tempi = 0x00a5;
if(GVAR.GS.PROFIBUS=LENGTH) st16_pro_tx(1,&tempi);
break;
}
default:
{
temp_state=0;
break;
}
};// end switch
EVAIFRA = 0xffff;
EnableINT;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -