OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5080|回复: 6

这个T0中断程序怎么实现相应的功能

[复制链接]

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
发表于 2013-11-14 11:26:18 | 显示全部楼层 |阅读模式

/**************************************
定时器中断初始化
***************************************/
void Timer_Init(void)
{
 TMOD = 0x01; // 采用T0方式
 TH0 = (65536-45872)/256;
 TL0 = (65536-45872)%256; // 定时的时间
 ET0 = 1; //定时器T0中断允许位
 TR0 = 1; //启动定时器
 EA = 1; //CPU中断允许(总允许)位
}
/****************************************
定时器0溢出中断
****************************************/
void Timer0(void) interrupt 1 using 1

 
 TH0 = (65536-45872)/256;
 TL0 = (65536-45872)%256;
 num++;
 if(num == 20)
 {
  TR0 = 0; //初始化定时器
  if(key0 == 1)
  {
#ifdef _DEVICEFLAG_ 
  
   Delay_ms(20);

  if(key0 == 0)  //按键2
  {
   ControlFlag = 2;
  }
  else if(key0 == 1)
  {
   ControlFlag = 1;
  }  
#else
  if(key0 == 1)
  {
   ControlFlag = 1;
  }
#endif
  }
  num = 0;
  TR0 = 1; //启动定时器
 }

 
}
单片机为at89c51,要实现的功能是短按(小于2s),长按(大于3s),这个程序怎么只能执行长按啊?还有那个num=20不是执行的循环?求教

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-11-14 11:48:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2013-11-14 12:14:48 | 显示全部楼层
回复【楼主位】我的世界123:
---------------------------------
TH0 = (65536-45872)/256;这个45872是定时时间吧,大概多少时间看晶振,假如是50ms,也就是50ms一次中断,每次中断num+1;num=20就是过了1s了,长按短按你去分析分析那个 ControlFlag 在程序里的调用吧
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-14 12:59:27 | 显示全部楼层
回复【3楼】as564335sa:
---------------------------------
好的,thanks!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2013-11-16
在线时间
1 小时
发表于 2013-11-16 10:29:45 | 显示全部楼层
#ifdef  _DEVICEFLAG_ 
这里不是个条件编译么?
如果定义了DEVICEFLAG就编译上半段,没有就编译下半段, 
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-18 11:04:02 | 显示全部楼层
回复【5楼】wuxin999:
---------------------------------
这不是条件编译,要不要都可以的吧
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2013-11-16
在线时间
1 小时
发表于 2013-11-21 09:40:32 | 显示全部楼层
回复【6楼】我的世界123:
---------------------------------
这里是条件编译,我试了,有#ifdef  _DEVICEFLAG和没有#ifdef  _DEVICEFLAG最后编译出来的汇编代码是不一样的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表