打印

请教下51单片机定时器进不了中断函数

[复制链接]
2085|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzcook|  楼主 | 2019-5-6 13:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片是89c52 晶振是18.432定时5ms
void Timer0Init(void)
{
    TMOD = 0x10;
    TH0 = 0x0E2;
    TL0 = 0x00;
}


void tm0_isr() interrupt 1
{
    SendByte(0x11);
    TH0 = 0x0E2;
    TL0 = 0x00;   
        countt++;
   if (countt== 200)               //1ms * 1000 -> 1s
    {                       
        TR0 = 0;   
        countt = 0;         
        BEEP = 1;     
    }                       
}

别的地方
if(key!= 0xff)
{
TR0=1;  
BEEP = 0;
}

按键按下打开定时器 同时蜂鸣器响 1s关闭蜂鸣器
但是试过后是按键按下蜂鸣器一直响 不会停
麻烦各位帮忙解答下

使用特权

评论回复

相关帖子

沙发
21learner| | 2019-5-6 14:42 | 只看该作者
仔细确认一下,是不是实时关闭定时器中断没有?

使用特权

评论回复
板凳
ayb_ice| | 2019-5-6 15:27 | 只看该作者
if(key!= 0xff)
条件一直满足吧

使用特权

评论回复
地板
airwill| | 2019-5-6 22:24 | 只看该作者
检查一下 TR0 的设置吧

使用特权

评论回复
5
逍遥派掌门| | 2019-5-7 09:35 | 只看该作者
只看到程序片段,不好说。

51的中断总开关,开了没有?

使用特权

评论回复
6
rankey| | 2019-5-7 12:28 | 只看该作者

void Timer0Init(void)
{
    TMOD = 0x10;
    TH0 = 0x0E2;
    TL0 = 0x00;
    EA=1;    //开总中断开关
}

使用特权

评论回复
7
whtwhtw| | 2019-5-8 09:08 | 只看该作者
ayb_ice 发表于 2019-5-6 15:27
if(key!= 0xff)
条件一直满足吧

我也好奇,检测按键这样检测吗?

使用特权

评论回复
8
ky_21ic| | 2019-5-11 21:32 | 只看该作者
别用51了,有点落后了。

使用特权

评论回复
9
WangJingKai| | 2019-5-25 19:06 | 只看该作者
定时器初始化有问题,一是没开启定时器;二是没开启定时器中断和全局中断。
正确的初始化函数可以参考下面代码:
void Time0Init(void)
{
TMOD=0x10;
TH0 = 0xe2;
TL0 = 0x00;
ET0 = 1;  //开启定时中断
EA = 1; //开启全局中断
TR0 = 1; //启动定时器
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

84

帖子

0

粉丝