打印

有个想法,想用定时器嵌套到延时里,请教下高手

[复制链接]
1318|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bingbingrere|  楼主 | 2012-8-31 13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void delay()//定时器延时
{

TMR1ON=1;

TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;

while(!TMR1IF);

TMR1ON=0;
}
我就写这个   最后不用定时器中断子函数了,但是程序跑不起来,请教下应该怎么改下。初始化什么的都没问题,因为我用中断子函数是能工作的。
沙发
yewuyi| | 2012-8-31 14:01 | 只看该作者
while(!TMR1IF);

跑不出来,那肯定就是这一句起了作用,TMR1IF始终不能置1,所以跳不出这个判断,具体为何不能置1,则请自己去查。

另外,个人实在没看来这样的函数有什么太大的实际作用,请自思是否确有需要这样用。

使用特权

评论回复
板凳
兰天白云| | 2012-9-3 13:55 | 只看该作者
这样的用法有点画蛇添足

使用特权

评论回复
地板
Light_David| | 2012-9-4 00:15 | 只看该作者
怎么没看到你在函数里清零TMR1IF啊?  一直置1未清零造成的吧,,

使用特权

评论回复
5
NE5532| | 2012-9-6 17:02 | 只看该作者
楼主的中断部分课程,重修!

使用特权

评论回复
6
optical85| | 2012-9-10 09:14 | 只看该作者
用个临时变量for累加不就完了吗?具体延时时间可以通过数汇编的指令周期数来计算。

使用特权

评论回复
7
XIEYUANBIN| | 2012-9-11 11:58 | 只看该作者
TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;

这两个语句,够楼主喝一壶了。

使用特权

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

本版积分规则

3

主题

20

帖子

0

粉丝