完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void delay(uint z)
{ uint x; TMOD=0x01;//T0选择工作方式一,16位定时器 TR0=0;//T0关 for(x=z;x>0;x--) { TH0=(65536-55536)/256; TL0=(65536-55536)%256;//定时10ms TR0=1;//T0开 } } 我是这样考虑的,用定时器T0的工作方式一,定时10ms。 用for语句的循环功能,对其循环控制。 z等于几,就是循环几次,也就是说延时几个10ms。 如果不满足for中的表达式2,则进入语句,进行动作,然后再求解表达式3. |
|
相关推荐
11个回答
|
|
这种方式感觉不是很好
|
|
|
|
|
|
|
|
这个我就没有用中断,就是用定时器。 比较常见 用中断给定时器重新赋值 这个程序我想的是 进入一次循环 重新赋值一次 |
|
|
|
|
|
|
|
定时器写错了,而且你是延时55536的时间。间的数才是延时的时间,比如这个就是延时50毫秒
TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; |
|
|
|
void delay(uint z) { uint x; TMOD=0x01;//T0选择工作方式一,16位定时器 TR0=0;//T0关 for(x=z;x>0;x--) { TH0=(65536-55536)/256; TL0=(65536-55536)%256;//定时10ms TR0=1;//T0开 } } 这个程序里的定时器 我设定的时间是10毫秒 加上一个for循环 如果z=5,然后这个delay(5);就延时50毫秒。 这个跟中断开不开没关系吧, 不知道这样对不对??? 用定时器了,中断必须开么? |
|
|
|
有点浪费定时器
|
|
|
|
|
|
|
|
我也想说, 定时器这样用, 太浪费了. 你可以用一个定时器, 定一个最小中断时间, 比如定时器0, 每1ms中断一次, 在中断里面, 可以做很多延时的东西. 不会一个定时器只能用于做一件事情.
|
|
|
|
学习了
|
|
|
|
大侠 是这样的 我现在做一个实验,目的就是应用定时器,而不用中断。 因为工作方式一,的值溢出之后,还得重新赋值么 我就是想知道这样循环的方式 去赋值 行不行 同时达到了延时的目的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12037 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 04:59 , Processed in 0.725913 second(s), Total 91, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号