打印

关于单片机定时器和按键扫描问题

[复制链接]
1989|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
plhundan|  楼主 | 2008-5-27 23:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个程序,每隔一秒蜂鸣器响一下。开始程序如下:
#include<reg52.h>
sbit beep=P3^3;
unsigned int timenum;
void delay(unsigned int h)
{
    while(h--);
}

void main()
{
    TMOD=1;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    timenum=0;
    while(1);
    {
        if(timenum==20)
        {
            timenum=0;
            beep=0;
            delay(5000);
            beep=1;
        }    
    }
}

void buzzer() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    timenum++;

}#include<reg52.h>
sbit beep=P3^3;
unsigned int timenum;
void delay(unsigned int h)
{
    while(h--);
}

void main()
{
    TMOD=1;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    timenum=0;
    while(1);
    {
        if(timenum==20)
        {
            timenum=0;
            beep=0;
            delay(5000);
            beep=1;
        }    
    }
}

void buzzer() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    timenum++;

}
程序未出错,但有如下WARNING:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
SEGMENT:?PR?_DELAY?TIMER1
下载到单片机后,无法实现功能,请问这是为什么呀?

另问一下关于单片机实现按键扫描用什么方式好?中断,还是写在主函数里?
请各位指教,谢谢了!

相关帖子

沙发
wang4wei| | 2008-5-28 08:02 | 只看该作者

后面的分号去掉

你把
while(1);
后面的分号去掉

使用特权

评论回复
板凳
wxj1952| | 2008-5-28 10:38 | 只看该作者

我们处处不如人吗?

1、自己人的写法:代码开销比2、长了N 倍!
 TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;

2、又偶然看到一本书上简洁的写法。同样的目标,代码却只是咱们的1/N倍!可惜又是外国人写的。
......

应该怎么写才能使最终代码减小到1/N ?

使用特权

评论回复
地板
dld2| | 2008-5-28 10:44 | 只看该作者

楼上想说啥

使用特权

评论回复
5
cheungman| | 2008-5-28 11:51 | 只看该作者

嘻嘻,最小的开销应该是

TH0 = 0X3C;
TL0 = 0XB0;

使用特权

评论回复
6
游子| | 2008-5-28 12:29 | 只看该作者

三楼,代码开销长了N倍?

我以前在编译时仔细分析过编译后的代码,你那种写法应该不会增加代码开销,它们都是常数,在编译时刻就会换算成常数,如果没有,那可能是你的编译器太不智能了吧?你所说的简洁的写法是啥?

使用特权

评论回复
7
wxj1952| | 2008-5-28 13:10 | 只看该作者

6楼有道理,等我翻翻书比较一下把代码贴上来。

弄不好又要说对不起了。

5楼用人算不如用预处理?
#define   T50MS  -50000  //(大概意思。)
    

使用特权

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

本版积分规则

2

主题

2

帖子

0

粉丝