MSP430单片机.docx
- 文档编号:3518434
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:30
- 大小:1.11MB
MSP430单片机.docx
《MSP430单片机.docx》由会员分享,可在线阅读,更多相关《MSP430单片机.docx(30页珍藏版)》请在冰豆网上搜索。
MSP430单片机
16位微控制器MSP430说明书
目录
一基本原理及基础实验
1.1MSP430单片机结构和特点
1.1.1单片机的结构
1.1.2单片机的特点
1.2MSP430单片机程序设计基础
1.2.1C语言设计基础
1.2.2开发环境
1.3MSP430单片机外围模块
1.3.1端口输入输出实验
1.3.2端口中断与输出实验
1.3.3端口趣味实验――音频
1.3.4通用独立按键式键盘设计
1.3.5液晶显示原理与应用
1.3.6使用74HC373扩展数码管显示
1.3.7MSP430定时器的使用
二故障分析及处理
三课程设计总结
正文内容
1.1基本原理及基础实验
单片机是单片微型计算机的简称,也就是把微处理器(CPU)、一定容量的程序存储器(ROM)和数据存储器(RAM)、输入/输出接口(I/O)、时钟及其他一些计算机外围电路,通过总线连接在一起并集成在一个芯片上,构成的微型计算机系统。
MSP430单片机是TI公司1996年开始推向市场的超低功耗微处理器,另外他还集成了很多模块功能,从而使得用一片MSP430芯片可以完成多片芯片才能完成的功能,大大缩小了产品的体积与成本。
1.1.1MSP430结构
在结构上MSP430系列单片机集成了一部计算机的各个基本组成部分。
虽然其工作原理与普通微机并无差异,但MSP430系列单片机在结构上更加突出了体积小、功能强、面向控制的特点,具有很高的性能价格比。
MSP430的内核CPU结构是按照精简指令集的宗旨来设计的。
具有丰富的寄存器资源、强大的处理控制能力和灵活的操作方式。
MSP430的存储器结构采用了统一编址方式,可以使得对外围模块寄存器的操作象普通的RAM单元一样方便、灵活。
MSP430存储器的信息类型丰富,并具有很强的系统外围模块扩展能力。
MSP430系列单片机由CPU、存储器和外围模块组成,这些部件通过内部地址总线、数据总线和控制总线相连构成单片微机系统。
●直接嵌入仿真处理,具有JTAG接口。
●能够降低功耗,降低噪声对存储器存取的影响。
●16位数据宽度,数据处理更为有效。
●16位CPU通过总线连接到存储器和外围模块。
MSP430系列单片机包含以下主要功能部件:
CPU:
MSP430系列单片机的CPU和通用微处理器基本相同,只是在设计上采用了面向控制的结构和指令系统。
MSP430的内核CPU结构是按照精简指令集和高透明的宗旨而设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的仿真指令。
这样可以提高指令执行速度和效率,增强了MSP430的实时处理能力。
MSP430CPU的主要特征1)精简指令集高度正交化2)寄存器资源丰富3)寄存器操作为单周期4)16位地址总线5)常数发生器
存储器:
存储程序、数据以及外围模块的运行控制信息。
有程序存储器和数据存储器。
对程序存储器访问总是以字形式取得代码,而对数据可以用字或字节方式访问。
其中MSP430各系列单片机的程序存储器有ROM、OTP、EPROM和FLASH型。
外围模块:
经过MAB、MDB、中断服务及请求线与CPU相连。
MSP430不同系列产品所包含外围模块的种类及数目可能不同。
它们分别是以下一些外围模块的组合:
时钟模块、看门狗、定时器A、定时器B、比较器A、串口0、1、硬件乘法器、液晶驱动器、模数转换、数模转换、端口、基本定时器、DMA控制器等。
1.1.2单片机的特点
●小巧灵活、成本低、易于产品化,它能方便地组装成各种智能式控制设备以及各种智能仪器仪表。
●面向控制,能针对性地解决从简单到复杂的各类控制任务,因而能获得最佳性能价格比。
●抗干扰能力强,适应温度范围宽,在各种恶劣环境下都能可靠地工作,这是其他机型无法比拟的。
可以很方便地实现多机和分布式控制。
使整个系统的效率和可靠性大为提高。
1.2MSP430单片机程序设计基础
1.2.1C语言设计基础
MSP430系列单片机支持标准的C语言,在标准的C语言基础上进行了扩展,因此掌握标准C语言对开发MSP系列单片机有着非常重要的作用。
下面针对MSP430系列单片机开发介绍一些C语言的开发基础。
一常用结构的汇编设计方法
A顺序结构
所谓的顺序结构就是CPU执行完了一条指令再执行下一条指令,程序计数器的内容每次增加当前指令的字节数。
B散转结构
在进行键盘操作是,相应的按键实现相应的功能。
C循环结构
循环结构的使用使得程序量缩小,代码空间节省。
常用的循环结构有两种形式,其流程分别如下图:
D选择结构
选择结构首先对一个条件语句进行测试,当条件为真时,执行一个方向的流程;当条件为假时执行另一个方向上的流程。
如图
二可以使用的数据类型
三表达式语句(结构)
A条件语句
aif(条件表达式)语句
bif(条件表达式)语句1
else语句2
cif(条件表达式)语句1
elseif(条件表达式)语句2
elseif(条件表达式)语句3
B开关语句
switch(表达式)
{
case常量表达式1:
语句1
break;
case常量表达式2:
语句2
break;
case常量表达式3:
语句3
break;
……
default:
语句d
}
C循环语句
1)while(条件表达式)语句;
当条件满足时,就反复执行后面的语句,一直执行到条件不满足时。
以软件延时程序为例说明该语句是如何执行的。
voiddelay(longv)
{
while(v!
=0)v--;
}
2)do语句while(条件表达式)
先执行一次循环体的语句,再判断条件是否满足,以决定是否再执行循环体。
下面的程将数组BUFF[20]中的全部数据相加。
Intx=0;
CharI=0;
Do{
x=BUFF[I]+x;
I=I+1;
}
while(I<20);
……
3)for([初值设定表达式];[循环条件表达式];[条件更新表达式])语句
for语句常用于需固定循环次数的循环。
下面的程序段同样实现将数组BUFF[20]中的全部数据相加的功能。
Intx=0;
CharI=0;
for(I=0;I<20;I++)
x=BUFF[I]+x;
……
4)goto语句标号
goto语句常用于跳转到一个固定的地址标号。
其中固定的地址标号是一个带“:
”的标志符。
比如:
……
MM:
……
……
gotoMMM
……
四函数的定义与调用
函数类型函数名(形式参数表)
形式参数说明
{
局部变量定义
函数体语句
}
[存储变量类型]interrupt[中断矢量变量]函数类型函数名(形式参数表)
形式参数说明
{
局部变量定义
函数体语句
}
五经常使用的延时函数
voiddelay(longv)
{
while(v!
=0)v--;
}
delay(100)究竟延时多久呢?
就是这句话执行需要的时间。
时间等于:
机器周期×需要的机器周期数
(在仿真环境中可以测试出来)
1.2.2开发环境
第一步,创建新工作站。
打开IAREmbeddedWorkbench。
单击:
“开始”、“程序”、IARSystems、IAREmbeddedWorkbenchForMSP430V3,自动创建一个新的工作站,出现如2.2所示的界面。
图2.2第一次进入EmbeddedWorkbench
界面提示如下:
Createnewprojectincurrentworkspace:
在新工作站中创建新的工程。
Addexistingprojecttocurrentworkspace:
添加已经存在的工程到当前的工作站中。
Openexistingworkspace:
打开已经存在的工作站。
Exampleworkspace:
打开示例工作站。
根据您的具体情况选择上述4个选项之一。
第二步,创建并保存工程。
单击选项中Createnewprojectinnewworkbench。
出现图2.3界面。
图2.3创建新工程
选择工程类型(Emptyproject、asm、C、C++或xternallybuiltexecutable),若选择的工程类型为Emptyproject,单击“OK”按钮,出现图2.4界面,选择保存路径,同时输入工程文件名(如test),单击保存,一个工程就建立完成了。
图2.4保存新工程
第三步,创建或加载源文件
(1)创建源程序。
单击File,New,File(如图2.5所示)或按快捷键Ctrl+N,出现如图2.4所示的源程序编辑界面。
图2.5创建源程序
图2.6编写源程序
将1.3.4中例子P1端口输出高电平源程序输入编辑窗,结果如图2.6。
编辑过程要注意标点应为英文。
程序代码如下:
ORG1100H;以下指令机器码存储在1100开始的连续存储单元
MOV.B#0FFH,&22H;P1方向寄存器P1DIR切换为输出
MOV.B#0FFH,&21H;P1输出寄存器设为全1,引脚输出高电平
ORG0FFFEH;以下指令机器码存储在0FFFEH开始的连续存储单元
DW1100H;在0FFFEH单元写入1100H
;对MSP430F149而言存储器FFFEH单元
;存储的是第一条指令的地址号
END
伪指令ORG,只在汇编时有用,汇编成的目标程序中就没有了。
在MSP430F149中汇编程序中ORGxxxxH表示下面紧接的一句汇编指令后放在地址xxxxH。
如上述代码第一条指令ORG01100H,表示目标代码43F20022(MOV.B#0FFH,&022H)等顺序存放在地址单元号为1100H开始的存储器单元中,直到遇上另一个ORG语句为止。
程序中DW是伪指令,它的作用是告汇编器在生成目标程序时,在DW当前地址上写入DW后面跟的数据,数据宽度为一个字,本段程序中DW1100H,即在ORG0FFFEH指定的地址单元0FFFFH中写入1100H。
源程序编辑好之后,保存源文件。
单击工具条的保存或文件菜单(File中的Save)出现如图2.7界面,“保存在框”中选择好文件路径目录,“文件类型”框中填入430P1.s43。
注意不要忘记写上文件名后缀.s43,否则第③步添加源程序时无法找到需要的文件。
s43是430汇编语言的源文件扩展名。
图2.5保存源文件
注意,此时源程序虽然编辑完成,但仅仅是一个孤立的文件,不能进行编译、连接操作。
下面需将它加载到工程中进行管理,以便编译、连接生成目标代码。
(2)加载源文件。
点击菜单Project,Addfiles…出现图2.6所示加载源文件界面。
选择相应的文件类型(此处选择汇编程序),出现相应的文件,选中需要加载的文件后,点击“打开”按钮。
源文件加载完成后,出现如图2.7所示界面,在工程Test下出现430P1.s43和Output子目录。
图2.6加载源文件
图2.7源文件加载完成
第四步保存工作站
依次点击File,SaveWorkspace出现如图2.8所示界面,输入文件名TestWorkspace,点击“保存”。
保存工作站工作完成。
图2.8保存工作站
第五步编译环境设置
选中项目名称(test)后,单击鼠标右键,如图2.9所示。
从快捷菜单中选择Options进入图2.10所示参数设置界面。
环境设置需要设置目标芯片类型、仿真方式、仿真器类型等参数。
图2.9进入环境设置
(1)目标芯片设置,即选择需要调试的单片机型号。
在如图2.10设置界面中,从左边Category列表下选择GeneralOptions,在Target页的Device选项中选择目标芯片型号,本例选择MSP430F149。
如果是新建工程且只使用汇编语言需将Assembleronlyproject选中。
否则会出现默认C语言,连接时会出错。
图2.10目标芯片设置
(2)仿真方式设置。
设置软件模拟仿真或FET在线仿真调试。
在ategory列表下选择Debugger如图2.11界面,在Driver选项中选择FETDebugger或Simulator。
单使用FET仿真器连接目标板进行在线仿真调试时,选择FETDebugger,软件模拟仿真则选择Simulator。
图2.11仿真方式设置
(3)仿真器接口类型设置。
设置并口FET或USBFET。
若选择TETDebugger,最后需进入Category列表下选择FETDebugger,出现如图2.12界面,在Connection选择项中有三个可选项,单使用并口FET时,选择Lpt,同时根据连接并口的实际情况选择相应的并口Lpt1,Lpt2或Lpt3;若使用USB型仿真器,则选择TIUSEFET。
设置正确后单击“OK”按钮,完成环境设置。
图2.11仿真器类型设置
第六步工程编译和连接,调试。
工程编译,连接,调试通过选择菜单Project下的Compile/Make/Debug,或点击图2.12界面右上方的快捷按钮完成。
图2.12编辑编译连接环境界面
(1)工程编译和修改源程序。
在左侧工程管理选中源文件430P1.s43文件,双击鼠标左键,进入源程序编辑状态。
编译图标
有灰变黑,激活编译功能,此时单击Project,compile或单击Ctrl+F7键,或单击
按钮进行文件编译。
出现如图2.13下部分所示的错误提示,出错行前标注红色“√”。
图2.13汇编之后产生的错误
任意单击某一个错误提示,系统就会自动的跳到有错误的语句行。
仔细阅读错误提示,发现该行“;”不是英文符号。
修改后编译通过。
(2)连接生成目标代码。
源文件编译通过之后,将连接生成目标代码。
通过单击Project,Make,或按F7键,或单击
按钮,进行连接。
(3)调试。
在的程序通过了连接,生成目标代码之后。
通过单击Project,Debugger,或按Ctrl+F7键,或单击
按钮可以进入如图2.14所示的调试集成环境。
该环境在原编辑编译环境的基础上,工具栏增加了如图2.15所示的调试快捷按钮。
图2.14调试环境简介
图2.15调试快捷按钮
1.3MSP430单片机外围模块
1.3.1端口输入输出实验
实验目的:
演示端口的输入与输出功能,练习如何实现端口的输入与输出。
实验电路图:
电路中,4只按钮连接在P14、P15、P16、P17上,4只发光二极管连接在P50、P51、P52、P53上。
实验要求:
当按下连接在P14上的按钮时,连接在P50上的发光二极管亮,没有按则熄;
当按下连接在P15上的按钮时,连接在P51上的发光二极管亮,没有按则熄;
当按下连接在P16上的按钮时,连接在P52上的发光二极管亮,没有按则熄;
当按下连接在P17上的按钮时,连接在P53上的发光二极管亮,没有按则熄;
实验步骤:
设置P14、P15、P16、P17为输入,设置P50、P51、P52、P53为输出,对应的语句为:
P1DIR=0x0F;
P5DIR=0x0f;
当按钮按下的时候,根据电路图,可以知道,对应的输入寄存器为“0”,而没有按下的时候,对应的输入寄存器为“1”。
1.3.2端口中断与输出实验
实验目的:
演示端口的输入与输出功能,练习如何实现端口的输入与输出。
实验电路图:
实验要求:
当按下连接在P14上的按钮时,连接在P50上的发光二极管亮,没有按则熄;
当按下连接在P15上的按钮时,连接在P51上的发光二极管亮,没有按则熄;
当按下连接在P16上的按钮时,连接在P52上的发光二极管亮,没有按则熄;
当按下连接在P17上的按钮时,连接在P53上的发光二极管亮,没有按则熄;
Voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD//关闭看门狗
P5DIR|=0x0F;//设置P5.0-P5.3为输出方向
P1DIR=0x0F;//设置P1.4-P1.7为输入方向
P1IE=0xf0;//设置P1.4-P1.7可以中断
P1IES=0xf0;//设置P1.4-P1.7为下降中断
_BIS_SR(LPM3_bits+GIE)//进入最低功耗睡眠,打开总总断开关
for(;;)
{
}
}
1.3.3端口趣味实验――音频
扬声器发声的原理:
处在磁场中有电流的线圈产生震动,继而发声。
不同的频率产生不同的声音;MSP430的端口可以输出不同的频率;继而可以推动扬声器产生不同的声音。
图2.4.1为本实验的电路图。
图2.4.1扬声器电路
voids1(void)
{
for(ff=30;ff<500;ff++)
{
P6OUT^=BIT0;//对输出置反
for(tmp=0;tmp } } 1.3.4通用独立按键式键盘设计 按键的工作原理在单片机设计中常用轻触按键作为输入设备—键盘的单元电路。 它一般是由两个电极与一个弹簧金属片构成。 如图 实际上按键按下前后都有抖动,如图 在系统中需要少量按键时,可使用按键与单片机的I/O口线直接连接的方法构成。 4只独立按键直接与4条口线相连 相关程序: Delay延时消除抖动 1.3.5液晶显示原理与应用 图2.7.1表示了4MUX的显示原理。 其中(a)说明了一个“8”字的四个公共端、(b)说明了两个驱动端,当分别给公共端与驱动端液晶信号时,就显示对应的数码。 (a)(b) 图2.7.14MUX显示模式下的公共端与驱动端 在这种方式下,一个“8”字的显示只需要给“COM0、COM1、COM2、COM3、SP1、SP2”对应的信号。 而COM0、COM1、COM2、COM3公共信号,所有的“8”字都需要与它们相连接。 故真正表示一个“8”字的显示的就只与SP1、SP2有关系了。 所以在4MUX方式下,只需要两个驱动端即可表示一个“8”字的显示。 图2.7.24MUX方式下的液晶显示原理 液晶简介 此液晶一共160段,见图3。 上面为图标与6个“米”字,可以显示数字与英文字母,用来表达一些指示性含义的符号。 下面一排为7个“8”字与符号,显示数字,可以有具体的量纲含义数据。 图2.7.3与图2.7.4为此液晶“8”字、“米”字各笔段的定义。 表1为此液晶引脚真值表。 图2.7.3液晶段码布局 图2.7.4“8”字、“米”字笔段定义 表2.7.1引脚真值表 硬件连接硬件连接最简单,只需要3只电阻、一只晶体。 然后将液晶的公共端与单片机的公共端;液晶的各驱动段与单片机对应连接就可以了。 具体电路如图2.7.5所示(MSP430F435)。 图2.7.5液晶显示电路 C语言语句: LCDCTL=0XFD; 汇编语句: MOV.B#0FDH,&LCDCTL LCDMEM[7]=0xa;//显示两个表示时钟的”冒号” LCDMEM[8]=0x90;//显示TIME 1.3.6使用74HC373扩展数码管显示 数码管的原理 数码管为8只发光二极管按照一定规则排列构成。 如图2.8.1所示,图中的abcdefg“.”为数码管的8只发光二极管的排列规则,由此可见: 当这些发光二极管由不同的显示组合可以得到不同的数字显示。 图2.8.1 如果要显示数字“2”,如果HGFEDCBA对应一个字节的高到位则显示码为: HGFEDCBA 010110110x5b 这样,每个数字就对应一个显示码。 一般地,先将常用的显示数据对应的显示码放在数组中,然后在数组中查表求得对应的显示码,再将对应的发光二级管显示。 电路图见图2.8.2。 图28.274HC373扩展的数码管显示电路 硬件连接: 6只数码管的显示电路,通过两片373扩展,其中U5为8位段码输出,U7为6只数码管的位选信号。 也都连接在P3端口上。 两片74HC373的输出由P41、P40数据锁存。 扫描显示软件分析: 扫描显示的原理在于利用人眼睛的视觉暂停,让每个数码管只显示一点时间,所有的数码管轮流显示,而人眼睛看起来就象所有的都在显示一样。 所以硬件上所有的数码管的段码端都连接在一起,而每一个数码管的公共端(地)不连接在一起,而由U7选中每个是数码管。 所以软件上,很明显,分几个步骤。 第一、将要显示的数码转换为段码。 可使用查表的方式。 比如要显示“1、2、3、4、5、6、7、8”分别在8个数码管上,首先安排段码表,设置一个数组seg[]: unsignedcharseg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}则5的段码为seg[5]。 第二、将要显示的段码输出,这里使用U5输出。 第三、每输出一个要显示的段码,则使用U7选中应该显示的数码管。 第四、延时一小段时间。 这个时间不能长,也不能短。 太长则8只数码管看起来很抖动,太短则8只数码管一片模糊。 第五、循环第一到第四。 1.3.7MSP430定时器的使用 MSP430系列单片机的定时器有基本定时器BT、定时器TA、定时器TB、看门狗定时器WDT等。 其中看门狗主要用于程序的完善性控制等方面;基本定时器除了可以用于定时之外,还可以用于液晶显示的时序控制;TA、TB基本相同,而且功能复杂。 看门狗的目的在于阻止程序跑飞,其原理在于: 看门狗定时器设置一定时时间,比如250毫秒,这个时间是所有用户程序一定能在此时间内执行完该程序的一个时间,设置好这个定时时间之后,所有用户程序就必须在这个设定的时间内将看门狗计数器的值清零,使计数器重新计数,如果CPU执行程序正确,则看门狗计数器始终能在规定的时间内被用户程序清零而始终不能计数到250毫秒,而当CPU执行程序跑飞(PC值指向用户程序以外),看门狗计数器得不到用户程序清零,能计数到250毫秒,发生溢出,导致CPU复位,这样CPU又会重新运行用户程序。 所以使用看门狗时,用户软件必须周期性地在WDTCTL的CNTCL位写“1”,使得看门狗计数器复位以防止其超过设定的定时时间。 图2.11.1看门狗定时器的结构原理 BT是MSP430X3XX、MSP430F4XX系列器件中的模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSP430 单片机