4538|4

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

proteus仿真计时器中断出现问题,无法实现中断。 [复制链接]


这是我的电路图。。
下面是我的代码
#include
#include
#define UINT unsigned int

UINT cnt = 0;
void main()
{
    TMOD = 0X01;
    TH0 = (65536 - 50000) / 256;
    TL0 = (65536 - 50000) % 256;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
    P1 = 0x0f;
    if(cnt == 2)
    {
        cnt = 0;
        P1 = ~P1;
    }   
   
}

void timer0() interrupt 1
{
    TH0 = (65536 - 50000) / 256;
    TL0 = (65536 - 50000) % 256;
    cnt++;
}

我的芯片是AT89C52
运行后一直是前4个led灯亮,无法实现计时中断。。请问怎么回事呢。是不是电路图出现问题了。请大家帮帮忙啊。。

最新回复

Peasant_Lee 谢谢你了。。 就是这里出现问题了。。 唉呀。真晕。。竟然忘了加个大循环。。 谢谢。。  详情 回复 发表于 2010-5-15 17:33
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我刚学单片机。近来在看郭天祥的视频。。
想自己画电路图来尝试一下。就实现不了中断了。。
如果是我的电路图出现问题了,那应该怎么改呢。我问的问题很菜。请大家帮帮我啊。。
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
首先,原理图看不到。你的代码有问题。因为你的代码的判断没有在循环中判断。你开启了中断之后,应该要在循环中判断计数值 cnt 是否等于 2。
修改如何:

。。。。
。。。。
TR0 = 1;  
P1 = 0x0f;
while(1)
{
  if(cnt == 2)
  {
  cnt = 0;
  P1 = ~P1;
  }
}

这样,程序经常在while(1)中跑,才会检测cnt的值。还有,顺便讲讲,为了以后的代码扩大后,减少漏洞,你判断cnt的值,不应该是等于,而是大于或者等于。if(cnt >= 2)
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

4
 
http://hiphotos.baidu.com/e3399/pic/item/475f84da53fed50f32fa1c37.jpg
原理图在这里。。怎么看不到呢?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 

Peasant_Lee
谢谢你了。。
就是这里出现问题了。。
唉呀。真晕。。竟然忘了加个大循环。。
谢谢。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表