完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
void delay(uint z)
{ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 延时函数,怎么用定时器做呀? 能像上面的例子一样,能输入延时值的函数? 想做一个精确一点的,方便调用。。。 |
|
相关推荐
60个回答
|
|
|
首先设置定时器工作方式 也就是TMOD 在设置TH0/1,TL0/1的初值 也就是定时时间的设置 然后设置中断允许 ,并开中断
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
没人会吗?????
|
|
|
|
|
|
#include
void main() { TMOD=0X01; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TR0=1; while(1); } void timer0() interrupt 1 { TH0=0X3F; TL0=0XB0; } 我也是新手啊,刚刚学的,还不熟练,多多指教。
|
|
|
|
|
|
程序没编译,肯能有点错啊
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
楼主可以考虑用汇编语言写,相对简单一些。用C的话,上面那个人写的差不多,但是不能在delay中写值的那样。
|
|
|
|
|
|
楼主可以考虑用汇编语言写,相对简单一些。用C的话,上面那个人写的差不多,但是不能在delay中写值的那样。
|
|
|
|
|
|
我觉得楼主先搞清楚什么是定时器,你要实在想那样去做的话,设置好每次中断的时间,并在main函数中定义一个变量count,每次进T0中断后count++。 主函数中去判断count的大小,所以你要的精确定时=每次中断的时间*count
|
|
|
|
|
|
按照你的意思,写了如下三个函数。在初始化定时器0后(调用InitTimer0()),你可以调用DelayNms(unsigned int t)这个函数来达到你想要的要的延时效果。
unsigned int count;//定义全局变量用于计时 /*---------------------------------------- 函数名 :DelayNms(unsigned char t) 功能 : 延时n毫秒 输入参数 : t ,延时长度 输出参数 : 无 -------------------------------------------*/ void DelayNms(unsigned int t) { count=t; while(count); } /*---------------------------------------- 函数名 : InitTimer0 功能 : 定时器0初始化 输入参数 : 无 输出参数 : 无 -------------------------------------------*/ void InitTimer0() { TMOD |= 0x01;//定时器0,工作方式1 TH0=(65536-1000)/256;//定时1ms TL0=(65536-1000)%256; ET0 = 1;//打开定时器0中断 EA = 1;//打开总中断 TR0 = 1;//打开定时器0 } /*---------------------------------------- 函数名 :IsrTimer0 功能 :定时器0终端服务,间隔1ms将计数变量减一。 输入参数 : 无 输出参数 : 无 -------------------------------------------*/ void IsrTimer0() interrupt 1 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; count--; } |
|
|
|
|
|
写的很好,恐怕你是第一次这样拿定时器这样做延时吧。
|
|
|
|
|
|
|
|
|
|
|
|
貌似存在问题哦,当需要定时1ms时 若执行 count=t; 定时器计数是无法保证刚好在65536-1000的,因此如果定时tms 那么 (t-1)ms<实际<=tms,而且每次都不经相同。
这样改下如何:即使有误差,误差应该也是确定的 void DelayNms(unsigned int t) { TH0=(65536-1000)/256; TL0=(65536-1000)%256; count=t; while(count); } |
|
|
|
|
|
哈哈,楼上是正解,原来程序的确有问题,会有小于1ms的误差。 |
|
|
|
|
|
还是不怎么理解定时中断怎么调用的
|
|
|
|
|
|
本帖最后由 skyfly_HUT 于 2013-6-25 14:59 编辑
不错不错, ![]() |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16899 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:55 , Processed in 1.134118 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
979