1、12整 体 概 述THE FIRST PART OF THE OVERALL OVERVIEW, P L E A S E S U M M A R I Z E T H E C O N T E N T第一部分34内容纲要uMSP430G2553MSP430G2553单片机概述uMSP430 CMSP430 C程序设计u编程环境IAR,CCSIAR,CCSuMSP430G2553MSP430G2553内部硬件资源u单片机简单外围器件使用5内容纲要uMSP430G2553MSP430G2553单片机概述uMSP430 CMSP430 C程序设计u编程环境IAR,CCSIAR,CCSuMSP430G25
2、53MSP430G2553内部硬件资源u单片机简单外围器件使用6内容纲要uMSP430G2553MSP430G2553单片机概述uMSP430 CMSP430 C程序设计u编程环境IARIARuMSP430G2553MSP430G2553内部硬件资源u单片机简单外围器件使用7MSP430系列单片机MSP430系列单片机是美国Texas Instruments (TI) 从1996年开始推向市场的一种16位RISC架构、超低功耗的混合信号处理器。uMSP430G2553单片机概述8uMSP430G2553单片机概述 MSP430X1XX 系列 MSP430X2XX 系列(F2XX,G2XX) M
3、SP430X3XX 系列 MSP430X4XX 系列(带LCD驱动) MSP430X5XX 系列 MSP430X6XX 系列(带LCD驱动)(1) MSP430全系列产品9Device Type Memory TypeC = ROMF = FLASHFR = FRAMG = FLASH (Value Line 超值产品线 )L = No Nonvolatile MemorySpecialized ApplicationAFE = Analog Front EndBT = Pre-programmed with BluetoothBQ = Contactless PowerCG = ROM Me
4、dicalFE = Flash Energy MeterFG = Flash MedicalFW = Flash Electronic Flow MeterSeries 1 Series = Up to 8 MHz2 Series = Up to 16 MHz3 Series = Legacy OTP4 Series = Up to 16 MHz w/ LCD5 Series = Up to 25 MHz6 Series = Up to 25 MHz w/ LCD0 = Low Voltage SeriesFeature Set Various Levels of Integration wi
5、thin a Series MSP430G2553,可以分拆为Processor Family(MSP),430MCU Platform(430),Device Type(G),Series(2),Feature Set(553) 10(2)MSP430结构特点 冯诺依曼结构 16位寻址 所有的数据、 程序和内部模 块公用相同的 存储空间 多时钟系统 JTAG调制技 术 在线编程11(3) MSP430系列单片机的特点l 超低功耗l 强大的处理能力l 高性能模拟技术及丰富的片上外围模块l 系统工作稳定l 方便高效的开发环境uMSP430G2553单片机概述12超低功耗特例特性1-超低功耗13C
6、onsumerMeteringSensoringLeierdaMedical超低功耗应用14uMSP430G2553单片机概述特性2-强大的处理能力 16位单片机 精简指令集 指令速度825MIPS 硬件乘法器,DMA等特性3-丰富的片上外设 时钟 端口 定时器 比较器 乘法器 AD,DA模块 硬件乘法器,液晶驱动,USB,OPA,DMA等15uMSP430G2553单片机概述特性4-系统工作稳定 工业级产品 看门狗定时器 电源管理模块特性5-方便高效的开发环境 IAR Workbench, TI CCS等JTAG调试接口 一体化的集成高效的开发环境16MSP430G2553uMSP430G2
7、553单片机概述LaunchPad 是一款适用于TI的MSP430G2xx 系列产品的完整开发解决方案,可支持多达20 个引脚,提供板上Flash 仿真工具,以直接连接至PC 轻松进行编程、调试和评估。17uMSP430G2553单片机概述18片上仿真器模块6针 eZ430 连接器MSP430器件和插座外置晶体接口电源连接器复位按钮LED和跳线P1.0 & P1.6P1.3 按钮芯片引出脚USB 仿真器接口MSP430G2553 lanchpad各部分结构 19MSP430系列功能框图低压、电源复位保护比较捕捉寄存器MSP430G2XX无Port320uMSP430G2553单片机概述 低电压
8、供电:1.8V-3.6V 16MHz主频,5种低功耗模式 8输入10Bit 200Ksps ADC 两个16Bit TimerA USCI接口,支持Uart,IrDA,SPI和IIC功能 比较器 16KB FLASH、512B RAMMSP430G2553主要特点21MSP430G2553内部资源 三种可选择系统时钟 通用I/O 可独立编程 可提供输入、输出与中断(边沿可选)的任意组合 所有寻址指令可对端口控制寄存器进行读/写访问 每个 I/O 具有一个可独立编程的上拉/下拉电阻 某些器件/引脚具有触摸按键模块 (PinOsc)uMSP430G2553单片机概述22uMSP430G2553单片
9、机概述 16 位 Timer_A2 2 个捕获/比较寄存器 丰富的中断功能 串行通信 支持 I2C 和 SPI 的 USI 支持 I2C、SPI 以及 UART 的 USCI Comparator_A+ 可设定反相和同相输入 可选的 RC 输出滤波器 可直接输出至 Timer_A2 捕获输入 具有中断能力23 8 通道/10 位 200 ksps SAR ADC 8 个外部通道(取决于器件) 内置电压和温度传感器 可编程的参考电压 DTC可在无需 CPU 干预的情况下将结果发送至存储器 具有中断能力 欠压复位 可在上电和断电期间提供正确的复位信号 功耗包含于MCU最低功耗时所消耗电流之中 WD
10、T+ 看门狗定时器 也可用作一个普通定时器uMSP430G2553单片机概述24内容纲要uMSP430G2553MSP430G2553单片机概述uC C语言知识回顾u编程环境IARIARuMSP430G2553MSP430G2553内部硬件资源u单片机简单外围器件使用252627282930程序结构 程序的执行从main()函数开始,调用其他函数后返回主函数main(),最后在主函数中结束整个程序而不管函数的排列顺序如何。 main()/*主函数*/ 局部变量说明/*只在本函数引用*/ 执行语句(包括函数调用语句) 31C语言语句规则 每一个必须先说明后引用,变量名英文大小写有差别的; 每一个
11、语句必须以;结尾 C语言的注释用/*.*/表示 必须成对32运算符与C C语言基本相同:+ - + - * * / / (加 减 乘 除) = = y) max=x;else max=y; 执行上面语句时,如x大于y成立,则把x送给最大值变量max,如x大于y不成立,则把y送给最大值变量max。使max变量得到x、y中的大数。(3)if (score=90) printf(“Your result is an An”);else if (score=80) printf(“Your result is an Bn”);else if (score=70) printf(“Your result
12、 is an Cn”);else if (score=60) printf(“Your result is an Dn”);else printf(“Your result is an En”); 执行上面语句后,能够根据分数score分别打出A、B、C、D、E五个等级。36 switch/case语句 if语句通过嵌套可以实现多分支结构,但结构复杂。switch是C51中提供的专门处理多分支结构的多分支选择语句。它的格式如下:switch (表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;defaul
13、t:语句n+1;37说明如下:(1)switch后面括号内的表达式,可以是整型或字符型表达式。(2)当该表达式的值与某一“case”后面的常量表达式的值相等时,就执行该“case”后面的语句,然后遇到break语句退出switch语句。若表达式的值与所有case后的常量表达式的值都不相同,则执行default后面的语句,然后退出switch结构。(3)每一个case常量表达式的值必须不同否则会出现自相矛盾的现象。(4)case语句和default语句的出现次序对执行过程没有影响。(5)每个case语句后面可以有“break”,也可以没有。有break语句,执行到break则退出switch结构
14、,若没有,则会顺次执行后面的语句,直到遇到break或结束。(6)每一个case语句后面可以带一个语句,也可以带多个语句,还可以不带。语句可以用花括号括起,也可以不括。(7)多个case可以共用一组执行语句。38while语句 while语句在C51中用于实现当型循环结构,它的格式如下: while(表达式) 语句; /*循环体*/ while语句后面的表达式是能否循环的条件,后面的语句是循环体。当表达式为非0(真)时,就重复执行循环体内的语句;当表达式为0(假),则中止while循环,程序将执行循环结构之外的下一条语句。 它的特点是:先判断条件,后执行循环体。在循环体中对条件进行改变,然后再
15、判断条件,如条件成立,则再执行循环体,如条件不成立,则退出循环。如条件第一次就不成立,则循环体一次也不执行。 39do while语句 do while语句在C51中用于实现直到型循环结构,它的格式如下: do 语句; /*循环体*/ while(表达式); 它的特点是:先执行循环体中的语句,后判断表达式。如表达式成立(真),则再执行循环体,然后又判断,直到有表达式不成立(假)时,退出循环,执行do while结构的下一条语句。do while语句在执行时,循环体内的语句至少会被执行一次。40for(表达式1;表达式2;表达式3)语句; /*循环体*/for语句后面带三个表达式,它的执行过程如
16、下:(1)先求解表达式1的值。(2)求解表达式2的值,如表达式2的值为真,则执行循环休中的语句,然后执行下一步(3)的操作,如表达式2的值为假,则结束for循环,转到最后一步。(3)若表达式2的值为真,则执行完循环体中的语句后,求解表达式3,然后转到第四步。(4)转到(2)继续执行。(5)退出for循环,执行下面的一条语句。 在for循环中,一般表达式1为初值表达式,用于给循环变量赋初值;表达式2为条件表达式,对循环变量进行判断;表达式3为循环变量更新表达式,用于对循环变量的值进行更新,使循环变量能不满足条件而退出循环。4.7.6 for语句41 在一个循环的循环体中允许又包含一个完整的循环结
17、构,这种结构称为循环的嵌套。外面的循环称为外循环,里面的循环称为内循环,如果在内循环的循环体内又包含循环结构,就构成了多重循环。在C51中,允许三种循环结构相互嵌套。【例18】用嵌套结构构造一个延时程序。void delay(unsigned int x)unsigned char j;while(x-)for (j=0;jNewWorkspace命令,然后开启一个空白工作区窗口u编程环境IAR50(2) 选择主菜单ProjectCreate New Project, 弹出生成新项目窗口中我们选择Empty project。5152选择保存路径后,点击保存53新工程建立完毕u编程环境IAR54
18、3.3.加入文件u编程环境IAR55可以建立一个空白的文件写好代码后,选择主菜单的File SaveFile Save命令56文件名可以自己起,但后面一定要加 ”.c” ,保存为C文件 u编程环境IAR57右击工程名,将写好的程序添加进去AddAdd Files58选好后点击打开对于刚存好的程序,例如例子中的main.c,也可以用AddAdd“main.c”添加入工程。 如果工程很庞大,需要添加的文件很多。可以用AddAdd Group,加入新的组,将加入的文件分组管理。59将工程建好后,往往需要先进行设置,才能正常的使用 右击工程名,点击OptionOptionu编程环境IAR4.工程设置6
19、0u编程环境IAR61首先是在General OptionGeneral Option中修改Device Device u编程环境IAR62u编程环境IAR然后在Debugger中修改Driver Simulator是用软件仿真FET Debugger是用Jtag调试63u编程环境IAR接下来在FET DebuggerFET Debugger中修改ConnectionConnection第一项是TI的USB-Jtag 可以用U口调试第二项是普通的Jtag,要用到计算机的并口调试第三项是J-link,在新版本的IAR EW430中没有这一项64u编程环境IAR5 程序的调试添加好文件后,应该在工
20、程下看到 选择需要调试的文件,如main.c选择(Compile)按钮,对main.c进行编译65第一次编译是需要保存Workspace Files 改好文件名和路径后点“保存” u编程环境IAR66底下会出现BuildBuild信息窗口如果是Done. 0 error(s), 0 warning(s)Done. 0 error(s), 0 warning(s)就可以点击(makemake)u编程环境IAR67如果在信息窗口显示没有错误,就可以点击进行调试,若已经用下载器和开发板相连,此时程序就能烧入芯片进入调试界面(Debug)6869编程环境CCSu编程环境IAR,CCSCCS(Code
21、Composer Studio)是TI公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。CCSv5.1为CCS软件的最新版本,功能更强大、性能更稳定、可用性更高,是MSP430软件开发的理想工具。701、利用CCS导入已有工程 u编程环境IAR,CCS71u编程环境IAR,CCS2、利用CCS新建工程(1)首先打开CCSv5.1并确定工作区间,然后选择File-New-CCS Project弹出对话框。(2)在Project name中输入新建工程的名称,在此输入myccs1。(3)在Out
22、put type中有两个选项:Executable和Static library,前者为构建一个完整的可执行程序,后者为静态库。在此保留:Executable。(4)在Device部分选择器件的型号:在此Family选择MSP430;Variant选择MSP430G5XX family,芯片选择MSP430G2553;Connection保持默认。(5)选择空工程,然后单击Finish完成新工程的创建。(6)创建的工程将显示在Project Explorer中,如图2.12所示。 72u编程环境IAR,CCS73(7)新建.h文件:在工程名上右键点击,选择New-Header File得到如下
23、对话框。(8)新建.c文件:在工程名上右键单击,选择New-source file得到如下对话框。74若已用其它编程软件(例如IAR),完成了整个工程的开发,该工程无法直接移植入CCS,但可以通过在CCSv5中新建工程,并根据步骤(7)、(8)和(9)新建或导入已有.h和.c文件,从而完成整个工程的移植。(9)导入已有.h或.c文件:在工程名上右键单击,选择Add Files得到如下对话框。 75u编程环境IAR,CCS3、利用CCS调试工程(1)在开始调试之前,有必要确认目标配置文件是否已经创建并配置正确。 (2)启动调试器 :选择Project-Build Project,编译目标工程。
24、表示编译没有错误产生,可以进行下载调试;如果程序有错误,将会在Problems窗口显示,根据显示的错误修改程序,并重新编译,直到无错误提示。76(3)单击绿色的Debug 按钮 进行下载调试 调试窗口程序窗口控制台窗口变量、观察及寄存器窗口77u编程环境IAR,CCS7879内容纲要uMSP430G2553MSP430G2553单片机概述uC C语言知识回顾u编程环境IARIARuMSP430G2553MSP430G2553内部硬件资源u单片机简单外围器件使用80系统时钟低功耗模式IO口看门狗定时计数器A转换器比较器中断系统串行通信uMSP430G2553单片机内部资源系统时钟低功耗模式IO口
25、看门狗定时计数器A转换器比较器中断系统串行通信81uMSP430G2553单片机内部资源系统时钟MSP430G2MSP430G2系列单片机的时钟系统需要支持系统低功耗运行的需要。通过对三个内部时钟信号的运用,用户可很容易的选择功耗最低,效率最高的系统时钟方案。MSP430G2553MSP430G2553系列单片机的时钟系统,包括2-42-4个时钟源,可以为外设和CPUCPU提供3 3个系统时钟82外接晶振32768HZ无83LFXT1CLK:外接低频或高频振荡器,如手表晶 振,频率发生器,外部时钟源(400kHz 至16MHz). XT2CLK: 外接高频晶振,范围在400kHz至 16MHz
26、 DCOCLK: 内部时钟震荡 VLOCLK: 内部低频低功耗晶振,标准频率 是12kHz n时钟源MSP430G2553而言:LFXT1不支持HF模式,无XT2,不支持ROSC84ACLK:辅助时钟 ACLK可被软件配置成从LFXT1CLK或VLOCLK输入震荡ACLK可以被1,2,4,8分频。ACLK可以被选用作为外围模块的时钟输入。 n系统时钟MCLK:主时钟 主时钟可以从LFXT1CLK或VLOCLK,XT2CLK或DCOCLK输入MCLK用在CPU系统之中。 SMCLK:辅助主时钟 SMCLK可被选择从LFXT1CLK,VLOCLK,XT2CLK或DCOCLK输入。SMCLK可以被1
27、,2,4,8分频。SMCLK可被选用为外围模块的时钟。85 用户可选择三种时钟信号,ACLK,MCLK和SMCLK。 ACLK主要使用在一些速度不高的外设,以实现低功耗 SMCLK可从DCO或外部引入主要满足高速外设的使用 MCLK主要向CPU提供时钟。 一般情况下MCLK频率最高,ACLK频率最低。 n系统时钟控制寄存器如何进行时钟的选择呢?uMSP430G2553单片机内部资源86控制寄存器: DCOCTL,BCSCTL1,BCSCTL2,BCSCTL3 通过设置控制寄存器就可获得相应的系统时钟uMSP430G2553单片机内部资源87 DCOCTL 用来控制以获得DCOCLKuMSP43
28、0G2553单片机内部资源88调制器将fDCO和fDCO+1进行混频,产生一个在fDCO和fDCO+1之间的频率。调制器在32个DCOCLK周期之内,对fDCO和fDCO+1进行混频,当MODx=0时调制器关闭。 89DCOx:DCO频率选择, 这些位可以在由RSELx决定的八个离散的DCO频率中选择。 MODx:调制系数这个系数决定在32个周期中fDCO+1占多少,fDCO占多少。 BCSCTL1uMSP430G2553单片机内部资源90XT2OFF: 0 XT2开启 1 XT2如果不被用作MCLK和SMCLK则关闭 XTS: 0 低频模式 1 高频模式 DIVAx: ACLK分频控制 00
29、 /1 01 /2 10 /4 11 /8 RSELx: DCO频率范围选择,RSELx=0时频率最低, 当DCOR=1时RSEL3被忽略。 uMSP430G2553单片机内部资源91 BCSCTL2SELMx: MCLK频率选择 00 DCOCLK 01 DCOCLK 10 XT2如果出现在片上则是XT2CLK, 当XT2不出现在片上则选择 LFXT1CLK或VLOCLK 11 LFXT1CLK或VLOCLK DIVM: MCLK分频 00 /1 01 /2 10 /4 11 /8 92uMSP430G2553单片机内部资源SELS: SMCLK频率选择 0 DCOCLK 1 片上若有XT2
30、则选择XT2CLK,若没有XT2则选择 VLOCLK或XT2 DIVSx: SMCLK的分频 00 /1 01 /2 10 /4 11 /8 DCOR: DCO震荡电阻选择 0 内部电阻 1 外部电阻 93 BCSCTL3XT2Sx: XT2范围选择 00 0.41MHz晶振或振荡器 01 13MHz晶振或振荡器 10 316MHz晶振或振荡器 11 外部0.416MHz振荡器 XCAPx: 内部电容选择 00 1pF 01 6pF 10 10pF 11 12.5pF XT2OF: XT2错误标示位 0 无错误 1 有错误 LFXT1OF: LFXT1错误 0 无错误 1 有错误 94LFXT
31、1Sx: 低频时钟选择和LFXT1范围选择。当XTS=0时这些位在LFXT1和VLO之选择,当XTS=1时选择LFXT1的频率范围 XTS=0时 00 LFXT1的32768Hz晶振 01 保留 10 VLOCLK(仅在MSP430F21x1中有) 11 外部数字时钟源 XTS=1时 00 0.4MHz1MHz晶振或振荡器 01 1MHz3MHz晶振或振荡器 10 316MHz晶振或振荡器 11 0.416MHz振荡器 uMSP430G2553单片机内部资源95n系统时钟的配置步骤时钟源的配置时钟源共3个, LFXT1CLK,VLOCLK, DCOCLKLFXT1CLK:需要选择其低频或是高频
32、模式(G2553仅支持低频),需要选择其外接的震荡器或时钟源;或是选择使用的是LFXT1CLK或是VLOCLK用到的控制寄存器为: BCSCTL1的XTS和BCSCTL3的LFXT1SxuMSP430G2553单片机内部资源96DCOCLK:需要配置是否使用外接电阻(G2553不支持),是否关闭(低功耗模式中讲解),频率范围(大),频率值(小),调制器BCSCTL1中的DCR和RSELx, DCOCTL中的DCOx和MODxuMSP430G2553单片机内部资源97 为方便使用MSP4302553.h中提供了校准的DCOCLK(1M,8M,12M,16 M)#define CALDCO_16M
33、HZ_ (0 x10F8u) /* DCOCTL Calibration Data for 16MHz */READ_ONLY DEFC( CALDCO_16MHZ , CALDCO_16MHZ_)#define CALBC1_16MHZ_ (0 x10F9u) /* BCSCTL1 Calibration Data for 16MHz */READ_ONLY DEFC( CALBC1_16MHZ , CALBC1_16MHZ_)#define CALDCO_12MHZ_ (0 x10FAu) /* DCOCTL Calibration Data for 12MHz */READ_ONLY D
34、EFC( CALDCO_12MHZ , CALDCO_12MHZ_)#define CALBC1_12MHZ_ (0 x10FBu) /* BCSCTL1 Calibration Data for 12MHz */READ_ONLY DEFC( CALBC1_12MHZ , CALBC1_12MHZ_)#define CALDCO_8MHZ_ (0 x10FCu) /* DCOCTL Calibration Data for 8MHz */READ_ONLY DEFC( CALDCO_8MHZ , CALDCO_8MHZ_)#define CALBC1_8MHZ_ (0 x10FDu) /*
35、BCSCTL1 Calibration Data for 8MHz */READ_ONLY DEFC( CALBC1_8MHZ , CALBC1_8MHZ_)#define CALDCO_1MHZ_ (0 x10FEu) /* DCOCTL Calibration Data for 1MHz */READ_ONLY DEFC( CALDCO_1MHZ , CALDCO_1MHZ_)98系统时钟的配置时钟源的选择: LFXT1CLK,VLOCLK, DCOCLK分频选择以MCLK为例:(1)选择时钟源 LFXT1CLK,VLOCLK, DCOCLKBCSCTL299SELMx: MCLK频率选择
36、 00 DCOCLK 01 DCOCLK 10 XT2如果出现在片上则是XT2CLK, 当XT2不出现在片上则选择 LFXT1CLK或 VLOCLK 11 LFXT1CLK或VLOCLK 当XTS=0时这些位在LFXT1和VLO之选择,XTS=0时 (LFXT1Sx)00 LFXT1的32768Hz晶振 01 保留 10 VLOCLK(仅在MSP430F21x1中有) 11 外部数字时钟源 BCSCTL31002)选择分频BCSCTL2DIVM: MCLK分频 00 /1 ; 01 /2 ; 10 /4 ;11 /8 自己计算每一个系统时钟可提供的时钟值,以便编程时使用uMSP430G2553
37、单片机内部资源101系统时钟低功耗模式IO口看门狗定时计数器A转换器比较器中断系统串行通信uMSP430G2553单片机内部资源系统时钟低功耗模式IO口看门狗定时计数器A转换器比较器中断系统串行通信102uMSP430G2553单片机内部资源MSP430 低功耗模式MSP430 具有一种运行模式及5 种可利用软件来选择的低功耗操作模式。一个中断事件能够将器件从任一低功耗模式唤醒、处理请求、并在接收到来自中断程序的返回信号时恢复至低功耗模式或被激活。103uMSP430G2553单片机内部资源104uMSP430G2553单片机内部资源105uMSP430G2553单片机内部资源106107如果
38、MSP430处于低功耗工作模式,当可屏蔽中断和非可屏蔽中断源产生时,会唤醒CPU进入中断处理程序,如下的操作将由硬件来完成:1)入栈保护当前PC指针寄存器。2)入栈保护当前SR状态寄存器。3)清零SR状态寄存器(置GIE = 0, 屏蔽可屏蔽中断,并结束低功耗模式,CPU切换到Active模式)。4)从中断向量表中取出中断向量到PC指针寄存器。5)跳转到中断服务程序开始执行。6)中断执行完毕后执行RETI返回指令。7)出栈恢复SR状态寄存器和PC指针寄存器的值。8)CPU恢复到原来的低功耗模式。注意:如果在CPU返回原先低功耗模式时改变低功耗的模式,需要在中断处理程序中修改堆栈中的SR控制位的
39、值。uMSP430G2553单片机内部资源108109110系统时钟低功耗模式IO口看门狗定时计数器A转换器比较器中断系统串行通信uMSP430G2553单片机内部资源系统时钟低功耗模式IO口看门狗定时计数器A转换器比较器中断系统串行通信111输入输出口(IO口)uMSP430G2553单片机内部资源本单片机对应的IO共16个口,P1.0P1.7;P2.0P2.7 既可以是通用的IO口,也可以是复用功能。 112引脚功能说明uMSP430G2553单片机内部资源113uMSP430G2553单片机内部资源引脚功能说明114IO口的寄存器有:方向选择寄存器PxDIR,输出寄存器PxOUT,输入寄
40、存器PxIN,IO口内部上拉或下拉电阻使能寄存器PxREN, IO口功能选择寄存器PxSEL和PxSEL2,IO口中断使能寄存器PxIE,中断沿选择寄存器PxIES,IO口中断标志寄存器PxIFG。115 PxDIR寄存器用于设置每一位的IO口方向 :0=输入 1=输出。PxDIR寄存器在复位的过程中会被清零,没有被设置的IO口方向均为输入状态。注意,将未用的IO口置为输出可减小漏电流。 对于所有已经设成输出的IO口可通过PxOUT寄存器设置其输出电平;对于所有已经被设成输入的IO口,可通过PxIN寄存器读回其输入电平。 PxREN寄存器用于设置是否使用上拉电阻,1为使能,此时与PxOUT联合
41、设置是上拉还是下拉 1为上拉,0为下拉uMSP430G2553单片机内部资源116PxSEL寄存器用于设置通用IO口或是复用功能, 0=普通IO口, 1=第二功能 ;并与PxSEL2一起对第二功能进行选择设置117uMSP430G2553单片机内部资源118uMSP430G2553单片机内部资源119uMSP430G2553单片机内部资源120uMSP430G2553单片机内部资源121uMSP430G2553单片机内部资源IO口中断:IO口中断使能寄存器PxIE,中断沿选择寄存器PxIES,IO口中断标志寄存器PxIFG。P1口、P2口总共16个IO口均能引发中断。 PxIE用于设置每一位I
42、O口的中断允许:0=不允许 1=允许 PxIES用于选择每一个IO口的中断触发沿:0=上升沿 1=下降沿 在使用IO口中断之前,需要先将IO口设置为输入状态,并允许该位IO中断,再通过PxIES寄存器选择上升沿触发还是下降沿触发。 122uMSP430G2553单片机内部资源PxIFG是IO口中断标志寄存器:0=中断标志不成立,1=中断条件曾经成立;无论中断是否被允许,也无论是否可以执行中断服务程序,只要对应IO口满足中断条件,PxIFG中相应位都会立即置1并保持,只能通过软件人工清除。在MSP430系列单片机中,P1口和P2口的8个中断各共用了一个中断入口,因此该寄存器另一重要作用在于判断是
43、哪一位IO产生了中断。 123uMSP430G2553单片机内部资源注意,在退出中断前,一定要人工清除中断标志,否则该中断会不停被执行。类似的原理,即使IO口没有出现中断条件,人工向PxIFG寄存器写“1”,也会引发中断。更改中断沿选择寄存器也相当于跳变,也会引发中断。所以,更改PxIES寄存器应该在关闭中断后进行,并且在打开中断后及时清除中断标示位。 124uMSP430G2553单片机内部资源编程实例: 使LaunchPad上的LED灯闪烁125#include msp430g2553.hvoid main() WDTCTL = WDTPW + WDTHOLD; BCSCTL2=DIVM_
44、2+ SELM_1; DCOCTL=CALDCO_16MHZ; BCSCTL1|=CALBC1_16MHZ; P1DIR|=BIT6; P1SEL=0 x00; P1OUT=0 x00; while(1) P1OUT|=BIT6; _delay_cycles(10000); P1OUT&=BIT6; _delay_cycles(10000); 126系统时钟低功耗模式IO口定时计数器看门狗A转换器比较器中断系统串行通信uMSP430G2553单片机内部资源系统时钟低功耗模式IO口定时计数器看门狗A转换器比较器中断系统串行通信127uMSP430G2553单片机内部资源定时/计数器带有一个16位
45、定时/计数器TIMER_A,用以精确定时或计数。在普通计数器的基础上还添加了3路捕获比较模块,能够在无需CPU的干预的情况下自动根据触发条件捕获定时器的计数值或自动产生输出波形。 功能有:定时/计数(1个),比较/捕获(3个)128129uMSP430G2553单片机内部资源定时/计数器部分:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4或8分频作为计数频率,Timer_A可以通过选择4种工作模式灵活的完成定时/计数功能 捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。每个捕获/比较器的结构完全相同,输入和输出都决
46、定于各自所带的控制寄存器的控制字,捕获/比较器相互之间工作完全独立。 输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号。支持PWM130uMSP430G2553单片机内部资源全部关于定时器及其操作的控制位都包含在TACTL中TAR :16位计数器该单元就是执行计数的单元,是计数器的主体TACCTLx:捕获/比较模块的控制字TACCRx :捕获/比较寄存器,在捕获/比较模块中,可读可写。TAIV:保存中断向量131uMSP430G2553单片机内部资源1、定时/计数工作模式时钟源选择,分频选择,初始值设定,计数模式全部关于定时器及其操作的控制位都包含在TACTL中132uMSP430
47、G2553单片机内部资源若选择TACLK作为,定时器实际上成为计数器,累积从TACLK管脚上输入的脉冲,上升沿计数。若选择TACLK取反作为时钟源,TACLK的下降沿计数。 133134uMSP430G2553单片机内部资源停止模式: 用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A工作于增/减计数模式并且处于下降计数方向,停止模式后,Timer_仍然工作于增/减计数模式,从暂停前的状态开始继续沿着下降方向开始计数。如果不能这样,则可通过TACTL中的CLR控制位
48、来清除定时器的方向记忆特性。135uMSP430G2553单片机内部资源增计数:在增计数模式下,每个时钟周期TAR加1。在TAR值超过TACCR0寄存器(捕获比较模块0模式值)时自动清零,同时将Timer_A溢出标志位TAIFG置1。如果TA中断被允许,还会引发中断。该模式适用于定时周期小于65 536的连续计数情况改变TACCR0寄存器可以改变定时周期,且不存在初值装载问题,非常适合产生周期定时中断,只要改变TACCR0的值即可随意调整定时周期。 TACCR0: TimerA比较捕获寄存器 ,16位寄存器,用来存放比较数值。136uMSP430G2553单片机内部资源连续增计数:在连续计数模
49、式下,其工作方式与8051的定时器基本相同。每个时钟周期TAR加1,计数器值超过0 xFFFF后溢出,TAR回到0,同时将TAIFG置1,或引发中断。如果中断内给TAR重新赋初值,也可以产生不同周期的定时中断。增减计数:在增减模式下,计数器从0开始递增,计到TACCR0后,自动切换为递减模式,减到0后又恢复为递增模式,如此往复,在TAR从1变为0的时刻产生TAIFG中断标志。137uMSP430G2553单片机内部资源2、比较/捕获工作模式138uMSP430G2553单片机内部资源l比较模式当TACCLx的CAP控制位设为0时,捕获比较模块工作在比较模式。此时TACCRx的值由软件写入,并通
50、过比较器与主计数器的计数值进行比较。每次相等产生EQU信号,该信号触发输出逻辑,通过OUTMODE控制位可以配置输出逻辑,通过不同的输出逻辑配合产生不同的输出波形。整个过程无需CPU干预,软件中只需改变TACCRx的值即可改变输出波形的某些参数。139控制寄存器:TACCTL0/1/2uMSP430G2553单片机内部资源140uMSP430G2553单片机内部资源(1)模式0(电平输出):在输出模式0下,TAx管脚与普通的输出IO口一样,可以由软件操作OUT控制位来控制TAx管脚的高低电平。 141uMSP430G2553单片机内部资源(2)模式1与模式5(单脉冲输出):利用比较模块的模式1