找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4788|回复: 16
打印 上一主题 下一主题
收起左侧

单片机程序 为什么进不了中断? 谢谢啦

  [复制链接]
跳转到指定楼层
楼主
ID:182522 发表于 2017-5-4 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                 #include<reg52.h>sbit led=P2^0;
#define uchar unsigned char;
uchar x,y,t;
void main()
      {  
         TMOD=0X01;//定时器0 工作方式1
         TH0=(65536-50000)/256;//高八位赋初值
         TL0=(65536-50000)%256;//低八位赋初值
         EA=1;//开总中断
         ET0=1;//开定时器0中断
         TR0=1;//启动定时器
        if(t==20)
       {
          t=0;
          led=0;
       };
         led=1;
      }
void exter0() interrupt 1
       {
         TH0=(65536-50000)/256;//高八位赋初值
         TL0=(65536-50000)%256;//低八位赋初值
          t++;
       }

哪位大神能告知一下程序为什么进不了中断?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:182522 发表于 2017-5-4 16:18 | 只看该作者
有好心人 解惑吗?
回复

使用道具 举报

板凳
ID:187614 发表于 2017-5-4 22:33 | 只看该作者
1.建议t赋个初值;2.f(t==20)改为f(t>=20)
回复

使用道具 举报

地板
ID:142559 发表于 2017-5-4 22:57 | 只看该作者
没出错吗
回复

使用道具 举报

5#
ID:194033 发表于 2017-5-4 23:26 来自手机 | 只看该作者
可以试试将主函数tr0=1;后面的语句放入while(1)死循环中。
回复

使用道具 举报

6#
ID:196753 发表于 2017-5-4 23:53 | 只看该作者
同问,
回复

使用道具 举报

7#
ID:196754 发表于 2017-5-4 23:59 | 只看该作者
什么编译器?
回复

使用道具 举报

8#
ID:196870 发表于 2017-5-5 11:54 | 只看该作者
应该是没while循环导致定时器只溢出一次,所以灯没变化
回复

使用道具 举报

9#
ID:196908 发表于 2017-5-5 13:39 | 只看该作者
个人感觉在主程序最后需要加一个循环命令,即最后加一个while();
回复

使用道具 举报

10#
ID:196497 发表于 2017-5-5 16:21 | 只看该作者
没有死循环                 程序跑飞了!!!!!!!!!!!!!
回复

使用道具 举报

11#
ID:128363 发表于 2017-5-8 11:27 | 只看该作者

                 #include<reg52.h>sbit led=P2^0;
#define uchar unsigned char;
uchar x,y,t;
void main()
      {  
         TMOD=0X01;//定时器0 工作方式1
         TH0=(65536-50000)/256;//高八位赋初值
         TL0=(65536-50000)%256;//低八位赋初值
         EA=1;//开总中断
         ET0=1;//开定时器0中断
         TR0=1;//启动定时器
while(1)
{
        if(t==20)
       {
          t=0;
          led=0;
       };
         led=1;
    }
  }
void exter0() interrupt 1
       {
         TH0=(65536-50000)/256;//高八位赋初值
         TL0=(65536-50000)%256;//低八位赋初值
          t++;
       }
回复

使用道具 举报

12#
ID:148552 发表于 2017-5-8 13:07 | 只看该作者
程序最后一句加上while(1);
回复

使用道具 举报

13#
ID:198121 发表于 2017-5-8 13:49 | 只看该作者
加个while(1)循环!
回复

使用道具 举报

14#
ID:198121 发表于 2017-5-8 14:07 | 只看该作者
程序要加死循环!
回复

使用道具 举报

15#
ID:159139 发表于 2017-5-8 16:37 | 只看该作者
应该主程系if语句前加上while(1)
回复

使用道具 举报

16#
ID:193213 发表于 2017-5-8 17:38 | 只看该作者
      if(t==20)
       {
          t=0;
          led=0;
       };
这里太快,人眼识别不了,几乎led一直等于1
回复

使用道具 举报

17#
ID:198319 发表于 2017-5-8 20:06 来自手机 | 只看该作者
程序要加死循环 不然一直在装初值 本来加到要益处 结果有赋值了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表