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

[复制链接]
2337|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未清零造成的吧,,
NE5532 发表于 2012-9-6 17:02 | 显示全部楼层
楼主的中断部分课程,重修!
optical85 发表于 2012-9-10 09:14 | 显示全部楼层
用个临时变量for累加不就完了吗?具体延时时间可以通过数汇编的指令周期数来计算。
XIEYUANBIN 发表于 2012-9-11 11:58 | 显示全部楼层
TMR1L=(65536-50000)%256;

TMR1H=(65536-50000)/256;

这两个语句,够楼主喝一壶了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

20

帖子

0

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