MSP430单片机原理解读Word文件下载.docx
《MSP430单片机原理解读Word文件下载.docx》由会员分享,可在线阅读,更多相关《MSP430单片机原理解读Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
![MSP430单片机原理解读Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/20/ddeb2e02-3cd7-4cac-8a58-40900fe7c095/ddeb2e02-3cd7-4cac-8a58-40900fe7c0951.gif)
12位A/D转换器,内部参考电压,采用保持电路。
16位定时器A,3个捕获/比较寄存器。
16位定时器B,7个捕获/比较寄存器。
4个通用串口:
USCI_A0和USCI_A1、USCI_B0和USCI_B1(I2C、SPI)。
60kB+256B的flash程序存储器,2kB的RAM数据存储器。
64引脚QFP封装。
MSP430F249单片机的芯片封装形式如图2.1所示,各引脚的功能描述如表2-1所列。
2.1.2MSP430F249单片机的基本结构
MSP430F24x系列单片机功能结构示意图如图2.2所示。
(1)CPU简介
MSP430单片机的CPU为16位RISC精简指令集的处理器,只有27条正交汇编指令和7种寻址方式。
RISC处理器基本上是为高级语言所设计的,编译程序对正交指令系统很容易做到最优化,利于产生高效紧凑的代码。
MSP430CPU中集成了16个16位通用寄存器R0~R15,其中R0~R3分别复用为程序指针PC、堆栈指针SP、状态寄存器SR和常数发生器CG1/CG2。
这些寄存器之间的操作只需要一个CPU周期。
1)程序计数器(PC指针)也就是CPU专用寄存器R0,PC指针是一个16位寄存器,可以寻址64kB的空间。
MSP430单片机的指令长度以字(16位)为最小单位,而程序存储器单元以字节(8位)为单位,所以PC的值总是偶数。
Jmstg.sd
H」o<
./9.9d
InoMA空Hinoe二匕sd
-nMx
SE
avoa」
总=<
s.sW9ds>
<
廉AG爰
OOEJOEJtJQOOEJtJOOOLJO
63@Q5950575655545352&
15049
2.1MSP430F249单片机引脚图
RST'
NMI
图2.2MSP430F24x系列单片机功能结构示意图
表2-1MSP430F249单片机引脚描述
引脚名称
引脚号
说明
AVCC
64
模拟电源正端,仅用于ADC12模块
AVSS
62
模拟电源负端,仅用于ADC12模块
DVCC
1
电源正端,1.8〜3.6V
DVSS
63
电源负端
P1.0/TACLK/CAOUT
12
通用数字I/O/定时器_A时钟信号输入/比较器A输岀
P1.1/TA0
13
通用数字I/O/定时器_A比较out0输出或捕获CCI0A输入
/BSL
P1.2/TA1
14
通用数字I/O/定时器_A比较out1输出或捕获CCI1A输入
P1.3/TA2
15
通用数字I/O/定时器_A比较out2输出或捕获CCI2A输入
P1.4/SMCLK
16
通用数字I/O/SMCLK输出
P1.5/TA0
17
通用数字I/O/定时器_A比较out0输出
P1.6/TA1
18
通用数字I/O/定时器_A比较out1输出
P1.7/TA2
19
通用数字I/O/定时器_A比较out2输出
P2.0/ACLK/CA2
20
通用数字I/O/ACLK输出/比较器A输入
P2.1/TAINCLK/CA3
21
通用数字I/O/定时器A时钟信号INCLK/比较器A输入
P2.2/CAOUT/TA0/CA4
22
通用数字I/O/定时器A捕获CCI0B输入/比较器A输出/BSL
接收/比较器A输入
P2.3/CA0/TA1
23
通用数字I/O/比较器A输入/定时器A比较out1输出
P2.4/CA1/TA2
24
通用数字I/O/比较器A输入/定时器A比较out2输出
P2.5/ROSE/CA5
25
通用数字I/O/DCO外部电阻输入/比较器A输入
P2.6/ADC12CLK/CA6
26
通用数字I/O/ADC12转换时钟/比较器A输入
P2.7/TA0/CA7
27
通用数字I/O/定时器A比较out0输出//比较器A输入
P3.0/UCB0STE/UCA0CLK
28
通用数字I/O/USCIB0从模式传输允许/USCIA0时钟
P3.1/UCB0SIMO/UCB0SDA
29
通用数字l/O/USCIB0从模式输入/主模式输出SDA
P3.2/UCB0SOMI/UCB0SCL
30
通用数字I/O/USCIB0从模式输出/主模式输入SPI
P3.3/UCB0CLK/UCA0STE
31
通用数字I/O/USCIB0时钟/USCIA0从模式传输允许
P3.4UCA0TXD/UCA0SIMO
32
通用数字I/O/UART模式USCIA0数据输出/SPI模式SIMO
P3.5/UCA0RXD/UCA0S0MI
33
通用数字I/O/
P3.6/UCA1TXD/UCA1SIMO
34
通用数字I/O/UART模式USCIA1数据输出/SPI模式SIMO
P3.7/UCA1RXD/UCA1SOMI
35
通用数字I/O/UART模式USCIA1数据输入/SPI模式SOMI
P4.0/TB0
36
通用数字I/O/定时器B比较out0输出或捕获CCI0A/B输入
P4.1/TB1
37
通用数字I/O//定时器B比较out1输出或捕获CCI1A/B输入
P4.2/TB2
38
通用数字I/O//定时器B比较out2输出或捕获CCI2A/B输入
P4.3/TB3
39
通用数字I/O//定时器B比较out3输出或捕获CCI3A/B输入
P4.4/TB4
40
通用数字I/O//定时器B比较out4输出或捕获CCI4A/B输入
P4.5/TB5
41
通用数字I/O//定时器B比较out5输出或捕获CCI5A/B输入
P4.6/TB6
42
通用数字I/O//定时器B比较out6输出或捕获CCI6A/B输入
P4.7/TBCLK
43
通用数字I/O/定时器B时钟输入
P5.0/UCB1STE/UCA1CLK
44
通用数字I/O/USCIB1从模式传输允许/USCIA1时钟
P5.1/UCB1SIMO/UCB1SDA
45
通用数字I/O/USCIB1SPI模式SIMO/I2C模式SDA
P5.2/UCB1SOMI/UCA1SCL
46
通用数字I/O/USCIB1SPI模式SOMI/I2C模式SCL
P5.3/UCB1CLK/UCA1STE
47
通用数字I/O/USCIB1时钟/USCIA1从模式传输允许
P5.4/MCLK
48
通用数字I/O/MCLK输出
P5.5/SMCLK
49
P5.6/ACLK
50
通用数字I/O/ACLK输出
P5.7/TBOUTH/SVSOUT
51
通用数字I/O/定时器TB0〜TB6PWM输出高阻态选择位/SVS
比较器输出
P6.0/A0
59
通用数字I/O/模拟量输入A0
P6.1/A1
60
通用数字I/O/模拟量输入A1
P6.2/A2
61
通用数字I/O/模拟量输入A2
P6.3/A3
2
通用数字I/O/模拟量输入A3
P6.4/A4
3
通用数字I/O/模拟量输入A4
P6.5/A5
4
通用数字I/O/模拟量输入A5
P6.6/A6
5
通用数字I/O/模拟量输入A6
P6.7/A7/SVSIN
6
通用数字I/O/模拟量输入A7/SVS输入
XT2OUT
52
晶振XT2
XT2IN
53
RST/NMI
58
复位输入/非屏蔽中断输入
TCK
57
JTAG口测试时钟
TDI/TCLK
55
JTAG口测试数据输入/测试时钟输入
TDO/TDI
54
JTAG口测试数据输出
TMS
56
JTAG口测试模式选择
VEREF+
10
外部参考电压输入
VREF+
7
ADC12参考电压正端输岀
VREF-/VEREF-
11
参考电源负端
XIN
8
晶振XT1
XOUT
9
2)堆栈指针SP为CPU专用寄存器R1,SP指针为16为寄存器,也总是偶数的。
堆栈是在片内RAM中实现的,通常将堆栈指针设置为片内RAM的最高地址加一。
使用C语言编程时,集成编译软件IAR会自动设置堆栈指针初始值。
对程序员来说无需关心细节,编译结束后在信息窗提示的编译结果会给出RAM
使用量的大小,只要不超过RAM区实际容量并稍留余量给堆栈用即可。
使用汇编语言编程时必须注意堆栈指针的正确设置,否则堆栈可能会覆盖你的变量区,导致程序出错。
3)状态寄存器SR和常数发生器CG1、CG2(见数据手册)状态寄存器SR
15~9
保留
\V
:
SCG1:
SCG0
OSCOFF
CPUOFF
GIE
N
Z
C
V溢出标志,当算术运算结果超出有符号数范围时置位。
SCG1系统时钟控制位1,该位置位时关闭SMCLK
SCG0系统时钟控制位0,如果DCO未用作MCLK或SMCLK时,该位置位关闭DCO。
OSCOFF晶振控制位,如果LFXT1未用作MCLK或SMCLK时,该位置位关闭LFXT10
CPUOFFCPU控制位,该位置位时关闭CPU。
GIE总中断允许位,该位置位时允许可屏蔽中断;
复位时禁止所有的
可屏蔽中断。
N负数标志位,当运算结果为负时置位;
否则复位。
Z零标志位,当运算结果为零时置位;
C进位标