| bit是位,怎么能赋值1,2,3呢,只能赋值0或者1两种状态?如果要实现多状态,你需要设置多个标志,并且在使用完标志后,记得还原标志位。 |
1092648746 发表于 2018-12-22 10:26 bit flag; void main() { EA=1; EX0=1; IP=0X04; IT0=1; EX1=1; IT1=1; while(1); { if(flag==1) { if(m==4)m=0; P1=address[m]; P0=table1[m++];delayms(500); } if(flag==2) { if(m==4)m=0; P1=address[m]; P0=table2[m++];delayms(500); } if(flag==3) { if(m==4)m=0; P1=address[m]; P0=table3[m++];delayms(500); } } } void INT_1() interrupt 2 { EX1=0; delay(20); EX1=1; if(P2=0xfe)flag=1; if(P2=0xfd)flag=2; if(P2=0xfb)flag=3; } 我把主程序和外部中断int1修改了一下,但还是不能亮 flag我也不是很了解,你能看看哪里出错了吗 |
| 楼主的中断函数不要放循环,容易死机。应该在外部中断放一个变量flag,当中断启动时,flag置1,主程序内放循环if判断检查标志位,然后放你要做的事情即可,第三点可按照上述思路改进 |