3047|1

198

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

(MSP430分享)使用MSP430单片机做产品写程序的体会 [复制链接]

使用TI的MSP430芯片已经有几年了,最近做产品用到了一款MSP430G2231,很愿意和大家分享一下。
    先说一下这个MSP430G2231,面对巨大的中低端MCU市场的诱惑,TI终于不再沉默,推出了G2xx系列超值MCU,其实它和Fxx系列mcu完全兼容,只是放宽了一些非关键参数,从而降低成本,可以与PIC、freescale等厂家进行竞争。
    我的产品是一款家用小探测器,使用普通电池供电,要求能正常工作1年以上。所以在单片机选型的时候就自然而然想到了MSP430,它在低功耗方面的优势实在太明显!
    待规格确定后,原理设计完,就该编写程序了。
    程序要实现的功能主要有两部分,其一是探测;其二是通信。使用汇编编写。
    写程序前当然要先设计流程图了,有了流程图就有了思路,调试改错以及将来维护都很方便。没有流程图的汇编程序是比较恐怖的,有一次我要改两年前的汇编程序,脑子都想成一堆浆糊了,就是想不起来当时为什么那么编写!悔呀!
    在编写程序过程中,遇到了一些有意思的事情:
1、JMP指令只能在-511到+512字范围内跳转,如果想跳得更远些,就需要多个JMP指令接力了,呵呵,听说过烽火台点狼烟接力,看过田径跑步接力,现在程序跳转也玩接力了!
2、通信时使用比较复杂的协议,需要判断输入引脚的电平,由于种种原因不能使用中断,所以选择了查询的方式,虽然设计时理论上查询可以足够快,但实际上会由于通信线的干扰而导致脉冲变窄,有漏掉脉冲的情况。后来不再查询引脚的电平,改为查询引脚中断标志,这样便解决了问题。
3、16位单片机和8位单片机在写汇编程序时体会非常明显。因为对于16位单片机,必须时时刻刻想着我用的这个变量是16位的还是8位的,尤其是赋值、运算的地方,都是滋养bug的好地方。找bug是一件很辛苦的事情,为了少愁白几根黑发,能用C还是尽量用C吧。
4、定义了个变量:    Temp DS16 1;
然后对它操作,如清零: clr.w Temp; 有人喜欢写 clr.w &Temp;
这两种写法都对,我知道它们对应的是两种不同的寻址方式,只是感觉很奇怪,为什么要这么设计?
另外对寄存器的操作是不能用&的,是不是又是一个滋养bug的好地方?
5、进入LPM3低功耗模式,功耗真的很低,不到1个uA,太强了!
    总之,MSP430单片机功能是非常强大的,我用到了它的片上Flash作EEPROM,非常方便;用它的Timer_A在连续工作模式下做定时器,非常方便。还用到了内部经过校准的1M振荡器,省了外接晶振。
    一起分享,乐趣多多。

最新回复

学习啦,谢谢分享  详情 回复 发表于 2011-10-25 17:09
 
点赞 关注

回复
举报

6

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
学习啦,谢谢分享
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表