实验内容:外0中断时候小灯左移死循环 建议使用用 if(IE1==1) break;
外1中断时候小灯右移死循环 建议使用用 if(IE0==1) break;
目录
方法一:
#include<reg52.h>
delay(int xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
main()
{
EA=1; //开总中断
EX0=1; //开外部中断INT0
EX1=1; //开外部中断INT1
IT0=1; //下降沿触发
IT1=1; //下降沿触发
P3=0x0f; //为下次中断做准备
while(1);
}
it1() interrupt 0
{
int i;
P1=0xfe;
for(i=1;i<=7;i++)
{
P1=P1<<1;
P1=P1|0x01;
delay(100);
if(IE1==1)break;
}
}
it2() interrupt 2
{
int i;
P1=0x7f;
for(i=1;i<=7;i++)
{
P1=P1>>1;
P1=P1|0x80;
delay(100);
if(IE0==1)break;
}
}
方法二:
#include<reg52.h>
int i; //全局定义i变量
delay(int xms)
{
int i,j;
for(i=xms;i>=0;i--)
for(j=112;j>0;j--);
}
main()
{
EA=1;
EX0=1;
IT0=1; //把这个改成0试一下
EX1=1;
IT1=1;
P3=0x0f;
while(1); //死循环
}
it0() interrupt 0 {
while(1){
for(i=1;i<=7;i++)
{
P1=~(0x01<<i);
delay(500);
}
if(IE1==1) break;
}
}
it2() interrupt 2{
while(1){
for(i=0;i<8;i++)
{
P1=~(0x80>>i);
delay(500);
}
if(IE0==1) break;
}
}
方法三:
#include<reg52.h>
int i;
delay(int xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
main()
{
EA=1; //开总中断
EX0=1; //开外部中断INT0
EX1=1; //开外部中断INT0
IT0=1; //下跳沿触发
IT1=1; //下跳沿触发
P3=0x0f;
while(1);
}
it0() interrupt 0
{
while(1){
P1=0xfe;
for(i=1;i<=7;i++)
{
P1=P1<<1;
P1=P1|0x01;
delay(100);
}
if(IE1==1) break;
}
}
it2() interrupt 2
{
while(1){
P1=0x7f;
for(i=1;i<=7;i++)
{
P1=P1>>1;
P1=P1|0x80;
delay(100);
}
if(IE0==1) break;
}
}