标题: 51单片机中断问题,求大佬求教 [打印本页]

作者: lostrivers    时间: 2018-3-15 20:18
标题: 51单片机中断问题,求大佬求教
我的想法是做一个从中间到两边的流水灯,然后用P3独立按键控制,不知道为什么达不到想要的效果。
求大佬指点
  1. #include "reg52.h"
  2. #include<intrins.h>
  3. typedef unsigned int u16;
  4. typedef unsigned char u8;
  5. sbit k3=P3^3;
  6. #define led P2
  7. u8 P2led[7]={0xE7,0xDB,0xBD,0x7E,0xBD,0xDB,0xE7};
  8. u8 press=0;
  9. void delay(u16 i)
  10. {
  11.   while(i--);
  12. }
  13.   
  14. void ledopen()
  15. {
  16.   u8 i;
  17. led= 0xE7;
  18. delay(50000);
  19. for(i=0;i<7;i++)
  20. {
  21.   led = ~P2led[i];
  22.   delay(50000);
  23. }
  24.   for(i=0;i<7;i++)
  25. {
  26.    led= P2led[i];
  27.   delay(50000);
  28. }
  29. }
  30. void Int0Init()
  31. {
  32.   IT0=1;
  33. EX0=1;
  34. EA=1;
  35. }
  36. void main()
  37. {
  38. Int0Init();
  39. if(k3 == 1)
  40. {
  41.     delay(1000);  
  42.   ledopen();
  43. }
  44.   if(k3 == 0);
  45. {
  46.    delay(1000);
  47.    led=0xFF;
  48. }
  49. }
  50. void Int0() interrupt 0
  51. {
  52.   delay(1000);
  53. while(k3 == 0)
  54. {
  55. press +=1;
  56. if(press == 2)
  57. press=0;
  58. delay(10);
  59. }
  60. }
复制代码

作者: 罗文杰    时间: 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