msp430 单片机c语言编程技巧1_第1页
msp430 单片机c语言编程技巧1_第2页
msp430 单片机c语言编程技巧1_第3页
msp430 单片机c语言编程技巧1_第4页
msp430 单片机c语言编程技巧1_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MSP430 单片机的C语言编程技巧补充知识点1骆 懿基于开源硬件的嵌入式系统课程设计研究与探索目录页contents硬件项目综合设计实践1 430单片机如何进行位操作2 寄存器的一般配置方法基于开源硬件的嵌入式系统课程设计研究与探索1硬件项目综合设计实践单片机如何进行位操作基于开源硬件的嵌入式系统课程设计研究与探索RISC 处理器带来的最大不同就是不能进行位操作,内存寻址只能到字不能到位。打个比方,一栋楼只有一个邮政编码,快递员送东西只送到楼,这显然送货速度就要比送到户要快。至于,包裹是这栋楼具体哪户人家的,就得想点办法了。写位操作在对某字节使用“=”进行写操作时,所有位的值都将被改变。如果

2、先将原字节读出来,再使用“按位”操作符对原字节进行赋值,则可“等效”实现对单个位的写操作。硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索写位操作例1: 将P1.0 置 1、P1.1 置 0、P1.2 取反,不影响其他位。/“按位或”,相当于置1P1OUTP1OUTP1OUT|= 0x01;&= 0x02;/取反后再“按位与”,相当于置0/“按位异或”,相当于取反= 0x04;说明:需要特别指出的是,采用“按位”操作并不意味着MSP430 具备了位操作能力,按位操作实际是对整个字节的 8 位都进行了“操作”,只不过对其中 7 位的值没影响而已。硬件项目综合设计实践基于开源硬件的嵌

3、入式系统课程设计研究与探索在包含了头文件#include MSP430XXXX.h以后,可以使用各种宏定义来辅助按位操作硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索有了BIT0-BITF 的宏定义以后,可以方便的对最多 16 位寄存器的各位进行设置,使用BITx 宏定义的最大好处是不用再去“数脚趾头”了。例 1 代码可改写为:/“按位或”,相当于置1P1OUT |= BIT0;P1OUT &= BIT1;/取反后再“按位与”,相当于置0P1OUT = BIT2;/“按位异或”,相当于取反当然,也可以用加号对多位同时操作。例 2 将P1.0、P1.1、P1.2 均置 1,不影响

4、其他位。P1OUT |= BIT0+BIT1+BIT2; /可用加法进行批量设置硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索读位操作主要是通过if 语句判断的方法得到的。同样,这种变通的办法不意味着MSP430 单片机可以对位进行读取,这种方法同样需要对 1 个字节的 8 位都操作。例 3 将P2.0 的输出设置成与P1.1 输入相反,读取P1.0 状态到变量 Temp。unsigned char Temp=0;/读P1.1 写P2.0if(P1IN&BIT1)=0)else if(P1IN&BIT0)elseP2OUT |= BIT0;P2OUT &= BIT0;Temp=

5、1; Temp=0;/读P1.0 写Temp硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索2硬件项目综合设计实践寄存器的一般配置方法基于开源硬件的嵌入式系统课程设计研究与探索举例:希望将BCSCTL2 寄存器中的第4,5位设置为11硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索宏定义配置的注意事项在使用按位或操作符“|=”配置寄存器时,要注意宏定义之间的“叠加”效应。重新用宏定义配置寄存器前,一定要先清零。(此外,极少数寄存器上电复位后默认值不是 0,要特别注意。)例 3.5 先设定MCLK 分频为

6、2,一段时间后改为 4 分频。硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索寄存器配置的宏定义组合有两条及以上下划线的宏定义属于“极品”宏定义,往往 1 招杀敌致胜,在编程中应优先使用。如下图所示,我们来看MSP430 头文件中看门狗定时器的寄存器和宏定义节选。硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索如果是 8ms 定时,末 3 位的分频值是 001,详细解释见WDT 看门狗章节。本来我们需要这么写:不好的方法WDTCTL= WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0学会用这种方法但是我们有寄存器组合,可以这么写:WDTCTL= WDT_MDLY_8; /逆袭!只用 1 句就搞定了对于一些“物理意义明确”,又归属于同一个寄存器的复杂操作,往往会有这种“多下划线”的宏定义组合,敬请留意MSP430xx 单片机的头文件。硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索例 : a 和b 是两个变量,将 DCOCTL 寄存器中 DCOx 设为 a,MODx 设为 b。DCOCTL 寄存器的位排列见下图。硬件项目综合设计实践基于开源硬件的嵌入式系统课程设计研究与探索寄存器配置小结1) 一般情况下,均使用宏定义去配置寄存器,这样做省事省力,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论