MPS430单片机寄存器资料概述.docx

上传人:b****5 文档编号:8226887 上传时间:2023-01-30 格式:DOCX 页数:28 大小:98.45KB
下载 相关 举报
MPS430单片机寄存器资料概述.docx_第1页
第1页 / 共28页
MPS430单片机寄存器资料概述.docx_第2页
第2页 / 共28页
MPS430单片机寄存器资料概述.docx_第3页
第3页 / 共28页
MPS430单片机寄存器资料概述.docx_第4页
第4页 / 共28页
MPS430单片机寄存器资料概述.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

MPS430单片机寄存器资料概述.docx

《MPS430单片机寄存器资料概述.docx》由会员分享,可在线阅读,更多相关《MPS430单片机寄存器资料概述.docx(28页珍藏版)》请在冰豆网上搜索。

MPS430单片机寄存器资料概述.docx

MPS430单片机寄存器资料概述

 

MSP430单片机自学知识点笔记

 

目录

1、PWM(脉冲宽度调制)3

2、ADC3

3、DCO3

4、MSP430F1xx基础时钟模块有三个时钟输入源介绍3

5、基础时钟模块可以提供三种时钟信号,分别是ACLK、MCLK和SMCLK。

3

注意:

在MSP430单片机中一共有三个时钟源:

 3

6、DCO控制寄存器DCOCTL各位定义如下表:

4

7、基本时钟系统控制寄存器BCSCTL14

8、基本时钟系统控制寄存器BCSCTL25

9、FCTL1寄存器6

10、FCTL2寄存器7

11、FCTL3寄存器7

12、IE1寄存器8

13、编程语句注释8

14、MSP430头文件对Bitx的定义9

15、IFG1寄存器9

16、定时器的定时周期10

17、注意:

定时器的工作方式10

18、#pragmavector=TIMERA0_VECTOR11

19、TACCTLx寄存器11

20、符号运算13

21、延时函数_NOP()13

22、TACTL寄存器13

23、TAIVTA中断向量寄存器14

24、_EINT();与_DINT();15

25、I/O端口(共涉及6组34个寄存器)15

1)P1口15

2)P2口16

3)P3口17

4)P4口18

5)P5口18

6)P6口19

26、IAR快捷键操作19

27、语句_BIS_SR(LPM0_bits+GIE);解释20

28、定时器A的中断说明:

20

29、ADC12(共涉及32个寄存器和3个共用寄存器)21

1)ADC12CTL0转换控制寄存器21

2)ADC12CTL123

MSP430单片机自学笔记

1、PWM(脉冲宽度调制)

脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

2、ADC

ADC即Analog to Digital Converter模数转换,把模拟信号进行量化,转换为数字量。

3、DCO

DCO(数字控制RC振荡器):

DCO是430默认的时钟,你编程时不更改相关寄存器,那么时钟就是DCO,即使外接有外部晶振,不更改寄存器,默认是DCO,初始化频率约在800k左右,随温度变化较大,不算太准。

4、MSP430F1xx基础时钟模块有三个时钟输入源介绍

MSP430F1xx基础时钟模块有三个时钟输入源,分别是LFXT1CLK(低速晶体振荡器,32768Hz)(低频时钟源),XT2CLK(高频时钟源),和DCOCLK(数字控制RC振荡器)。

5、基础时钟模块可以提供三种时钟信号,分别是ACLK、MCLK和SMCLK。

1 ACLK(辅助时钟)是经过LFXT1CLK信号经过1、2、4、8分频得到,ACLK可由软件选择各个模块的时钟信号,一般用于低速外设。

2 KCLK(系统时钟)可由软件提供,来自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后经过1,2,4,8分频得到。

MCLK主要用于CPU和系统。

3 SMCLK(子系统时钟)可由软件选择,来自LFXT1CLK和DCOCLK,或者XT2CLK和DCOCLK(由具体器件决定),然后经过1,2,4,8分频得到。

SMCLK主要用于高速外围模块。

注意:

在MSP430单片机中一共有三个时钟源:

 

1、三个时钟源

1 一个LFXT1CLK,为低速/高速晶振源,通常接32.768khz,也可以接(400khz~8Mhz); 

2 一个为XT2CLK,外接标准高速晶振,通常是接8Mhz,也可以接(400khz~8Mhz);     

3 还有一个叫DCOCLK,为内部晶振,有RC震荡回路构成。

 2、在MSP430单片机内部一共有三个时钟系统 :

 

1 一个为ACLK称为辅助主时钟,只能由LFXT1CLK作为时钟源,可以通过软件控制改时钟的分频数;      

2 一个为MCLK(Main CLK)一听就知道是主时钟单元,为系统内核提供时钟,它可以通过软件从三个时钟源(分别是LFXT1(32768Hz)、XT2(MSP430F149长为8MHz)、DCO(1MHz))选择; 

3 一个为SMCLK,称作子系统时钟可以由高频振荡器(XT2)、内部数字控制振荡器(DCO)提供时钟源,也可以通过软件来设置分频数。

3、msp430内核中有三种时钟信号:

MCLK是主时钟,供给运算内核使用。

所有外设都无法获取MCLK信号。

SMCLK是子系统时钟,可供给硬件外设使用,比如定时器、USCI等。

ACLK是辅助时钟,可供给外设使用,作用和SMCLK类似。

默认情况下,SMCLK出高速的时钟信号,ACLK出低速的时钟信号。

但可以通过配置寄存器改变它们的频率。

另外SMCLK和ACLK都可以通过引脚输出到外部。

DCO是msp430内部的数控振荡器。

它是上述所有时钟信号的来源。

注意,msp430的时钟信号的来源不必须是外置晶体或晶振,msp430不用外接晶振也可以工作。

6、DCO控制寄存器DCOCTL各位定义如下表:

表1DCOCTL控制寄存器

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

DCO.1

DCO.2

DCO.0

MOD.4

MOD.3

MOD.2

MOD.1

MOD.0

DCO.0-DCO.2定义了8种频率之一,可分段调节DCOCLK的频率,相邻两种频率差为10%。

而频率由注入的直流发生器定义的。

MOD.0-MOD.4定义在32个DCO周期中插入

初态为:

60H即01100000

7、基本时钟系统控制寄存器BCSCTL1

基本时钟系统控制寄存器BCSCCL1各位定义如下表:

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

XT2OFF

XTS

DIVA.1

DIVA.0

XT5V

RSEL.2

RSEL.1

RSEL.0

表2基本时钟系统控制寄存器BCSCTL1

XT2OFF控制XT2CLK振荡器的开启与关闭。

此位的上电复位值为1

XT2OFF=0,XT2振荡器开启。

XT2OFF=1,XT2振荡器关闭。

XTS控制LFXT1CLK的工作模式,选择需结合实际晶体的连接情况。

XTS=0,LFXT1CLK工作在低频模式(默认低频模式);

XTS=1,LFXT1CLK工作在高频模式(必须连接相应的高频晶振才行)。

DIVA.1和DIVA.0控制ACLK分频关系。

00表示不分频;01表示2分频;10表示4分频;11表示8分频。

XT5V此位设置为0.

RSEL.2、RSEL.1和RSEL.0三个控制某个内部电阻以决定标称频率。

000表示选择最低的标称频率;111表示选择最高的标称频率。

通过控制位RSEL.2-RSEL.0和DCO.2-DCO.0调节DCO的频率

初态为:

84H即10000100

8、基本时钟系统控制寄存器BCSCTL2

基本时钟系统控制寄存器BCSCTL2各位定义如下表所示:

表3基本时钟系统控制寄存器BCSCTL2

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

SELM.1

SELM.0

DIVM.1

DIVM.0

SELS

DIVS.1

DIVS.0

DCOR

初态为:

00H

SELM.1和SELM.0--选择MCLK时钟源

✧00:

选择DCO作为MCLK的时钟源。

01:

选择DCO作为MCLK的时钟源。

10:

选择高频晶振作为MCLK的时钟源。

11:

选择低频晶振作为MCLK的时钟源

v00:

时钟源为DCOCLK(默认时钟源);

v01:

时钟源为DCOCLK;

v10:

对于MSP430F11/12x,时钟源为LFXT1CLK;对于MSP430F13/14/15/16x,时钟源为XT2CLK;

v11:

时钟源为LFXT1CLK。

DIVM.1和DIVM.0---选择MCLK分频

00:

1分频(默认MCLK=DCOCLK);

01:

2分频;

10:

4分频;

11:

8分频;

SELS--选择SMCLK时钟源。

默认时钟源为DCOCLK;对于MSP430F11/12x,时钟源为LFXT1CLK;对于MSP430F13/14/15/16x,时钟源为XT2CLK。

DIVS.1和DIVS.0

01:

分频(默认SMCLK=MCLK);/////////可以做一下测试

01:

2分频;

10:

4分频;

11:

8分频。

DCOR选择DCO电阻,内部电阻或外部电阻。

PUC信号之后,DCOCLK被自动选作MCLK时钟信号,根据需要,MCLK的时钟源可以另外设置为LFXT1或者XT2,设置顺序如下:

1 复位OSCOFF

2 清除OFIFG

3 延时等待至少50

4 再次检查OFIFG,如果仍然复位,则重复

步骤,直到OFIFG=0为止。

9、FCTL1寄存器

如图所示,FCTL1是一个16位寄存器,其在存储器的地址为0128H

表4FCTL1寄存器

15-8

7

6

5

4

3

2

1

0

安全键值

BLKWRT

WRT

Reserved

Reserved

Reserved

MERAS

ERASE

Reserved

该寄存器定义了Flash模块的擦除和编程操作的控制位,其中,高8位为安全键值,该字段读出的内容总是96H,写入时必须为A5H,否则不能进行操作。

下面分别对低8位进行介绍。

BLKWRTbit7按块写模式位,复位值为0,在进行写操作时,WRT为必须置为1,

当设置EMEX位时,BLKWRT自动复位,

0块写模式关闭

1块写模式开启

WRTbit6写模式使能位,复位值为0,当设置EMEX位时,WRT自动复位。

0不能进行写操作

1写操作允许

MERAS、ERASEbits2-1该两位用来控制擦除方式选择位。

复位值为0.当设置EMEX位时,

这两位自动复位。

00不擦除;

01只擦除单个段;

10擦除所有的主程序区;

11擦除所有的主程序区和信息区。

10、FCTL2寄存器

如图所示,FCTL2是一个16位的寄存器,其在存储器的地址为012AH

表5FCTL2寄存器

bits15-8

bits7-6

bits5-0

安全键值

FSSEI.x

FNx

该寄存器定义了Flash模块的擦除和编程操作所需要的时序时钟。

其中,高8位为安全键值,该字段读出的内容总是96H,写入时必须为A5H,否则不能进行操作。

下面对低八位进行介绍:

FSSEI.xbits7-6该两位用来定义Flash模块控制器时钟源的选择。

复位值为

01。

00ACLK;10SMCLK;

01MCLK;11SMCLK;

FNxbits5-0这六位定义了分频系数,分频系数为FN5-FN0的值。

如当FN5-FN0

的值为2时,其分频系数为8。

复位值为1,分频系数为2.

11、FCTL3寄存器

如表所示,FCTL3是一个16位寄存器,其在存储器的地址为012CH。

表6FCTL3寄存器

15-8

7

6

5

4

3

2

1

0

安全键值

Reserved

Reserved

EMEX

LOCK

WAIT

ACCVIFG

KEYV

BUSY

该寄存器定义了Flash模块的擦除和编程操作的一些标志位。

其中,高8位为安全键值,该字段读出的内容总是96H,写入时必须为A5H,否则不能进行操作。

下面分别对低8位进行介绍。

EMEXbit5紧急退出位。

当该位为1时,则立即退出对Flash的操作。

LOCKbit4保护位。

0不加锁,可以对Flash操作。

1加锁,这时不能对Flash进行写和擦除操作。

WAITbit3等待指示位,该位显示Flash正在进行写操作。

0还没有准备好,此时不能进行写操作;

1Flash准备好下一次写操作。

ACCVIFGbit2违反访问中断标志。

该位只能软件清零。

0没有中断挂起。

1有中断挂起。

KEYVbit1安全值错误标志。

0安全值正确

1安全值错误

BUSYbit0忙标志

0不忙

1忙

12、IE1寄存器

如表所示,IE1时一个8位寄存器。

与Flash操作有关的位只有第5位ACCIE。

该位用来允许违反中断访问的控制位,当该位为1时,中断允许;当该位为0时,中断禁止。

表7IE1寄存器

7

6

5

4

3

2

1

0

ACCVIE

13、编程语句注释

WDTCTL=WDTPW+WDTHOLD;//StopWDT关闭关门狗

P6DIR|=BIT2;P6OUT|=BIT2;//关电平转换,表示串行外设接口关闭,这两句表示P6.2为输出,而且输出1,P6.2应该和电平转换芯片的使能端接在一起,那个使能端低电平有效,P6.2为1那芯片就不能工作。

14、MSP430头文件对Bitx的定义

#defineBIT0(0x0001u)

#defineBIT1(0x0002u)

#defineBIT2(0x0004u)

#defineBIT3(0x0008u)

#defineBIT4(0x0010u)

#defineBIT5(0x0020u)

#defineBIT6(0x0040u)

#defineBIT7(0x0080u)

#defineBIT8(0x0100u)

#defineBIT9(0x0200u)

#defineBITA(0x0400u)

#defineBITB(0x0800u)

#defineBITC(0x1000u)

#defineBITD(0x2000u)

#defineBITE(0x4000u)

#defineBITF(0x8000u)

在MSP430头文件中你可以找到BIT4实际上就是0x10即00010000

P3DIR|=BIT4是一个或运算,等同于P3DIR=P3DIR|BIT4;

无论P3DIR原来的值是什么与BIT4相或之后,其余位不变,第5位变为1,例如P3DIR原来的值是0x41即01000001,它与00010000相或(对应位相加)就变成了01010001跟原来的01000001相比只有第5位变为了1,其余位不变。

而P3DIR表示P3口的IO是输入还是输出,当对应位为1时,相应端口为输出,P3DIR|=BIT4的意思就是P3.4定义为输出,P3口其它管脚的输入输出状态不变。

P3OUT^=BIT4;是一个按位异或操作,等同于P3OUT=P3OUT^BIT4;即P3.4的值与1(BIT4即第5位为1)相同则P3.4的值为0,否则为1.即原来P3.4为0时执行这个语句之后P3.5的值变为1;原来P3.4为1时执行这个语句之后P3.4的值变为0.相当于每执行一次P3OUT^=BIT4;P3.4的值就改变一次。

15、IFG1寄存器

IFG1是一个8位的中断标志位寄存器。

该寄存器的位分配如图所示

7

6

5

4

3

2

1

0

UTXIFG0

URXIFG0

NMIIFG

OFIFG

WDTIFG

各位介绍

OFIFGBit1晶体出错中断标志。

复位值为1。

0没有中断产生;

1有中断产生。

#define IFG1_            0x0002   //

sfrb    IFG1           = IFG1_;  

#define WDTIFG           0x01     /*看门狗中断标志*/ /00000001

#defineOFIFG  0x02/*外部晶振故障中断标志*/ /00000010

#defineNMIIFG  0x10/*非屏蔽中断标志*//00010000

#defineURXIFG0 0x40/*串口0接收中断/01000000

#define UTXIFG0          0x80     /*串口0发送中断标志*/ 10000000

16、定时器的定时周期

定时器的定时周期T=(1/定时器的频率)×(TACCR0的值+1)

17、注意:

定时器的工作方式和Timer_A的所有寄存器

定时器的4中工作模式:

(1)停止模式:

定时器停止工作。

(2)增计数模式:

如果定时器原来处于停止模式,设置增计数模式会同时启动计数器TAR开始计数。

当计数值达到TACCR0寄存器的值时,中断标志TACCR0_CCIFG置位。

当下一个计数时钟到来时,计数器TAR的值变为0,重新开始新一轮计数。

因此定时器的计数周期是由TACCR0得值决定。

由于必须用TACCR0寄存器存放计数的最大值,所以增计数模式比连续模式多占用了TACCR0寄存器。

在增计数期间还可以设置CCR1-2来产生中断标记,产生PWM等信号。

(3)连续计数模式;连续技术模式与增计数模式的区别是连续计数模式不占用TACCR0寄存器。

当CCRx(x=0、1、2)寄存器的值与TAR的值相等时,若此时CCRx是处于中断允许的话,则产生相应的中断标志CCIFGx。

而TAR的中断标志TAIFG位则在TAR计数值从FFFFH转为0时产生中断标志TAIFG。

定时器A连续模式计数启动后,TAR的值开始从0--FFFFH-0——FFFFH…不断重复计数,直至软件控制其停止为止。

(4)加减计数模式;加减计数模式也要用到TACCR0寄存器,定时器启动后,计数值先从0增加到TACCR0寄存器中的值,然后计数器又开始减少,减少到0后,计数器又开始递增,如此周而复始。

在加减计数模式一个周期内,中断标志TAIFG和TACCR0_CCIFG各置位一次。

当计数值达到最大值TACCR0的值时,中断标志TACCR0_CCIFG置位;当计数值递减到0时,中断标志TAIFG置位。

加减模式在定时器周期不是)FFFFH且需要产生对称脉冲时使用。

(5)Timer_A的所有寄存器

寄存器

缩写

读写类型

地址

初态

Timer_A控制寄存器

TACTL

R/W

160H

POR复位

Timer_A计数器

TAR

R/W

170H

POR复位

捕获/比较控制寄存器0

CCTL0

R/W

162H

POR复位

捕获/比较寄存器0

CCR0

R/W

172H

POR复位

捕获/比较控制寄存器1

CCTL1

R/W

164H

POR复位

捕获/比较寄存器1

CCR1

R/W

174H

POR复位

捕获/比较控制寄存器1

CCTL2

R/W

166H

POR复位

捕获/比较寄存器1

CCR2

R/W

176H

POR复位

中断向量寄存器

TAIV

R/W

12EH

POR复位

18、#pragmavector=TIMERA0_VECTOR语句解释

这是中断服务函数的起始语句,每次在写中断中执行什么内容前都要写,TIMERA0_VECTOR只是针对TimerA0的中断,它是对应于TimerA0的中断向量。

如果是其他外设所引发的中断,这句话写法会不同,例如#pragmavector=UART0RX_VECTOR是写针对串口的中断。

中断的写法是这样的:

#pragmavector=中断向量(可在头文件中进行查找)

__interruptvoidISR(void)

{

中断服务程序

}

19、TACCTLx寄存器

TACCTLx是一个16位的寄存器。

Timer_A有多个捕捉/比较模块,每个模块都有自己的控制寄存器CCTLx。

TACCTLx寄存器的各个位如表所示

表9TACCTLx寄存器

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

CMx

CCISx

SCS

SCCI

Unused

CAP

OUTMODx

CCIE

CCI

OUT

COV

CCIFG

下面将对TACCTLx寄存器的各位进行详细介绍。

CMxBits15-14捕捉触发信号选择(捕获模式)

00不触发捕捉

你01上升沿触发捕捉

10下降沿触发捕捉

11上升和下降沿都触发捕捉

CCISxBits13-12捕捉/比较输入选择。

通过该位选择输入信号,同时需要使I/O

工作在外部模块方式,即相应的引脚PxSEL的位应该等于1。

(在捕获模式中用来确定提供捕获事件的输入端)

00CCIS_0CCIxA;

01CCIS_1CCIxB;

10CCIS_2GND

11CCIS_3VCC。

SCSBit11捕捉同步或异步选择

0异步捕获模式

1同步捕获模式

SCCIBit10捕捉/比较同步输入

UnusedBit9未使用,只读,通常读为1.

CAPBit8捕捉模式选择。

0比较模式;

1捕捉模式。

OUTMODxBits7-5输出模式选择

000OUTMOD_0输出,等于OUT位的值

001OUTMOD_1置位

010OUTMOD_2PWM翻转/触发/复位;

011OUTMOD_3PWM置位/复位;

100OUTMOD_4翻转/置位;

101OUTMOD_5复位;

110OUTMOD_6PWM翻转/触发/置位;

111OUTMOD_7PWM翻转/复位/置位。

CCIEBit4捕捉/比较中断使能,使能CCIFG标志产生的中断。

0中断禁止

1中断使能

CCIBit3捕捉比较输入,被捕获/选择的信号可以通过该位读取。

OUTBit2当选择模式0时,该位直接控制输出状态。

0输出为低;

1输出为高。

COVBit1捕捉溢出标志位。

当第一次的捕捉数还没有被读取的时候,又

发生一个捕捉事件,该位置置1.该位只可以软件清零。

建议

当发生溢出时,软件清零以后再使用捕捉单元。

0没有发生溢出

1发生溢出

CCIFGBit0捕捉/比较中断标志。

0没有中断挂起即因为某种原因中断不能马上执行

1有中断挂起

捕获模式:

CCRx捕获了TAR值时置位。

比较模式:

TAR值等于CCRx值时置位

20、符号运算

x|=y;等价于x=x|y;为位运算里面的或

x&=~y等价于x=x&(~y);先对y取反再和x做与运算

a^=b;等

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1