打印

单片机编程思路问题

[复制链接]
4980|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tuzihog|  楼主 | 2011-12-16 13:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

基本定时器0.064ms中断一次,在ISR中将标志位加1,在main()中循环检测该标志位的值,当标志位等于特定的一些值(值1,值2,值3,值4,值5)时去执行不同的函数
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{

if (bt_flag < 65535)


bt_flag += 1;


if (bt_flag == 65535)


IE2 &= ~BTIE;

}

main()
{



while(1)

{


if (bt_flag ==
1)


F_D4 ();


else if (bt_flag ==
2,值3,值4)


F_DA();



else if(bt_flag ==
5)



subnetwork_judgment();



else ;


}

}


那位大侠能指点一下这个思路的可行性,以及注意点!

相关帖子

沙发
Thunder_f| | 2011-12-16 13:44 | 只看该作者
行不行还是自己测试一下比较好

使用特权

评论回复
板凳
tuzihog|  楼主 | 2011-12-16 13:45 | 只看该作者
呵呵!其实已经出问题了,只是还不确认是不是这个思路的问题

使用特权

评论回复
地板
Thunder_f| | 2011-12-16 13:58 | 只看该作者
不知道你要达到什么目的,思路对不对要根据目的来说的。

使用特权

评论回复
5
zhouyuejun33| | 2011-12-16 14:00 | 只看该作者
不错思路

使用特权

评论回复
6
tuzihog|  楼主 | 2011-12-16 14:03 | 只看该作者
目的就是要让while(1)循环中的三个函数顺次执行一遍。

使用特权

评论回复
7
Thunder_f| | 2011-12-16 14:08 | 只看该作者
如果只是顺序执行一遍,似乎不用定时的方法这么复杂啊
应该还有没说清楚的目的,:lol

使用特权

评论回复
8
受不了了| | 2011-12-16 14:23 | 只看该作者
0.064ms=64uS,51的话来不及

使用特权

评论回复
9
ayb_ice| | 2011-12-16 14:27 | 只看该作者
基本思路没有问题,但必须严格考虑同步的问题
比如:
中断时bt_flag=5,但主程序刚过判断bt_flag==5,错过了,主程序下次再次判断bt_flag==5时,又来了中断,中断返回时已经bt_flag=6了,问题其实很严重,但解决容易,关键是是否意识到

使用特权

评论回复
10
liang7143| | 2011-12-16 14:30 | 只看该作者
不是很清楚LZ想表达啥意思

LZ是不是想 实现时间触发事件
比如10ms 扫描按键 20ms AD采样……
LZ这种思路 简单实用 实时性要求不是很高时 是个不错的思路

使用特权

评论回复
11
老鱼探戈| | 2011-12-16 14:57 | 只看该作者
如果主循环一次的时间不超过中断时间是没什么问题的。反之不可.因“==”判断很可能会错过。建议出相应表志位,主程用完清.即消息机制。

使用特权

评论回复
评分
参与人数 2威望 +9 收起 理由
tuzihog + 1 一语惊醒梦中人
谈的元 + 8
12
tuzihog|  楼主 | 2011-12-16 15:59 | 只看该作者
谢谢楼上各位的捧场
主要目的是while(1)这个循环一直执行,即不在bt_flag == 65535的时候关上定时中断。
我再考虑一下上面几位的回复,真的很有道理!

使用特权

评论回复
13
tuzihog|  楼主 | 2011-12-16 16:10 | 只看该作者
特别感谢9楼的ayb_ice和11楼的老鱼
我有点明白了!
再考虑一下9楼未点透的话:lol

使用特权

评论回复
14
chejun86| | 2011-12-16 17:01 | 只看该作者
额~~~你这用得是不是合泰的IC?

使用特权

评论回复
15
tuzihog|  楼主 | 2011-12-16 17:30 | 只看该作者
mcu是TI的msp430

使用特权

评论回复
16
lhw520620| | 2011-12-16 20:55 | 只看该作者
:)

使用特权

评论回复
17
tuzihog|  楼主 | 2011-12-16 21:04 | 只看该作者
是啊!调度设计很难作,现在还是不能有个很好的思路来解决问题!再考虑考虑!

使用特权

评论回复
18
tuzihog|  楼主 | 2011-12-17 08:01 | 只看该作者
本帖最后由 tuzihog 于 2011-12-17 08:02 编辑

http://www.ti.com/mcu/docs/litab ... ryId=1&familyId=342

20111217082845.jpg (102.41 KB )

20111217082845.jpg

使用特权

评论回复
19
fjzzclc| | 2011-12-17 09:02 | 只看该作者
:D

使用特权

评论回复
20
储小勇_526| | 2011-12-17 12:29 | 只看该作者
:victory:学习了

使用特权

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

本版积分规则

40

主题

657

帖子

3

粉丝