2783|4

10

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教外部中断问题 [复制链接]

请教外部中断问题
为什么一启动,P0.4亮,其他灭??
  1. /*
  2. 中断 2012-8-17
  3. 线路:
  4. P0.0、P0.4、P0.7各接一led
  5. P3.2、P3.3各接一按钮
  6. 要求:                                                  
  7. 初始状态,P0.0 led亮
  8. 当P3.2按钮按下时,中断,让P0.4 led 亮延时,然后灭,P0.0 led继续亮;
  9. 当P3.3按钮按下时,中断,让P0.7 led 亮延时,然后灭,P0.0 led继续亮
  10. */
  11. #include

  12. #define uint unsigned int

  13. sbit led_1 = P0^0;
  14. sbit led_2 = P0^4;
  15. sbit led_3 = P0^7;

  16. void ys(uint ms){//延时
  17.         uint i;
  18.         while(ms--){
  19.                 for(i=0;i<120;i++);
  20.         }
  21. }

  22. void zd_init(){//中断初始化
  23.         EX0 = 1;//打开外部中断0、1
  24.         EX1 = 1;

  25.         IT0 = 1;//下降沿触发中断0、1        
  26.         IT1 = 1;

  27.         IP = 0x05;//外部中断0、1的优先级为高

  28.         EA = 1;//打开全局中断
  29. }

  30. void zd_0(void) interrupt 0{//外部中断0
  31.         led_2 = 0;
  32.         ys(250);        
  33. }

  34. void zd_1(void) interrupt 2{//外部中断1
  35.         led_3 = 0;
  36.         ys(250);
  37. }

  38. void mian(void){
  39.         zd_init();//定时器初始化
  40.         while(1){
  41.                 P0 = 0xff;
  42.         };
  43. }
复制代码

zd.JPG (58.09 KB, 下载次数: 2)

zd.JPG
此帖出自51单片机论坛

最新回复

#include #define uchar unsigned char #define uint unsigned int sbit LED_1=P0^0; sbit LED_2=P0^4; sbit LED_3=P0^7; void DelayMS(uint x) {         uchar t;         while(x--) for(t=0;t  详情 回复 发表于 2012-8-31 16:19
点赞 关注
 

回复
举报

160

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
这等事。。看看有没有虚焊吧
此帖出自51单片机论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我现在只是在仿真环境就发现的问题
此帖出自51单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

4
 
外部中断0触发了
看看你的开关状态
此帖出自51单片机论坛
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

5
 
#include
#define uchar unsigned char
#define uint unsigned int
sbit LED_1=P0^0;
sbit LED_2=P0^4;
sbit LED_3=P0^7;
void DelayMS(uint x)
{
        uchar t;
        while(x--) for(t=0;t<120;t++);
}

void main()
{
        IE=0x85;       
        IT0=1;
        IT1=1;
        P0=0xfe;
}
//INT0中断函数
void EX_INT0() interrupt 0
{
        P0=0xef;
        DelayMS(500);
        P0=0xfe;        
}
//INT1中断函数
void EX_INT1() interrupt 2
{
        P0=0x7f;
        DelayMS(500);
        P0=0xfe;
}

按照你的思路写的程序,试过了可以成功.你看下.
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表