打印

51单片机10s内无操作就执行某一已操作怎么实现?

[复制链接]
1437|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
柚丶夏|  楼主 | 2016-10-12 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
gx_huang| | 2016-10-12 11:57 | 只看该作者
错别字太多。
基础的看教科书呀。
如果描述都描述不清楚,程序一般写不好的。

使用特权

评论回复
板凳
sepmoon| | 2016-10-12 17:45 | 只看该作者
主程序加个变量条件判断,变量值改变就将数码管显示0,这个变量在定时器中断里设置,无按键定时器开始计时,10S后设置变量

使用特权

评论回复
地板
柚丶夏|  楼主 | 2016-10-12 17:53 | 只看该作者
gx_huang 发表于 2016-10-12 11:57
错别字太多。
基础的看教科书呀。
如果描述都描述不清楚,程序一般写不好的。 ...

我好像只有一个错别字啊。。
我看了,道理都看懂了,就是不会写啊TAT

使用特权

评论回复
5
柚丶夏|  楼主 | 2016-10-12 18:03 | 只看该作者
sepmoon 发表于 2016-10-12 17:45
主程序加个变量条件判断,变量值改变就将数码管显示0,这个变量在定时器中断里设置,无按键定时器开始计时 ...

计数器开始计时是指开计数器吗?
我不清楚计数器子程序怎么在main函数里引用。。
比如
void main()
{
while(1)
{
key();  //键盘扫描
disp();  //数码管显示
timer();  //计数器
}
}
是这样吗?
(我真的看了很多书,不知道是不是我学识浅薄,但是真的感觉讲的很笼统。。)

使用特权

评论回复
6
sepmoon| | 2016-10-12 23:23 | 只看该作者
柚丶夏 发表于 2016-10-12 18:03
计数器开始计时是指开计数器吗?
我不清楚计数器子程序怎么在main函数里引用。。
比如

unsigned int a;
void timer_isr(void)//定时器中断程序
{
a ++;
}

void main(void)
{
a=0;
timer_int();//定时器初始化并启动,周期1mS

while(1)
{
  if(按键触发)
  {
   a=0;//清除计数
  }

   if(a>=10000)//10秒
  {
   数码管显示0;
   a=0;
  }
}
}

使用特权

评论回复
7
AKKan| | 2016-10-13 13:09 | 只看该作者
unsigned g_TIME_COUNT = 0;
void main()
{
     unsigned temp;
     init_timer0();     //T0定时100ms
     while(1)
    {
           temp = keyboard();
           if(temp !=0)    //假设无按键按下返回0
           {   
                      g_TIME_COUNT = 0;
            }
           if(g_TIME_COUNT > 100)
           {
            显示0000
            g_TIME_COUNT = 101;
           }
     }
}
void T0_interrupt()interrupt 1
{
      TF0 = 0;
      g_TIME_COUNT ++;
}
差不多这样吧,至于选用何种计时方式,啥时候使能T0更准确,楼主自己弄吧

使用特权

评论回复
8
AKKan| | 2016-10-13 13:14 | 只看该作者
sepmoon 发表于 2016-10-12 23:23
unsigned int a;
void timer_isr(void)//定时器中断程序
{

我觉得数码管显示0之后,a不能清零。否则,显示一下0之后,相当于默认有按键按下,a又得重新计数。应该将a锁在10000,10秒内只要没按键按下,a就不清零,就一直显示0,直到有按键按下,才清零进入下个计时周期。

使用特权

评论回复
9
柚丶夏|  楼主 | 2016-10-13 16:32 | 只看该作者
sepmoon 发表于 2016-10-12 23:23
unsigned int a;
void timer_isr(void)//定时器中断程序
{

谢谢太感谢了

使用特权

评论回复
10
sepmoon| | 2016-10-14 14:55 | 只看该作者
AKKan 发表于 2016-10-13 13:14
我觉得数码管显示0之后,a不能清零。否则,显示一下0之后,相当于默认有按键按下,a又得重新计数。应该将 ...

有道理,考虑更严谨

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝