程序设计的要求是什么?
说的不太清楚。
简单改了改:
#include
#include
void delay()
{
unsigned int i, j;
for(i = 0; i <= 800; i++) for(j = 0; j <= 200; j++);
}
void delay2()
{
unsigned int i, j;
for(i = 0; i <= 800; i++) for(j = 0; j <= 200; j++);
}
void init_tx()
{
EA = 1;
EX0 = 1;
IT0 = 1;
}
void main()
{
init_tx();
while(1) { P1 = ~P1; delay(); }
}
void tx0() interrupt 0
{
static unsigned char i = 0xfe;
P1 = i; delay2();
i = _crol_(i, 1);
P1 = 0x00;
}
在中断函数中,进行延时,楼主的这个思路,是错误的。
特别是和主函数共用同一个延时函数,更加添乱。
外部中断0设置为低电平触发,去掉while循环后一直按下按键实际代码为
delay();
P1=0xfe;
delay();
EX0=0;
P1=_crol_(P1,1);
delay();
EX0=1;
P1=0X00;
一直重复.
之前的代码进入中断后会一直循环,并不会退出中断。正确做法中断应该改为:
void tx0() interrupt 0 using 0
{
unsigned char i;
delay();
P1=0xfe;
delay();
EX0=0;
while(1)
{
P1=_crol_(P1,1);
delay();
if(P3&0x04) //判断是否松开中断0的按键
{
break;
}
}
EX0=1;
P1=0X00;
}