|
大家好,我用C语言做义隆的78P259的程序的时候发现仿真可以,烧录不行,我估计是TCC中断没处理好,哪位大侠能说下中断进去时和出来时,应如何保护寄存器,或者哪位好心人能提供以下已经开发好的TCC部分的代码供我参考。多谢!
问题如下:
如果开中断,烧进去就程序好像不运行,看门狗一会就重启一会就重启、
不开中断正常。
我的代码如下:
/**********************************************
TCC中断函数
**********************************************/
void _intcall tcc_l(void) @ 0x09:low_int 2
{
// change to page0
_asm
{
BC 0X3,5
BS 0X04,6
}
}
void _intcall tcc(void) @ int
{
///////////////////////////////////////
//现场保护
if(TCIF==0)return;
disi();
_asm
{
MOV A,0X10
MOV 0X3C,A
MOV A,0X11
MOV 0X3B,A
MOV A,0X12
MOV 0X3A,A
MOV A,0X13
MOV 0X39,A
MOV A,0X14
MOV 0X38,A
MOV A,0X15
MOV 0X37,A
MOV A,0X16
MOV 0X36,A
MOV A,0X17
MOV 0X35,A
MOV A,0X18
MOV 0X34,A
MOV A,0X19
MOV 0X33,A
MOV A,0X1A
MOV 0X32,A
}
///////////////////////////////////////
systime ++;
if(systime > 115)//103
{
systime_s ++;
test_step_time ++;
systime = 0;
}
if(systime_s > 60)
{
if(systime_m < 245)
{
systime_m++;
}
if(test_time < 100)
{
test_time++;
}
systime_s = 0;
}
///////////////////////////////////////
//现场恢复
_asm
{
MOV A,0X3C
MOV 0X10,A
MOV A,0X3B
MOV 0X11,A
MOV A,0X3A
MOV 0X12,A
MOV A,0X39
MOV 0X13,A
MOV A,0X38
MOV 0X14,A
MOV A,0X37
MOV 0X15,A
MOV A,0X36
MOV 0X16,A
MOV A,0X35
MOV 0X17,A
MOV A,0X34
MOV 0X18,A
MOV A,0X33
MOV 0X19,A
MOV A,0X32
MOV 0X1A,A
BC 0X04,6
}
///////////////////////////////////////
// clear interrupt flag
TCIF = 0 ;
sei();
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|