怎么用定时器延时?

[复制链接]
5222|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,看效果怎么样.
 楼主| 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的利用率,提高扫描键盘的速率;现在遇到的问题是按键响应不灵敏。改用定时器做延时,键盘响应的灵敏度效果没有明显改善。
Cypress-lh 发表于 2009-8-8 20:27 | 显示全部楼层
很多达人,学习了
Cypress2009 发表于 2009-8-23 16:21 | 显示全部楼层
明白了,回去也试一下延时
Cypress-lh 发表于 2009-8-23 16:51 | 显示全部楼层
说的好详细啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

251

帖子

0

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