#include"EM78x153xx.h"
#define NOP() _asm{nop}
#define DISI() _asm{disi}
#define ENI() _asm{eni}
#define RETI() _asm{reti}
#define T 50
#define TIME 5
#define N 1
unsigned int i @0x22:bank 0;
unsigned int j @0x23:bank 0;
static unsigned int m @0x2A:bank 0;
static unsigned int hz @0x20:bank 0;
static unsigned int sec @0x21:bank 0;
void main()
{
m=1;
j=i;
WDTCR=0x00;
i=j=0;
m=1;
DISI();
PHCR=0x00;
// PDCR=0x00;
ODCR=0xF7;
P6CR=0x08;
IMR=0x02;
ISR=0x00;
ENI();
while(1)
{
R60=1;
if(i!=j)//不知道为什么"i!=j"这个语句永远都是成立的。让我很头疼。
{
break;
}
}
while(1)
{
NOP();
}
}
void Count(void)
{
if(hz> =T)
{
hz=0;
sec++;
if(sec> =TIME)
{
sec=0;
i++;
if (i> =N)
{
i=0;
}
}
}
}
void _intcall interrupt_l(void) @ 0x08:low_int 0
{
_asm
{
MOV 0X1F,A ;backup A to 0x1F
SWAPA 0X04 ;backup R4 to 0x2F
MOV 0X2F,A ;backup R4 to 0x2F
SWAPA 0X03
MOV 0X2E,A ;backup R3 to 0x2E
SWAPA 0X10
MOV 0X2D,A
}
}
void _intcall interrupt(void) @ int 0
{
DISI();
ICIF=0;
hz++;
Count();
RETI();
_asm
{
SWAPA 0X2D
MOV 0X10,A
SWAPA 0X2E ;restore R3
MOV 0X03,A
SWAPA 0X2F ;restore R4
MOV 0X04,A
SWAP 0X1F ;restore A
SWAPA 0X1F
}
}
不知道为什么只要是中断产生后,i,j两个变量就没有办法进行比较,不管是> , <,==,!=,语句结果都是为真的。让菜鸟很头疼希望大虾能帮忙看看,解决问题,不甚感激。