3981|9

28

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助 MSP430中for语句一个循环的时间是多久 [复制链接]

是主时钟的时间吗?
贴一下代码
#pragma vector=PORT1_VECTOR
__interrupt void Port_1 (void)
{
  for(p=40960;p>0;p--)//红灯常亮
    P2OUT=0x6F;
  P1IFG=0X00;
}
意思就是按一下按键开始倒数10秒,然后一个LED亮10秒 MCLK已选择32.768K  实际烧写到板子上无论怎么更换P的值 都是12秒左右 我考虑可能是机器时间并不是我所想的主时钟时间,求大神解答!!

最新回复

如果冲突就换一个定时器   详情 回复 发表于 2015-1-15 08:36
 
点赞 关注

回复
举报

28

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
还是我要实现这个功能的话需要在中断程序里面再加一个TimerB计时器???
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
不要在中断服务程序里搞长延时

点评

额 那如果我想实现按键中断服务里有定时功能怎么实现 求教 求教 思路阻塞了  详情 回复 发表于 2015-1-15 08:27
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

4
 
sint27 发表于 2015-1-15 08:17
不要在中断服务程序里搞长延时

额 那如果我想实现按键中断服务里有定时功能怎么实现 求教 求教 思路阻塞了


点评

在按键中断里置flag为高,在定时器中断里if(flag) { cunt++ if(cunt>time) { flag=0; count=0; 以及可能要处理的其他数值 } } 思路如上,细节请自己处  详情 回复 发表于 2015-1-15 08:36
 
 
 

回复

9790

帖子

24

TA的资源

版主

5
 
建议使用定时器延时
  1. void delay_ms(uint16_t ms)
  2. {
  3.     if(ms > 5957)while(1);
  4.     TA0CCTL0 = CCIE;                                                            // CCR0 interrupt enabled
  5.     TA0CCR0 = 11*ms;
  6.     TA0CTL = TASSEL_1 + MC_1;                                                   // ACLK = 11KHz, Up to CCR0  
  7.     while((TA0CTL & TAIFG) == 0);
  8. }
复制代码


点评

哇塞 我开始没想到 但是还有一个问题 先前我已经在主函数中使用了TimerA 再写一个函数调用timerA的话寄存器不会冲突吗?那这样的话是不是意味着我要调用TimerB啊  详情 回复 发表于 2015-1-15 08:33
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

6
 
littleshrimp 发表于 2015-1-15 08:29
建议使用定时器延时

哇塞 我开始没想到 但是还有一个问题 先前我已经在主函数中使用了TimerA 再写一个函数调用timerA的话寄存器不会冲突吗?那这样的话是不是意味着我要调用TimerB啊



点评

如果冲突就换一个定时器  详情 回复 发表于 2015-1-15 08:36
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

7
 
zbnzbnzbnz 发表于 2015-1-15 08:27
额 那如果我想实现按键中断服务里有定时功能怎么实现 求教 求教 思路阻塞了

在按键中断里置flag为高,在定时器中断里if(flag)
{
    cunt++
    if(cunt>time)
   {
         flag=0;
        count=0;
        以及可能要处理的其他数值
   }
}

思路如上,细节请自己处理



点评

谢谢谢谢 两个思路都是棒!  详情 回复 发表于 2015-1-15 08:37
 
 
 

回复

9790

帖子

24

TA的资源

版主

8
 
zbnzbnzbnz 发表于 2015-1-15 08:33
哇塞 我开始没想到 但是还有一个问题 先前我已经在主函数中使用了TimerA 再写一个函数调用timerA的话寄存器不会冲突吗?那这样的话是不是意味着我要调用TimerB啊


如果冲突就换一个定时器

点评

谢谢谢谢 两个思路都是棒!  详情 回复 发表于 2015-1-15 08:37
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

9
 
sint27 发表于 2015-1-15 08:36
在按键中断里置flag为高,在定时器中断里if(flag)
{
    cunt++
    if(cunt>time)
   {
         flag=0;
        count=0;
        以及可能要处理的其他数值
   }
}

思路如上,细节请自己处理


谢谢谢谢 两个思路都是棒!

 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

10
 
littleshrimp 发表于 2015-1-15 08:36
如果冲突就换一个定时器



谢谢谢谢 两个思路都是棒!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表