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

下载本文档

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

文档简介

MSP430单片机的C语言编程技巧补充知识点1 骆懿 目录页 contents 寄存器的一般配置方法 1 2 430单片机如何进行位操作 单片机如何进行位操作 1 RISC处理器带来的最大不同就是不能进行位操作 内存寻址只能到字不能到位 打个比方 一栋楼只有一个邮政编码 快递员送东西只送到楼 这显然送货速度就要比送到户要快 至于 包裹是这栋楼具体哪户人家的 就得想点办法了 在对某字节使用 进行写操作时 所有位的值都将被改变 如果先将原字节读出来 再使用 按位 操作符对原字节进行赋值 则可 等效 实现对单个位的写操作 写位操作 写位操作 例1 将P1 0置1 P1 1置0 P1 2取反 不影响其他位 P1OUT 0 x01 按位或 相当于置1P1OUT 按位异或 相当于取反 说明 需要特别指出的是 采用 按位 操作并不意味着MSP430具备了位操作能力 按位操作实际是对整个字节的8位都进行了 操作 只不过对其中7位的值没影响而已 在包含了头文件 include MSP430XXXX h 以后 可以使用各种宏定义来辅助按位操作 有了BIT0 BITF的宏定义以后 可以方便的对最多16位寄存器的各位进行设置 使用BITx宏定义的最大好处是不用再去 数脚趾头 了 例1代码可改写为 P1OUT BIT0 按位或 相当于置1P1OUT 可用加法进行批量设置 读位操作主要是通过if语句判断的方法得到的 同样 这种变通的办法不意味着MSP430单片机可以对位进行读取 这种方法同样需要对1个字节的8位都操作 例3将P2 0的输出设置成与P1 1输入相反 读取P1 0状态到变量Temp unsignedcharTemp 0 if P1IN 寄存器的一般配置方法 2 举例 希望将BCSCTL2寄存器中的第4 5位设置为11 宏定义配置的注意事项在使用按位或操作符 配置寄存器时 要注意宏定义之间的 叠加 效应 重新用宏定义配置寄存器前 一定要先清零 此外 极少数寄存器上电复位后默认值不是0 要特别注意 例3 5先设定MCLK分频为2 一段时间后改为4分频 寄存器配置的宏定义组合 有两条及以上下划线的宏定义属于 极品 宏定义 往往1招杀敌致胜 在编程中应优先使用 如下图所示 我们来看MSP430头文件中看门狗定时器的寄存器和宏定义节选 如果是8ms定时 末3位的分频值是001 详细解释见WDT看门狗章节 本来我们需要这么写 WDTCTL WDTPW WDTTMSEL WDTCNTCL WDTIS0但是我们有寄存器组合 可以这么写 WDTCTL WDT MDLY 8 逆袭 只用1句就搞定了对于一些 物理意义明确 又归属于同一个寄存器的复杂操作 往往会有这种 多下划线 的宏定义组合 敬请留意MSP430 xx单片机的头文件 不好的方法 学会用这种方法 例 a和b是两个变量 将DCOCTL寄存器中DCOx设为a MODx设为b DCOCTL寄存器的位排列见下图 寄存器配置小结1 一般情况下 均使用宏定义去配置寄存器 这样做省事省力 可读性好 2 深刻理解 对寄存器赋值的效果

温馨提示

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

评论

0/150

提交评论