标题:
51单片机中断问题,求大佬求教
[打印本页]
作者:
lostrivers
时间:
2018-3-15 20:18
标题:
51单片机中断问题,求大佬求教
我的想法是做一个从中间到两边的流水灯,然后用P3独立按键控制,不知道为什么达不到想要的效果。
求大佬指点
#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit k3=P3^3;
#define led P2
u8 P2led[7]={0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7};
u8 press=0;
void delay(u16 i)
{
while(i--);
}
void ledopen()
{
u8 i;
led= 0xE7;
delay(50000);
for(i=0;i<7;i++)
{
led = ~P2led[i];
delay(50000);
}
for(i=0;i<7;i++)
{
led= P2led[i];
delay(50000);
}
}
void Int0Init()
{
IT0=1;
EX0=1;
EA=1;
}
void main()
{
Int0Init();
if(k3 == 1)
{
delay(1000);
ledopen();
}
if(k3 == 0);
{
delay(1000);
led=0xFF;
}
}
void Int0() interrupt 0
{
delay(1000);
while(k3 == 0)
{
press +=1;
if(press == 2)
press=0;
delay(10);
}
}
复制代码
作者:
罗文杰
时间:
2018-3-15 23:10
你主函数的while呢?
作者:
HC6800-ES-V2.0
时间:
2018-3-16 08:29
我调试好了,通过按键k3,开关LED灯。
#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
//sbit k3=P3^3;
#define led P2
u8 P2led[7]={0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7};
bit press=0;
void delay(u16 i)
{
while(i--);
}
void ledopen()
{
u8 i;
led= 0xE7;
delay(50000);
for(i=0;(i<7)&&(press==0);i++)
{
led = ~P2led[i];
delay(50000);
}
for(i=0;(i<7)&&(press==0);i++)
{
led= P2led[i];
delay(50000);
}
}
void Int0Init()
{
IT0=1;
EX0=1;
EA=1;
}
void main()
{
Int0Init();
while (1)
{
if(press==0)
{
delay(1000);
ledopen();
}
if(press==1);
{
delay(1000);
led=0xFF;
}
}
}
void Int0() interrupt 0
{
delay(5000);
press =~press;
delay(5000);
IE0=0;
}
作者:
qwedsss
时间:
2018-3-16 09:40
全部函数贴出来
作者:
tdhlq
时间:
2018-3-16 10:01
把延时放在中断外,中断里尽量少干活.
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1