标题:单片机C语言关于定时计数器程序运行时序问题
只看楼主
我是凯皇
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2019-6-17
结帖率:100%
 问题点数:0 回复次数:1 
单片机C语言关于定时计数器程序运行时序问题
请问定时计数器计数过程中是否占用主函数运行时间,while(1)怎么解释,主函数运行后会跳过这条指令吗?中断服务程序中,当i自加一次后,未满足IF条件,会跳出服务程序回到主程序吗?计数器在中断服务程序中会运行吗?i定义为静态和动态有区别吗?我见其它程序也有定义成动态变量的。就是时序搞不懂,求大神
# include <reg52.h>
sbit D1 = P1^0;//LED灯对于IO口位声明

void main()
{
TMOD = 0x00;    //定时器0工作模式0,13位计数器
TH0    = (8192 - 4608) / 32;//TH储存13位中高8位
TL0 = (8192 - 4608) % 32;//TL储存13位中低5位,定时5毫秒
ET0 = 1; //开定时器0中断
TR0 = 1; //启动定时器0
EA = 1; //开总中断
while (1);//等待中断   
}

void Timer0() interrupt 1//定时器0中断服务程序
{
static unsigned char i;//溢出次数计数静态变量
TH0    = (8192 - 4608) / 32;
TL0 = (8192 - 4608) % 32;/*每次溢出后需给定时器0放置初值*/
i++;
if (i == 200) //200次溢出后1秒时间到
{
D1 = ~D1;//将LED灯状态取反
i = 0;    //    清零溢出计次数
}
}
搜索更多相关主题的帖子: 定时 计数器 运行 中断 定时器 
2019-06-20 08:55
RJQ
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-7-5
得分:0 
当中断时,计数器应该停止,而执行中断返回后再开始继续计数
2019-07-05 09:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495382-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.227427 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved