打印

怎么用定时器延时?

[复制链接]
4346|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bei_jxing|  楼主 | 2009-8-5 21:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在用软件延时,发现程序有跑飞的情况,想用定时器延时,实验几次都没有成功,想问一下,怎么用定时器延时,延时1S或0.5S。
沙发
ni_labview| | 2009-8-6 08:59 | 只看该作者
选个TIMER8,InterruptType选TerminalCount,时钟选32K,周期可以设成255,每次中断对某个变量加一,中断128次就是1S,我电脑不在身边,你先试试

使用特权

评论回复
板凳
derekx| | 2009-8-6 09:23 | 只看该作者
我用软件延时没问题啊!你的软件延时程序是怎样的?有没有开看门狗?如果开了,必须在延时中喂狗。

使用特权

评论回复
地板
bei_jxing|  楼主 | 2009-8-6 09:56 | 只看该作者
本帖最后由 bei_jxing 于 2009-8-6 09:58 编辑

没有开看门狗,程序没有跑飞,是我判断错误了,我用软件延时1ms的子程序,具体如下:
void Delayx1ms(WORD count)
{
        WORD i,j;
        for(i=0;i<count;i++)
        {
                for(j=0;j<120;j++)   
                ;
        }
}
感觉比较占用CPU,想用定时器做延时,因为之前看到别人有用定时器做延时,想尝试一下了!我今天就去试试TIME8,看效果怎么样.

使用特权

评论回复
5
bei_jxing|  楼主 | 2009-8-7 16:52 | 只看该作者
本帖最后由 bei_jxing 于 2009-8-7 16:53 编辑

今天试了用TEMER8做延时,按照二楼的配置:TIMER8,InterruptType选TerminalCount,时钟选32K,周期可以设成255,每次中断对某个变量加一,具体程序如下:
TIMER8的中断服务程序如下:
void Timer_D_ISR()
{
    if(Time_D++>255)Time_D=0;
}
延时子程序如下:
void Delayx0_5S(void)
{
        while(Time_D<=54)
        {
                ;
        }
        Time_D=0;
}
延时1S,我用定时器做延时想提高CPU的利用率,提高扫描键盘的速率;现在遇到的问题是按键响应不灵敏。改用定时器做延时,键盘响应的灵敏度效果没有明显改善。

使用特权

评论回复
6
Cypress-lh| | 2009-8-8 20:27 | 只看该作者
很多达人,学习了

使用特权

评论回复
7
Cypress2009| | 2009-8-23 16:21 | 只看该作者
明白了,回去也试一下延时

使用特权

评论回复
8
Cypress-lh| | 2009-8-23 16:51 | 只看该作者
说的好详细啊

使用特权

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

本版积分规则

56

主题

251

帖子

0

粉丝