MSP430_Family_Users_Guide(中文版)_430单片机__极端详细__应用(5)

2019-04-01 17:43

所有振荡器停止工作。

MCLK禁止?SMCLK禁止?ACLK活动

4.4 低功耗应用原则 n 最大化LMP3的时间?用32.768KHZ晶振作为ACLK时钟?DCO用于CPU激活后突发短暂运行。

n 用接口模块代替软件驱动功能。 n 用中断控制程序运行。

n 用可计算的分支代替标志位测试产生的分支。 n 用快速查表代替冗长的软件计算。 n 避免频繁的子程序和函数调用。 n 在必要时才开启外围模块。

4.5 低功耗模块头文件定义 在msp430x16x. h对低功耗宏定义如下所示? #ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */ #define LPM0 (CPUOFF)

#define LPM1 (SCG0+CPUOFF) #define LPM2 (SCG1+CPUOFF)

#define LPM3 (SCG1+SCG0+CPUOFF)

#define LPM4 (SCG1+SCG0+OSCOFF+CPUOFF)

/* End #defines for assembler */ 注意?以上宏定义是对汇编的定义

在intrinsics.h对低功耗宏定义如下所示? /*Functions for controlling the processor operation modes.*/

#define __low_power_mode_0() (__bis_SR_register( __SR_GIE \\ | __SR_CPU_OFF)) #define __low_power_mode_1() (__bis_SR_register( __SR_GIE \\ | __SR_CPU_OFF \\ | __SR_SCG0)) #define __low_power_mode_2() (__bis_SR_register( __SR_GIE \\ | __SR_CPU_OFF \\ | __SR_SCG1)) #define __low_power_mode_3() \\ (__bis_SR_register( __SR_GIE \\ | __SR_CPU_OFF \\ | __SR_SCG0 \\ | __SR_SCG1))

#define __low_power_mode_4() \\ (__bis_SR_register( __SR_GIE \\ | __SR_CPU_OFF \\ | __SR_SCG0 \\ | __SR_SCG1 \\ | __SR_OSC_OFF))

#define __low_power_mode_off_on_exit() \\ (__bic_SR_register_on_exit( __SR_CPU_OFF \\ | __SR_SCG0 \\ | __SR_SCG1 \\

| __SR_OSC_OFF)) 注意?上述是对C语言的定义 www.docin.com 24 进入LPM0模式?可以通过调用__low_power_mode_0();函数来完成。 进入LPM1模式?可以通过调用__low_power_mode_1();函数来完成。 进入LPM2模式?可以通过调用__low_power_mode_2();函数来完成。 进入LPM3模式?可以通过调用__low_power_mode_3();函数来完成。 进入LPM4模式?可以通过调用__low_power_mode_4();函数来完成。 退出LPM模式?则调用__low_power_mode_off_on_exit();来实现。

4.6 低功耗模块例程 #include

// P1 中断服务子程序

#pragma vector = PORT1_VECTOR __interrupt void P1_IRQ(void) {

P1IFG = 0; // 清除中断标志 __low_power_mode_off_on_exit(); // 退出低功耗模式 }

void main(void) {

WDTCTL = WDTPW + WDTHOLD;

P1DIR &= BIT0; // P1.0输入 P1IE |= BIT0; // P1.0开中断 P1IES |= BIT0; // P1.0下降沿中断 _EINT();

while(1) {

_NOP(); // 空语句

__low_power_mode_0(); // 进入LPM0模式

// 当程序执行到上述语句后, 程序会停止到该语句, 并进入低功耗状态 // 当P1.0出现下降沿的时候, 在P1的中断服务子程序退出低功耗模式 // 则会再次运行_NOP();语句, 然后在进入底功耗 } }

www.docin.com 25 第五章I/O端口 Input / Output Port

端口是MSP430及其重要的资源。MSP430F169单片机共有六组端口?每组端口均为8位并且均可

独立编程?但每组端口均不提供位操作指令。目前MSP430所有系列总线均不对外开放?端口不但用于输

入/输出?还可为MSP430系统扩展等应用提供必要的逻辑控制信号

www.docin.com 26 5.1 I/O端口概述 MSP430F169端口的主要特点为? n 类型丰富?MSP430F169有P1、P2、P3、P4、P5、P6共六组独立的端口。 n 功能丰富?MSP430F169各组端口功能如下表所示。 端口 功能

P1、P2 I/O、中断能力、其它片内外设功能 P2、P3、P4、P6 I/O、其它片内外设功能

?编者按?其他类型的单片机还有S?COM端口?是用做段码液晶驱动的?F196没有? n 丰富的寄存器

MSP430各种端口有大量的控制寄存器供用户使用?从而提高了端口的输入/输出灵活性。其中P1和P2

有7个寄存器?P3?P6各有4个寄存器。通过设置寄存器?可实现以下功能? ① 每个I/O都可独立编程

② 允许任意组合输入、输出和中断

③ P1和P2所有8位全都可做外部中断处理 ④ 可以使用所以指令对寄存器操作

⑤ 可以按字节输入、输出?也可按位进行操作

5.2 端口控制寄存器 端口P1具有输入/输出、中断和外部模块功能?这些功能可通过7个控制寄存器的设置来实现。下面介绍

各控制寄存器特点及其使用? [1] PxDIR 输入/输出方向寄存器

相互独立的8位分别定义了Px口的8位的输入输出方向。在PUC复位后PIDIR各位均复位。 使用输入/输出功能时?应先定义端口方向。作为输入时?只能读?作为输出时?可读可写。 PxDIR.x?端口输入输出方向控制 0? 输入模式 1? 输出模式

操作? P1DIR |=0x10; // P1.4作输出?其余各位端口方向不变。 P1DIR &=0x7f; // P1.7作输入?其余各位端口方向不变。

www.docin.com 27 [2] PxIN 输入寄存器

该寄存器是只读寄存器。只能通过读取该寄存器内容才能知道Px口的输入信号的状态。 读出此寄存器的内容中?只有Px口设为输入的数据位有效。 对于Px口设为输出的那些位?一般来说?PxIN.x = PxOUT.x PxIN.x?端口输入的电平 0? 端口输入低电平 1? 端口输入高电平

操作? unsigned char Temp;

P1DIR &=0x77 ; // P1.3和P1.7输入

Temp = P1IN; // Temp为在已定义的一变量?Temp 中只要第7位和第四位有效。

[3] PxOUT 输出寄存器

该寄存器可读可写?读取时?其内容与Px口引脚定义无关。改变方向寄存器的内容?此寄存器内容不受 影响。

PxOUT.x?端口输出的电平 0? 端口输出低电平 1? 端口输出高电平 注意?

P1OUT.0 = 1?P1.0输出高??但是P1DIR.0 = 0?该引脚为输入模式??则此时P1.0为输入?

如果将P1DIR.0 = 1?该引脚为输出模式??则此时P1.0为输出?并且输出为高电平。

操作? P1DIR |=0x88; // P1.3和P1.7输出 P1OUT |=0x88; // P1.3和P1.7输出高电平

www.docin.com 28 [4] PxSEL 引脚功能选择寄存器

该寄存器可读可写?如果有该引脚具有特殊功能的话?则可以通过该寄存器使用特殊功能。 PxSEL.x?引脚功能选择

0? 该引脚的普通O/I端口 1? 该引脚的功能端口

[5] PxIFG 中断标志寄存器

该寄存器只有P1和P2口才有?该寄存器有8个标志位?标志相应引脚是否有中断请求。 PxIFG.x?中断标志 0? 该引脚无中断请求 1? 该引脚有中断请求 [6] PxIE 中断允许寄存器

该寄存器只有P1和P2口才有?该寄存器有8个标志位?标志相应引脚是否能响应中断请求。 PxIFG.x?中断允许标志 0? 该引脚中断禁止 1? 该引脚中断允许

[7] PxIES 中断触发沿控制寄存器

该寄存器只有P1和P2口才有?该寄存器有8个标志位?标志相应引脚的中断触发沿。 PxIFG.x?中断触发沿选择 0? 上升沿产生中断 1? 下降沿产生中断

www.docin.com 29 5.3 端口原理图 P1端口的引脚原理图?P1.0 ~ P1.7?


MSP430_Family_Users_Guide(中文版)_430单片机__极端详细__应用(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:C语言学习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: