查看: 3829|回复: 13

51外部中断

[复制链接]
  • TA的每日心情
    奋斗
    2016-11-11 16:09
  • 签到天数: 287 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-7 11:51:35 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 Earduino 于 2013-8-7 14:50 编辑

         我想使用按键来触发2个外部中断,然后用定时器来计算按键按的时间,定时50ms然后每中断一次灯亮一次,来提示时间通过人眼给反应。
       程序如下:
    #include<reg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit k1=P3^2;
    sbit k2=P3^3;
    sbit light=P1^0;
    int num;
    /*void delayms(unsigned int xms)//延时ms
    {
        unsigned int i,j;
       for(i=xms;i>0;i--)
             for(j=110;j>0;j--);   
    }*/



    void main()
    {  
    EA=1;
    EX0=1;
    EX1=1;
    TMOD=0X01;
    TH0=(65536-45872)/256;//定时50ms
    TL0=(65536-45872)%256;//定时50ms
    IT0=0;//设置外部中断方式为低电平触发
    IT1=0;//设置外部中断方式为低电平触发
       while(1)
        {
           
            light=1;//主循环一直灯灭

        }
    }



    void waibuzhongduan0() interrupt 0//进入外部中断0后控制定时器0开
    {
        ET0=1;
           

    }
    void waibuzhongduan1()interrupt 2//进入外部中断1后控制定时器1开
    {

        ET1=1;
           
    }



    void dingshiqi0() interrupt 1  //定时器中断中重新给初值,灯亮,通过和主程序灯灭给人提示时间
    {
        TH0=(65536-45872)/256;
            TL0=(65536-45872)%256;
            light=0;ET0=0;
    }


    void dingshiqi1() interrupt 3
    {
        TH0=(65536-45872)/256;
            TL0=(65536-45872)%256;
            light=0;ET1=0;
    }
    我用实际板子和按键测试,灯不亮,也没有其他现象,我的程序有问题还是什么,怎么改
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-9-20 19:11
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-8-7 13:57:02 | 显示全部楼层
    本帖最后由 anqi90 于 2013-8-7 13:59 编辑

    灯不亮的原因有很多啊,是LED的质量问题?单片机驱动电路问题?还是代码的问题?一步一步排查看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-27 09:54
  • 签到天数: 920 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-8-7 14:07:15 | 显示全部楼层
    敢不也不贴这么长的代码,把你自己的分析先拿出来,自己都没分析就来问怎么回事。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-11 16:09
  • 签到天数: 287 天

    连续签到: 1 天

    [LV.8]以坛为家I

     楼主| 发表于 2013-8-7 14:30:57 | 显示全部楼层
    treasuredog 发表于 2013-8-7 14:07
    敢不也不贴这么长的代码,把你自己的分析先拿出来,自己都没分析就来问怎么回事。。。。 ...

    有头绪就不会问了,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-11 16:09
  • 签到天数: 287 天

    连续签到: 1 天

    [LV.8]以坛为家I

     楼主| 发表于 2013-8-7 14:31:47 | 显示全部楼层
    anqi90 发表于 2013-8-7 13:57
    灯不亮的原因有很多啊,是LED的质量问题?单片机驱动电路问题?还是代码的问题?一步一步排查看看 ...

    led没问题。驱动?led都要驱动?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2013-9-20 19:11
  • 签到天数: 31 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-8-7 14:37:25 | 显示全部楼层
    Earduino 发表于 2013-8-7 14:31
    led没问题。驱动?led都要驱动?

    说是驱动,实际就是控制电路,直接控制单片机的引脚电平高低,看LED亮不亮
    先确保这部分正常了再看定时器
    尽量减少操作中的未知部分
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-27 09:54
  • 签到天数: 920 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-8-7 14:42:12 | 显示全部楼层
    Earduino 发表于 2013-8-7 14:30
    有头绪就不会问了,

    最其马把代码相应该有的注释加上,也就是把你自己的思路写上
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-11 16:09
  • 签到天数: 287 天

    连续签到: 1 天

    [LV.8]以坛为家I

     楼主| 发表于 2013-8-7 14:45:27 | 显示全部楼层
    anqi90 发表于 2013-8-7 14:37
    说是驱动,实际就是控制电路,直接控制单片机的引脚电平高低,看LED亮不亮
    先确保这部分正常了再看定时器 ...

    这些测过了。正常的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-11 16:09
  • 签到天数: 287 天

    连续签到: 1 天

    [LV.8]以坛为家I

     楼主| 发表于 2013-8-7 14:52:20 | 显示全部楼层
    treasuredog 发表于 2013-8-7 14:42
    最其马把代码相应该有的注释加上,也就是把你自己的思路写上

    注释加了,会帮忙看看吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-27 09:54
  • 签到天数: 920 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-8-7 15:07:47 | 显示全部楼层
    你最后两个定时中断函数,把ET0与ET1都=0,之后你在哪开了?你不开怎么查到外部中断?再者没发现你说的让light=0的语句
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-15 08:51 , Processed in 0.202237 second(s), 33 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.