切换到宽版
左右分栏
统计
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
日志
群组
热榜
分享
记录
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
论坛
群组
火腿广场
手机客户端
帖子
用户
版块
帖子
搜索
PHPWIND
HELLOCQ
哈罗CQ火腿社区
>
单片机与自动控制
>
新手请教:单片机计时器用法
发帖
回复
返回列表
新帖
3323
阅读
3
回复
新手请教:单片机计时器用法
[复制链接]
上一主题
下一主题
离线
BG7PMZ
UID:2681
注册时间
2002-12-15
最后登录
2024-09-25
在线时间
5999小时
发帖
3139
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
发帖
3139
加关注
发消息
只看楼主
倒序阅读
0楼
发表于: 2010-03-30
需要长延时的时候,如果使用_delay_ms();这些函数,会导致程序在延时函数里面死跑,无法处理其他任务,人家说,可以使用定时器产生一个固定时间的中断,然后再中断函数里面修改一个全局变量(自加?)然后读取这个全局变量去确定经过的时间。。。大概是这样,具体是怎么实现呢?理解起来都有点含糊了。。望高人指教
例如,一个按键的例子,教程上这样写的,但实际上,比较短的延时还可以用,一旦时间比较长
会导致程序在延时函数里面死跑
int main(void)
{
if(按键按下)
_delay_ms(20);
if(按键按下)
{
按键处理程序
}
}
定时器中断处理程序//1ms发生一次中断
{
}
如果我想用定时器中断来确定按键按下所经过的时间,应该怎么做呢?假设我已经设置好,定时器每1ms发生一次中断
共
条评分
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
anybody-hf
UID:25069
注册时间
2005-05-13
最后登录
2017-06-29
在线时间
460小时
发帖
1083
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
1083
加关注
发消息
只看该作者
1楼
发表于: 2010-03-30
不知道,本身来说按键按下后就是不应该响应其它的,除非有优先级高的中断
共
条评分
回复
举报
离线
BG7PMZ
UID:2681
注册时间
2002-12-15
最后登录
2024-09-25
在线时间
5999小时
发帖
3139
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
3139
加关注
发消息
只看该作者
2楼
发表于: 2010-03-30
[quote=anybody-hf]不知道,本身来说按键按下后就是不应该响应其它的,除非有优先级高的中断[/quote]
按键按下只是举例而已,如果是30分钟关机倒计时呢?不可能用_delay_ms里面跑几十分钟吧?当然,可以在长延时函数里面嵌套其他的条件跳出延时,但总在一个长延时里面跑着总觉得不合理!
共
条评分
回复
举报
离线
zyslcl-2
UID:20257
注册时间
2004-10-12
最后登录
2025-07-15
在线时间
1568小时
发帖
2257
搜Ta的帖子
精华
0
访问TA的空间
加好友
用道具
注册用户
发帖
2257
加关注
发消息
只看该作者
3楼
发表于: 2010-04-06
设定全局变量,打开定时器,在中断里设一个全局变量随定时器累加或递减。在主程序里判断变量值从而确定你想做的事情。
共
条评分
回复
举报
发帖
回复
返回列表
https://www.hellocq.net/forum
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
隐藏
快速跳转
火腿资讯区
中国QSL卡片管理局
公告通知
各地火腿活动专题
火腿交流区
火腿神聊
新手培训班
莫尔斯电码 - CW
QSL卡展板
火腿技术区
DX通信
QRP and DIY
设备
天线和铁塔
V/UHF和移动通信
卫星和空间通信
APRS专题
业余无线电应急通信
火腿资源区
FlexRadio SDR收发机
现代通信
业余无线电器材信息
EchoLink/IRLP/远程电台及其他VoIP技术专区
火腿文化
ARDF - 业余无线电测向
计算机应用及数码产品
《电子制作》杂志
邻家火腿快讯
单片机与自动控制
HAM软件、HAM网站
业余无线电中文计划
HELLOCQ火腿社区版务工作室
关闭
关闭
选中
1
篇
全选