想用中断的方法控制流水灯方向。
具体流程是这样:
1.打开流水灯,流水灯向左移动;
2.按k3按键,流水灯改为向右移动;
3.再按k3返回,流水灯向左移动;
2和3步多次循环
使用的是89c52rc的板子
我写的代码如下,是有问题的(无法跳出中断),跪求大神帮忙,万分感谢
#include "reg52.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define led P2
sbit k3=P3^2;
void delay(u16 i) //yanshi
{
while(i--);
}
void Init0Init() // shezhi duandian
{
IT0=1;
EX0=1;
EA=0;
}
void left() //zuoshan
{
u8 i;
while(1)
{
led=0xfe;
delay(50000);
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
Init0Init();
}
}
}
void right() //youshan
{
u8 i;
while(1)
{
led=0x7f;
delay(50000);
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(50000);
if(k3==0)
{
break;
}
}
break;
}
}
void main()
{
while(1)
{
left();
}
}
void Init0() interrupt 0
{
delay(100);
if(k3==0)
{
right();
}
}
具体流程是这样:
1.打开流水灯,流水灯向左移动;
2.按k3按键,流水灯改为向右移动;
3.再按k3返回,流水灯向左移动;
2和3步多次循环
使用的是89c52rc的板子
我写的代码如下,是有问题的(无法跳出中断),跪求大神帮忙,万分感谢
#include "reg52.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define led P2
sbit k3=P3^2;
void delay(u16 i) //yanshi
{
while(i--);
}
void Init0Init() // shezhi duandian
{
IT0=1;
EX0=1;
EA=0;
}
void left() //zuoshan
{
u8 i;
while(1)
{
led=0xfe;
delay(50000);
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(50000);
Init0Init();
}
}
}
void right() //youshan
{
u8 i;
while(1)
{
led=0x7f;
delay(50000);
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(50000);
if(k3==0)
{
break;
}
}
break;
}
}
void main()
{
while(1)
{
left();
}
}
void Init0() interrupt 0
{
delay(100);
if(k3==0)
{
right();
}
}