Chinaunix首页 | 论坛 | 博客
  • 博客访问: 491148
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1190
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 20:16
文章分类

全部博文(144)

文章存档

2017年(1)

2015年(5)

2014年(108)

2013年(30)

我的朋友

分类: 嵌入式

2014-12-25 01:25:01

http://blog.163.com/zbj_98/blog/static/1729005720097156752170/
  以前写51时,把位都用sbit定义在头文件,换接口只用改定义就行了,对位操作直接赋值就可以,现在用430改原来的程序都要用|和&一条一条慢慢改,换接口又要改一次,感觉很麻烦啊,大家有没有好的办法可以很方便地实现而不用一条条慢慢改啊!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define DS1302_IN P2IN
#define DS1302_OUT P2OUT

#define DS1302_RST BIT1
#define DS1302_SCLK BIT0
#define DS1302_SDI BIT2 //定义MSP320的端口

#define DS1302_RST_LO DS1302_OUT &= ~DS1302_RST
#define DS1302_RST_HI DS1302_OUT |= DS1302_RST
#define DS1302_SCLK_LO DS1302_OUT &= ~DS1302_SCLK
#define DS1302_SCLK_HI DS1302_OUT |= DS1302_SCLK
#define DS1302_SDI_LO DS1302_OUT &= ~DS1302_SDI
#define DS1302_SDI_HI DS1302_OUT |= DS1302_SDI

鉴于目前较多数新用户之前是有学习过8051或者是用过8051单片机的经验。在应用到一些外部电路驱动程序要移植到MSP430单片机上使用时,我们需要注意那些的问题。我希望通过这个首贴来引出一个咱们有共同性的话题,希望有这方面体验的网友进来分享一下你们对这个话题的见解。 
以下我草草也发表几句,非常不全面也未经整理...不足之处请各位补上。 

【关于IO模拟控制程序的移植】 
比如一些芯片驱动程序包,要移植到430上来。此时我们要注意一些事项,在8051单片机的结构中是没有方向寄存器的。而MSP430单片机中就有PxDIR方向寄存器和输入/输出寄存器 PxOUT/PxIN。由于51通用型单片机一般没有硬件SPI、IIC外设,此时很多驱动程序是直接由IO模拟时序进行与部分芯片进行控制的。在这些程序的低层软件中,对于某位进行输入或输出设置IO的高低电平时测需要注意这三个寄存器的转换和设置。这基本上是一般51单片机程序移植中最常碰见的问题。 

【关于硬件模块程序的移植】 
对于程序中有用到的硬件资源,较常见的有51的Timer、UART、时基模块等等时,由于这两者硬件绝然不同。我们别无选择当然要完全修改为MSP430的硬件部分了,这里当然包括了中断服务程序。对对这种问题,一般出现在在程序整体架构上较多。对上一个的问题则出现在低层驱动较多。 

【关于关键字和宏定义的问题】 
这部分待其他网友来补上吧,我使用51并不多 所以在这里不作多说了。不过较多的网友总以51的结构思路来想430应该也有这样的用法,比如直接位操作、存储器区分块、指令周期等等问题。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   我来补充下.51与MSP430都有自已一套指令集,如果是汇编的话,两者的区别是非常大的;C语言的话,它们的相通之处还是很多的.如在51中,要把数据放在FLASH中,可以用 unsigned char code 而MSP430呢,可以用const unsigned char 它们是等效的.在MSP430中,monitor关键字的意思是在执行这个子程序的时候不允许中断. 而51就没有这个关键字.宏定义呢,差别不大,由于MSP430不支持位操作,当然也可以自已定义.比如我们要给P1口的D0置位,可用:

 P1OUT |=BIT0;

清零可用:

P1OUT &=~BIT0; 
【关于中断问题】 
   51中,中断是可以嵌套的。而MSP430呢,也可以。不过要注意MSP430进行中断之后,会立刻关闭总中断的,中断服务程序执行完之后又自动打开,如果你要在430中断之后又要进入另一个中断的话,那你就要打开总断了。不过这样的话,处理不当会引起程序跑飞的。 
【关于MSP430与外围器件的设计问题】
   大家都知道430是3.3V电平的。有不少的器件是5V是电平的。这样就涉及到逻辑电平匹配的问题,该不该用3.3V到5V或者是5V到3.3V的电平转换呢。我个人认为,得根据具体情况具体分析,一般来说,用3.3V来驱动5V是没有问题的,而输入呢,5V的电平MSP430可以承受,不过最好是用5V到3.3V的电平转换了。 

说得不对的,请网友指正。望网友继续补充下去。关于MSP430编程的问题,这部分待其他网友来补上吧。MSP430的速度是比较快的,还有它有很多的外围模块,设计与编程时该如何安排等.

~~~~~~~~~~~~~~~~~

51也好长时间没用了。依稀记得些。

51有布尔处理能力,而430是没有的。所以假如出现要p2.4口输出高电平 51只需要P2^4=1就OK了,而430不紧要设置方向寄存器 而且只能进行位与操作。

51的异步通讯的那个公式我记不住了,但是他的传输比特率只能是整数,对出现的时钟除以比特率不是整数的没有430的小数调整功能。

阅读(1289)| 评论(0)
阅读(1915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~