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

[复制链接]
2453|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 的设置吧
逍遥派掌门 发表于 2019-5-7 09:35 | 显示全部楼层
只看到程序片段,不好说。

51的中断总开关,开了没有?
rankey 发表于 2019-5-7 12:28 | 显示全部楼层

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

whtwhtw 发表于 2019-5-8 09:08 | 显示全部楼层
ayb_ice 发表于 2019-5-6 15:27
if(key!= 0xff)
条件一直满足吧

我也好奇,检测按键这样检测吗?
ky_21ic 发表于 2019-5-11 21:32 | 显示全部楼层
别用51了,有点落后了。
WangJingKai 发表于 2019-5-25 19:06 | 显示全部楼层
定时器初始化有问题,一是没开启定时器;二是没开启定时器中断和全局中断。
正确的初始化函数可以参考下面代码:
void Time0Init(void)
{
TMOD=0x10;
TH0 = 0xe2;
TL0 = 0x00;
ET0 = 1;  //开启定时中断
EA = 1; //开启全局中断
TR0 = 1; //启动定时器
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

84

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部