|
楼主 |
发表于 2009-11-6 20:42:14
|
显示全部楼层
只要将 GIE置1 程序就不行! 不使能全局中断 PORC端口_交替输出高低电平。
GIE置1 就不行了?!
void Port_init();
void Time_int();
/* Definitions for Flag variable */
static volatile unsigned char Flag @ 0x06;
static volatile bit Flag0 @((unsigned)&Flag*8)+0;
static volatile bit Flag1 @((unsigned)&Flag*8)+1;
static volatile bit Flag2 @((unsigned)&Flag*8)+2;
static volatile bit Flag3 @((unsigned)&Flag*8)+3;
static volatile bit Flag4 @((unsigned)&Flag*8)+4;
static volatile bit Flag5 @((unsigned)&Flag*8)+5;
void main()
{
int i,temp;
asm("nop");asm("nop");
Flag=0;
Port_init();
Time_int();
//GIE=0;///////////////////////////??????????????????????
while(1)
{
for(i=5;i>=0;i--)
{
delay_50MS();
PORTC|=(1<<4);
delay_50MS();
PORTC&=~(1<<4);
}
}
}
void interrupt isr (void)
{ if((T0IE) && (T0IF))
{
T0IF=0;
Flag++;
TMR0=0;
if(Flag>10)
{PORTC&=~(1<<4);
PORTC|=(1<<5);
asm("RETFIE");}
else
{PORTC|=(1<<4);
PORTC&=~(1<<5);
asm("RETFIE");}
}
}
//TMR0初始化子程序
void Time_int()
{
//INTCON=0xA0;
PSA=0; //128分频后
PS2=1;
PS1=1;
PS0=0;
T0IF=0; //清除TMR0的中断标志
T0IE=1; //TMR0中断允许
TMR0=0; //定时1ms
T0CS=0; //TMR0工作于定时器方式
}
void Port_init()
{
//ANSEL=0x00;
//CMCON=0X07;
TRISA=0xFF;
TRISC=0x00;//输出
PORTA=0xFF;
PORTC=0xCF;
} |
|