[PIC®/AVR®/dsPIC®产品] [紧急求助] PIC单片机如何控制程序运行的时间?急。。

[复制链接]
1534|8
 楼主| luminqi 发表于 2014-4-9 07:37 | 显示全部楼层 |阅读模式

在做一个课程设计,小弟是个新手,刚接触单片机没多久。想问一下如何控制程序运行的时间?
比如说让小灯不停得闪烁10秒。我自己看了一下相关资料,是用定时器来控制吗?
哪位大神能写一段程序说明一下,感激不尽。用PIC16F877A来做,初始化trm0,定义一个全局变量count,每次中断+1,在主程序(控制小灯闪烁while(1){led=~led;  delay_ms(200))中加上if(count = 50)break;这是我的思路。。。。
 楼主| luminqi 发表于 2014-4-9 21:03 | 显示全部楼层
求大神!
 楼主| luminqi 发表于 2014-4-10 19:41 | 显示全部楼层
求助!
ZG11211 发表于 2014-4-10 20:22 | 显示全部楼层
本帖最后由 ZG11211 于 2014-4-10 20:24 编辑

诀窍就是用定时器设置一个(或N个)计时变量,然后主代码循环里规定他几点上课,几点午休,几点下课就O了。
ayb_ice 发表于 2014-4-11 09:45 | 显示全部楼层
用定时器做个滴答,然后对滴答计数
xlsf1048 发表于 2014-4-11 16:33 | 显示全部楼层
初始化count为0,可另增设一个标志位例如:Flag_work.当Flag_work为1表示还需要闪烁,0表示不闪烁。在200ms的定时中断服务函数里面
if(Flag_work == 1)
{
  led~=1;
  count++;
  if(count == 50)
  {
    count = 0;
    Flag_work = 0;
    //增加一条指令灭掉灯
  }
}
 楼主| luminqi 发表于 2014-4-11 20:22 | 显示全部楼层
ayb_ice 发表于 2014-4-11 09:45
用定时器做个滴答,然后对滴答计数

小灯闪烁的程序是必须放在定时器中断程序里,还是可以放在主程序里,小灯闪烁延时delay_ms(200),和定时器延时是否会有冲突?
 楼主| luminqi 发表于 2014-4-11 20:23 | 显示全部楼层
xlsf1048 发表于 2014-4-11 16:33
初始化count为0,可另增设一个标志位例如:Flag_work.当Flag_work为1表示还需要闪烁,0表示不闪烁。在200ms ...

可以把小灯闪烁的程序放在主程序里面,而不是放在中断服务函数里吗?
xlsf1048 发表于 2014-4-14 09:01 | 显示全部楼层
if(Flag_work == 1)
{
  led~=1;
  Flag_work = 0;
}//这个放在主函数,当定时产生,且还没到达10S时,产生Flag_work=1;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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