16位单片机原理及应用─基于MSP430PPT完整全套教学课件_第1页
16位单片机原理及应用─基于MSP430PPT完整全套教学课件_第2页
16位单片机原理及应用─基于MSP430PPT完整全套教学课件_第3页
16位单片机原理及应用─基于MSP430PPT完整全套教学课件_第4页
16位单片机原理及应用─基于MSP430PPT完整全套教学课件_第5页
已阅读5页,还剩574页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机C语言程序设计--我的嵌入式C,来了1第1章--绪论.pptx2第2章--MSP430系列单片机概述.pptx3第3章(C语言).ppt4第4章(IO).ppt5第5章MSP430定时器A.ppt6第6章串行口.pptx7第7章比较器.pptx8第8章MSP430模数转换ADC12模块.ppt9第9章DAC12模块.pptx10第10章DMA模块.pptx11第11章基于MSP430的液晶显示系统控制.pptx12第12章综合应用实践.pptx全套PPT课件我大二就学过C了,干嘛还学单片机C还想用汇编大规模编写程序与硬件打交道?累C可以直接描述枯燥的硬件驱动?城里人真会玩C是嵌入系统开发的主力军!额,这样的呀!单片机C语言程序设计,嗯,51单片机的C吗?太Low!你的菜!何必为难自己!MSP430是个什么鬼?玩过低功耗吗,有啥意义?低功耗是个大领域!WhoisthemostNB!何出此言?低功耗咋实现的?P=UI,知道不?电流不变,你说功耗和谁成正比?低功耗的设计准则1)电源低2)时钟慢3)系统静供电电压:1.8-3.6V我吃的少、干得多时钟多源:32.768K、800K、8M够用就好,绝不浪费睡眠更省电五种睡眠模式,任君选择多管齐下,功耗最低可达:0.1UAMSP430超值产品线竞争对手预览典型的电池供电应用中,99到99.9%的时间处于睡眠模式MSP430与8位单片机对比功耗更低;低至什么程度呢?

(参数@2.2V)

0.1μARAM保持0.4μA睡眠模式

(VLO)0.7μA实时时钟模式

从睡眠模式下唤醒

<1μs

低10倍的功耗睡眠模式功耗对比

@3V(uA)012345678PIC12F508AtmelATTinySTM8L151MSP430腻害不?超低功耗特性集成模拟模块开发简单BORMPYAESDMASub1GHzRFADC12(A)SVSSVMComp_BUSCILDOPMMRTC_A/BLCDCC430Speed25MhzFlash8-16kBRAMto4kBGPIO40BORMPYEDIUSBADC10,12(A)DMAAESComp_BSVSSVMRTC_A/BUSCILDOPMMRTC_A/BF5xxSpeed25MhzFlash8-256kBRAMto16kBGPIO32-83BORLCDDAC12MPYComp_ADMAOpAmpSVSUSCI/WDT+USARTUSCIESP430SIFBasicTimerRTC_CSD16(_A)ADC10,12F4xxSpeed8/16MhzFlash4-120kBRAMto8kGPIO14-80BORADC10,12SD16_ADAC12MPYSVSComp_A+DMAOpAmpUSCIUSIBORADC10Comp_A+TempUSIF2xxSpeed16MhzFlash1-120kBRAMto8kB

GPIO10-64G2xxSpeed16MhzFlash0.5-2kBRAM120kB

GPIO10$0.25Comp_ADAC12BORSVSDMAMPYUSARTADC10.12F1xxSpeed8MhzFlash1-60kBRAMto10kBGPIO14-48MSP43016-bitRISCCPU共有特性:

16-bittimersWatchdogTimerInternalDigitallyControlledOscillatorExt32-kHzcrystalsupport<50nApinleakage<6µswakeupMSP430产品列表集|200+器件命名规则作业

1)简述超低功耗单片机特点?

2)简述超低功耗单片机系统的设计原则?

3)超低功耗单片机的应用场合是什么?

4)MSP430的主要特点是什么?

第二章

MSP430系列单片机概述2.1MSP430F169的结构外设很丰富16位定时器12位AD转换12位DA转换比较器外设很丰富I2C总线DMAUSARTMSP430x1xx:31款不同的MCU

USART:SPI+UART28

16位精简指令集高度正交化,支持7种寻址方式正交化设计,每条指令全部支持7种寻址方式

寄存器资源丰富

寄存器操作为单周期

16位地址总线

常数发生器

直接的存储器到存储器访问MSP430CPU的主要特点:2.2MSP430F169的中央处理器1.寄存器寻址 例:MOVR4, R52.变址寻址

例:MOVR5, x(R4)3.符号寻址

例:MOVR6, label4.绝对寻址 例:MOVR7, &variable5.寄存器间接寻址

例:MOV@R9, R4

6.寄存器间接增量寻址

例:MOV@R5+

, R67.立即数寻址 例:MOV#1000h

,R4CPU寄存器资源丰富,16个16-bit寄存器R0~R15。其中,R0~R3具有特殊功能:程序计数器R0/PC、堆栈指针R1/SP、状态寄存器R2/SR/CG1和常数发生器R3/CG2;R4~R15为通用寄存器。程序计数器PC

程序计数器PC总是指向程序存储器中下一条将要执行的指令的地址。MSP430指令长度分别为2、4或6字节长,PC相应递增。

PC内容总是偶数,指向偶字节地址。PC是16位寄存器,可以寻址64K存储空间,对程序存储器的访问以字为单位。在执行条件或无条件转移指令、调用指令或响应中断时,程序计数器PC都会被赋新值,其他情况下,程序计数器PC的值自动增加。堆栈指针SP

堆栈是遵循“先入后出”原则的特殊数据存储区,用来保护现场数据:(1)系统调用子程序或进入中断服务程序时,将PC值(程序未跳转之前的值)压入堆栈进行保护,然后程序计数器PC被赋予子程序入口地址或中断向量地址,执行子程序或中断服务程序。子程序或中断服务程序执行完毕后,遇到返回指令,则将堆栈的内容送到程序计数器PC中,程序又返回主程序继续执行;(2)堆栈可在函数调用期间保存寄存器变量、局部变量和参数等。

堆栈指针SP则总是指向堆栈的顶部,即栈顶。根据堆栈地址的生成方向,堆栈可分为“向下增长型(高地址向低地址增长)”或“向上增长型(低地址向高地址增长)”。

MSP430堆栈属于“向下增长型”,即系统在将数据压入堆栈时,即压栈,总是先将堆栈指针SP值减2,然后再将数据送到SP所指向的RAM单元中。将数据从堆栈中弹出,即弹栈,与压栈过程相反:先将数据从SP所指向的内存单元中读取出来,再将SP值加2。状态寄存器SR

状态寄存器SR/R2反映了程序执行过程中控制器的现场状态,用于指示ALU的运算结果状态以及CPU、时钟状态等。15~9876543210Bit8V溢出标志位,当算术运算结果超出有符号数范围时置位,否则为0Bit7SCG1系统时钟控制位1。置位,禁止SMCLK。Bit6SCG0系统时钟控制位0。复位,使能直流发生器;SCG0置位,且DCOCLK没有被用作MCLK或SMCLK时,直流发生器才能被禁止。Bit5OSCOFF晶体控制位。

复位,激活LFXT1。OSCOFF置位且LFXT1CLK不用于MCLK或

SMCLK时,LFXT1禁止;

置位,使晶体振荡器处于停止状态。设置OSCOFF=1必须同时设置

CPUOFF=1,只有系统允许的外部中断或NMI可唤醒CPU。

Bit4CPUOFFCPU控制位。置位使CPU进入关闭模式,此时除了

RAM内容、端口、寄存器保持外,CPU处于停止状态,可用所有允许的中断将CPU从此状态唤醒。

0CPU进入关闭模式

1CPU处于工作状态Bit3GIE可屏蔽中断控制位。置位允许可屏蔽中断,复位禁止所有可屏蔽中断。该位由中断复位,RETI指令置位,也可以用指令改变。

0允许可屏蔽中断

1禁止所有可屏蔽中断Bit2N负标志,当运算结果为负时置位,否则为0。Bit1Z零标志,当运算结果为0时置位,否则为0。Bit0C进位标志,当运算结果产生进位时置位,否则为0。

常数发生器CG1和CG2

R2和R3为常数发生器,利用CPU的27条内核指令配合常数发生器可以生成一些简洁高效的模拟指令。表

CG1、CG2产生常数值通用寄存器

R4到R15为通用工作寄存器。具有暂存运算结果,执行算数逻辑运算等功能,是控制器访问最频繁的场所,可以进行字节、字操作,可作为地址指针或数据寄存器,使用通过寄存器可以大大提高程序的执行效率,当中断发生时,需对其内容进行保护。2.3系统复位和工作模式2.3.1系统复位和初始化1.系统复位

MSP430系列单片机有两种复位方式:上电复位POR(Power–OnReset);上电清除PUC(Power–UpClear)。不同的信号可触发不同的复位方式,而系统初始化的状态取决于复位方式。(1)POR信号在以下3种事件发生时会产生:器件上电RST/NMI引脚配置为复位模式,当此引脚出现低电平信号当PORON=1时,SVS处于低电平状态(2)PUC信号的产生与POR有一定关系,其由以下事件产生:POR信号发生时看门狗模式下,看门狗定时器溢出向看门狗控制寄存器写入错误的安全键值片内Flash写入错误的安全键值POR信号产生会使系统复位并产生PUC信号,而PUC信号产生不会导致POR信号的产生。系统复位后(PUC或POR),从地址0FFFEH开始读取复位中断向量,程序会从中断向量所指向的地址开始执行。系统复位(POR信号)后,系统的初始状态为:

引脚配置为复位模式I/O引脚配置为输入模式状态寄存器复位看门狗定时器进入看门狗模式程序计数器(PC)装入复位向量地址0FFFEH,CPU从此地址开始执行外围模块被初始化,其寄存器的值为默认值(参考相关数据手册)软件初始化工作系统复位后,用户需使用软件进行必要的初始化工作:初始化堆栈指针SP,一般指向RAM顶部按实际应用要求初始化看门狗按实际应用要求配置片内外设典型复位电路MSP430单片机典型复位电路有三种:(1)RST/MIN引脚上接100K上拉电阻;(2)在(1)的基础上,再在

引脚处接0.1uf的电容,电容一端接地,可使复位更加可靠;(3)在(2)的基础上,再在电阻上并接一个型号为IN4008的二极管,可以可靠的实现系统断电后立即上电。MSP430有1种活动模式(AM)和5种低功耗模式(LPM0、LPM1、LPM2、LPM3和LPM4),而不同的工作模式是通过设置状态寄存器SR的SCG1,SCG0,CPUOFF,OSCOFF等位来设置的。模式控制位CPU状态振荡器及时钟状态AMSCG1=0SCG01=0OscOFF=0CPUOFF=0CPU、MCLK、SMCLK、ACLK均处于活动状态LPM0SCG1=0SCG0=0OscOFF=0CPUOFF=1CPU、MCLK禁止,SMCLK、ACLK活动LPM1SCG1=0SCG0=1OscOFF=0CPUOFF=1CPU禁止,如果DCO未用做MCLK或SMCLK,直流发生器被禁止,否则仍保持工作;SMCLK、ACLK活动;LPM2SCG1=1SCG0=0OscOFF=0CPUOFF=1CPU、MCLK、SMCLK、DCO禁止;如果DCO未用做MCLK或SMCLK,则自动禁止;直流发生器保持工作;ACLK活动;LPM3SCG1=1SCG0=1OscOFF=0CPUOFF=1CPU、MCLK、SMCLK、DCO禁止;直流发生器被禁止;ACLK活动;LPM4SCG1=1SCG0=1OscOFF=1CPUOFF=1CPU和所有的时钟被禁止2.模式及功耗在各个模式下,MSP430单片机功率消耗与工作模式、供电电压、振荡频率等有关,图2.7给出了在1MHz振荡频率下,不同供电电压下各模式功耗情况。2.4MSP430存储器结构与FLASH操作

MSP430系列的存储空间采用“冯-诺依曼”结构,一共64KB空间,ROM、RAM在同一地址空间,使用一组地址数据总线,空间包括:程序存储器、数据存储器、I/O口、特殊功能寄存器SFR、外围模块等。1.FLASH/ROMFLASH/ROM的起始地址取决于单片机FLASH/ROM的大小,从而不尽相同,但其终止地址都为0FFFFH。Flash可用于存储代码或者数据,用户还可把重要的字节或字表格存储在Flash中,且用前无需将其复制到RAM区。中断向量映射于Flash/ROM地址的最高16个字中,优先级最高的中断向量位于Flash/ROM地址空间的最高位置(0FFFEH)。2.RAMRAM的起始地址为0200H。RAM的结束地址取决于单片机RAM的大小。RAM可用于存放程序代码或者数据。

3.片内外设模块外部设备模块被映射于地址空间之中。0100-01FFH为16位外部设备而保留。访问此模块应该使用字指令。如果使用了字节指令,则只有偶地址访问设备被允许,高字节位总是全部为0。010-0FFH为8位的外部设备而保留。访问此模块是可使用字节指令,如果用字指令读取字节模块,将导致高8位产生不可预见的数据;如果用字指令去写8位设备寄存器,则仅仅低8位被写入到设备寄存器中,而高8位的数据将会被忽略。

4.特殊功能寄存器一些片上外设的功能需要用特殊功能寄存器(SFR)设置。SFR位于地址空间的低16字节中,以字节的方式组织起来的。SFR只允许被字节指令所访问。关于各个位数据的具体应用还请参照相关数据手册。2.4.2FLASH操作MSP430F16X单片机有嵌入式FLASH存储器,是电可擦除的可编程存储器,可以按位、字节和字访问,并且可进行编程和擦除,其主要特点有:Ø

可进行位、字节和字编程操作;Ø产生内部编程电压;Ø超低功耗操作;Ø可通过JTAG、BSL和ISP编程;Ø保密熔丝烧断后不能再用JTAG进行任何访问;Ø1.8~3.6V工作电压,2.7~3.6V编程电压;Ø擦除/编程次数可达10万次,数据保持时间从10年到100年不等;Ø60KB空间编程时间小于5秒;Ø支持段擦除和多段模块擦除。时序发生器的读/写频率f(FTG)为257kHz~476kHz,发生器时钟来自ACLK、MCLK和SMCLK,经过分频器处理后得到适合的时钟,产生fx信号,即f(FTG)信号,是时序发生器的真正时钟源。时序发生器产生的信号包括:FLASH存储器阵列地址锁存和数据锁存信号、编程电压发生器所需信号等。如图,BUSY信号表示锁存器状态,WAIT信号表示FLASH操作的状态,EMEX位可实现FLASH操作的紧急退出。

时序发生器FLASH存储结构FLASH存储器可分为主存储器和信息存储器两部分,两者在操作上没有区别,程序代码和数据可以存储在任意一部分。两者的主要区别是段大小和物理地址的不同。主存储器有两个或更多的512字节的段,信息存储器有两个128字节的段FLASH操作1.寄存器介绍FLASH编程、擦除等操作首先要对3个控制寄存器(FCTL1、FCTL2和FCLT3)进行设置,为了防止编程和擦除周期出现错误,使用安全键值,错误的口令将产生非屏蔽中断请求。安全键值位于每个控制字的高字节,读时为96H,写时为A5H。(1)FCTL1控制寄存器FCTL1,16位寄存器,地址0128H,该寄存器定义了FLASH模块的擦除和编程操作的控制位。各位定义如下:15…876543210安全键值BLKWRTWRTReservedReservedReservedMERASMRASEReservedrw-0rw-0r0r0r0rw-0rw-0r0r0Bit15-8安全键值该字段读出的内容总是96H,写入时必须为A5H,否则会引起PUC复位。Bit7BLKWRT块写模式位。如果有较多的连续数据要编程到某一段或某几段,则可选择这种方式,这样可以缩短编程时间。当EXEX置位时,BLKWRT自动复位。在一段程序写入完毕再编程其它段时,需对该位先复位再置位,在下一段指令执行前WAIT位应为1。0:块写模式关闭;1:块写模式开启。Bit6WRT

写模式使能位。

0:写模式关闭。为0时对FLASH写操作,非法访问,ACCVIFG位置位。1:写模式开启。Bit2MERAS

主存控制擦除位。0:不擦除。1:主存全擦除,对主存空写时启动擦除操作,操作完成后MERAS自动复位。Bit1ERASE

擦除一段控制位。0:不擦除。1:擦除一段。由空写指令带入段号来指定擦除哪一段,操作完成自动复位。擦写操作关系表BLKWRTWRT写入操作MERASERASE擦除操作X0写模式关闭00不擦除01字节/字写入01只擦除单个段11块写入10擦除所有的主程序段

11擦除所有的主程序段和信息段FCTL2控制寄存器FCTL2,16位寄存器,地址012AH,该寄存器定义了FLASH模块的擦除和编程操作所需要的时钟。各位定义如下:15

8765

0安全键值FSSELxFNx

Bit15-8安全键值该字段读出的内容总是96H,写入时必须为A5H,否则会引起PUC复位。Bits7-6

FSSELx该两位用来定义FLASH模块控制器时钟源的选择。复位值01。

00ACLK;

10SMCLK;

01MCLK;

11SMCLK;Bits5-0

FNx此6位定义了时钟分频系数。分频系数为FNx的值加1,当FNx=00H,则分频系数为1。

rw-0rw-1

rw-0FCTL3控制寄存器FCLT3,16位寄存器,地址012CH,该寄存器用于控制FLASH存储器操作,保存相应的状态标志和错误条件。其各位定义如下:15…87654321

0安全键值ReservedReservedEMEXLOCKWAITACCVIFGKEYVBUSYr0r0rw-0

rw-1

r-1

rw-0

rw-(0)

rw-(0)在PUC期间,其控制位置位或者复位WAIT,但在POR期间KEYV被复位。Bit15-8安全键值该字段读出的内容总是96H,写入时必须为A5H,否则会引起PUC复位。

Bit5EMEX

紧急退出位。FLASH操作发生错误时置位该位紧急退出操作。

0:无紧急退出

1:紧急退出Bit4LOCK锁定位。控制是否对FLASH存储器加锁。在字节/字写入或擦除期间,置位该位,使操作正常结束。在块编程模式,若BLKWRT=WAIT=1,置位LOCK,则BLKWRT和WAIT都将复位,块编程模式结束。如果在块编程模式中发生非法访问,则ACCVIFG和LOCK将置位。0:不加锁,允许对FLASH操作

1:加锁,禁止对FLASH操作Bit3WAIT

等待指示位。该位指示FLASH正在进行写操作,该位为只读。0:FLASH正在操作,不能进行下字节/字写操作。

1:FLASH完成当前操作,可以进行下一字节/字写操作。Bit2ACCVIFG

非法访问中断标志位。该位只能软件清零。

0:没有对FLASH存储器的非法访问中断

1:有对FLASH存储器的非法访问中断Bit1KEYV安全键值出错标志位。

0:安全键值正确;

1:安全键值错误Bit0BUSY忙标志位。该位表示FLASH时序发生器当前状态,FLASH操作启动时该位自动置1,操作完成后自动复位。用户在FLASH操作之前要检查该位。0:不忙;1:忙IE1寄存器IE1寄存器为8位寄存器,中断允许寄存器。与FLASH操作有关的位只有第5位ACCIE,该位是FLASH非法访问中断允许位。当该位为1时,中断允许;当该位为0时,中断禁止。76543210

ACCVIE

rw-0擦除周期

字节/字节写入周期块写入时间周期注:1.单字节/字写入可以从Flash或者RAM发起,二者在操作、功耗上都有所区别:从FLASH发起用户不需检测BUSY位,从RAM发起用户需要要判断BUSY位;2.块写入模式只能从RAM发起,而不能从FLASH发起。FLASH存储器块写入:voidflash_write_block(char*ptr,char*from,intlen){_DINT();while(FCTL3&BUSY);FCTL3=FWKEY;//Lock=0开锁FCTL1=FWKEY+BLKWRT+WRT;//使能块写入模式while(len){

*ptr++=*from++;//向flash写入数据len--;while(!(FCTL3&WAIT));

//判断WAIT信号,为1可进入下一字节写入}FCTL1=FWKEY;//BLKWRT清0while(FCTL3&BUSY);FCTL3=FWKEY+LOCK;//置位LOCK_EINT();}2.5MSP430的基础时钟模块MSP430基础时钟模块与其低功耗相匹配,用户可以利用三种时钟信号,找到功能实现和低功耗的平衡。基础时钟模块无需外部器件,利用一个外部电阻、一个或两个外部晶振或者谐振器,在软件的配置控制下,为系统提供时钟信号。MSP430基本时钟模块包含两个或三个时钟源:(1)LFXT1CLK:低频/高频振荡器。可外接32768Hz的时钟芯片,或者450kHz~8MHz的标准晶体或谐振器;(2)XT2CLK:高频振荡器。外接450kHz~8MHz的标准晶体、谐振器和外部时钟源。较常用的晶体振荡器是8MHZ;(3)DCOCLK:内部数控RC振荡器。注:MSP430系列单片机中的型号不同,时钟模块也有所不同,但这些模块产生出来的结果是相同的。如MSP430x20xxLFXT1不支持高频模式,没有XT2,不支持晶体振荡器;MSP430x21xx没有内部低功耗/低频振荡器,没有XT2,不支持晶体振荡器;在MSP430F13、14中是有XT2振荡器的,而MSP430F11X,F11X1中是用LFXT1CLK来代替XT2CLK时钟信号的.在时钟模块中有3个(对于F13,F14)时钟信号源(或2个时钟信号源,对于F11X、F11X1)。MSP430单片机时钟模块有3个时钟信号输出,可满足内部电路的不同需要:(1)ACLK:辅助时钟信号。ACLK是从FLXT1CLK信号经1/2/4/8(由BCSCTL1寄存器设置DIVA相应位设置)分频后得到。ACLK可用于提供CPU外围功能模块作时钟信号使用。(2)MCLK:主时钟信号。MCLK的振荡源可由软件配置选择来自LFXT1CLK、XT2CLK(部分型号有)或DCOCLK。MCLK经1/2/4/8分频(软件设置)后给CPU或系统提供时钟信号。(3)SMCLK:子系统时钟信号。SMCLK的振荡源可由软件配置选择来自LFXT1CLK、XT2CLK(部分型号有)或DCOCLK。SMCLK经1/2/4/8分频后(软件设置)给各独立外设模块提供时钟信号。当处理器发生PUC复位后,MCLK和SMCLK的振荡源来自DCOCLK(默认值为800kHz),ACLK振荡源来自LFXT1(处于低频模式)。设置状态寄存器SR的SCG0,SCG1,OSCOFF和CPUOFF位,可以设置CPU的操作模式,使能或关断部分基础时钟模块。基础时钟模块可以在程序运行的任何时候用软件进行配置。2.5.1.1低频振荡器LFXT1低频振荡器LFXT1是MSP430各系列单片机所必有的,在使用32.768KHz外部时钟晶振并处于低频LF模式时(XTS=0),电流消耗非常小。2.5.1.2XT2CLK高频振荡器MSP430部分器件(X13X、X14X、X15X、X16X、X43X、X44等)有高频振荡器XT2。XT2为XT2CLK提供时钟源,特性与XT1在HF模式下相同。MSP430外接高频振荡器XT2的频率为450kHz~8MHz。系统频率和系统工作电压关系紧密,二者关系如图。2.5.2时钟模块的寄存器DCO.2DCO.1DCO.0MOD.4MOD.3MOD.2MOD.1MOD.0DCOCTL寄存器DCOCTL寄存器各位定义如下:6543210Bit7~6DCOx

定义8种频率之一,可分段调节DCOCLK频率,相邻两种频率相差10%。Bit4~0MODx

定义在DCOx对应的频率和DCOx+1的对应频率之间调整(细调)。

MODx负责混合两个DCO频率fDCO

和fDCO+1之间产生一个有效的频率并扩展时钟驱动能力,减少电磁干扰。XT2OFFXTSDIVA.1DIVA.0XT5VRsel.2Rsel.1Rsel.0BCSCTL1寄存器BCSCTL1是一个8位的基本时钟系统控制寄存器1,该寄存器的位分配如图下。6543210Bit7XT2OFF控制XT2振荡器的开启与关闭。

0开启

1关闭(默认为关闭)Bit6XTS控制LFXT1工作模式,选择须结合实际晶体振荡器的连接情况。0LFTX1工作在低频模式(默认)1LFTX1工作在高频模式(必须连接相应的高频时钟源)Bit5~4DIVA.x控制ACLK分频00不分频(默认)012分频104分频118分频Bit3XT5V此位设置为0。Bit2~0RSELx控制某个内部电阻以决定标称频率000选择最低的标称频率

111选择最高的标称频率SELM.1SEML.0DIVM.1DIVM.0SELSDIVS.1DIVS.0DCORBCSCTL2寄存器6543210Bit7~6SELMx

选择MCLK时钟源。

00时钟源为DCOCLK(默认)

01时钟源为DCOCLK10时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CLK(对于MSP430F13/14/15/16X)

11时钟源为LFXTICLKBit5~4DIVMx

选择MCLK分频。

001分频

012分频

104分频

118分频Bit3SELS选择SMCLK时钟源。0时钟源为DCOCLK(默认)

1时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CLK(对于MSP430F13/14/15/16X)Bit2~1DIVSx选择SMCLK分频001分频012分频104分频118分频Bit0DCOR选择DCO电阻0选择内部电阻1选择外部电阻

OFIE

IE1寄存器IE1是一个8位的中断使能寄存器,该寄存器各位定义如下。6543210rw-0OFIE:晶体出错中断使能控制位。

0中断不允许

1中断使能

OFIFG

IFG1寄存器IFG1是一个8位的中断标准寄存器,该寄存器各个位定义如下:76543210rw-1OFIFG:晶体出错中断标志。

0没有中断产生

1有中断产生PUC复位后,DCOCLK为默认MCLK时钟信号,根据实际需要可再设置。设置顺序:(1)复位OSCOFF;(2)清除OFIFG;(3)延时等待t≧50us;(4)检查OFIFG,若置位,重复(3)、(4)步骤,直到OFIFG=0;

设置MCLK取自XT2,SMCLK取自MCLK且八分频。#include"msp430x16x.h"voidint_clk(){uchari;BCSCTL1&=~XT2OFF;//打开XT振荡器BCSCTL2|=SELM1+SELS+DIVS_3;//MCLK8MandSMCLK1M

do{IFG1&=~OFIFG;//清除振荡错误标志

for(i=0;i<100;i++) _NOP(); //延时等待

}while((IFG1&OFIFG)!=0); //如果标志为1继续循环等待IFG1&=~OFIFG;}MSP430中断源很多,每个中断源都有指定的优先级,离CPU越近的模块,其优先级越高。中断优先级决定了,当多个中断来临时,优先级高的中断先被响应。MSP430中断分为3种:

(1)系统复位(2)不可屏蔽中断(3)可屏蔽中断中断嵌套多个中断请求发生时,CPU首先响应最高优先级中断。中断响应后,自动关闭总中断(GIE复位),则不会响应其它中断。在中断服务程序中打开总中断,才可产生中断嵌套。实现中断嵌套需要注意以下几点:(1)多个中断同时到来,按优先级来执行,即中断优先级只体现在多个中断同时到来时,高优先级先响应;(2)对于单源中断,只要响应中断,系统硬件自动清中断标志位;对于多中断源的标志位保持,需软件复位(对于定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位被自动清除)。中断向量和特殊功能寄存器中断源中断标志系统中断字地址优先级上电、外部复位、看门狗、FLASHWDTIFG,KEYV①RESET0FFFEH15NMI、振荡器错误、Flash非法访问NMIIFG①③,OFIFG①③,ACCVIFG①③不可屏蔽0FFFCH14Timer_B7TBCCR0CCFIG②可屏蔽0FFFAH13Timer_B7TBCCR1~TBCCRC6CCFIGx,TBIFG①②可屏蔽OFFF8H12比较器ACAIFG可屏蔽0FFF6H11看门狗定时器WDTIFG可屏蔽0FFF4H10USART0接收URXIFG0可屏蔽0FFF2H9USART0发送/I2C发送/接收/其它UTXIFG0,I2CIFG可屏蔽0FFF0H8ADC12ADC12IFG①②可屏蔽0FFEEH7TIMER_A3TACCR0CCFIG②可屏蔽0FFECH6TIMER_A3TACCR1~TACCRC2CCFIGx,TAIFG①②可屏蔽0FFEAH5I/O口P1(8位标志)P1IFG.0~P1IFG.7①②可屏蔽0FFE8H4USART1接收URXIFG1

0FFE6H3USART1发送UTXIFG1

0FFE4H2I/OP2(8位标志)P2IFG.0~P2IFG.7①②可屏蔽0FFE2H1DAC12,DMADAC12_0FIG,DAC12_1FIG,DMA0IFG,DMA1IFG,DMA2IFG①②可屏蔽0FFE0H0最低UTXIE02URXIE0ACCVIENMIIE

OFIEWDTIE相关寄存器与中断相关的SFR有以下几种:(1)中断使能寄存器1中断使能寄存器1,8位寄存器,地址00H。使能某些模块中断。分配如下:76543210rw-0rw-0rw-0

rw-0

rw-0

rw-0Bit7UTXIE0 USART0:UART和SPI发送中断使能信号。Bit6URXIE0 USART0:UART和SPI接收中断使能信号。Bit5ACCVIE Flash访问错误中断使能信号。Bit4NMIIE 非屏蔽中断使能信号。Bit1OFIE 振荡器故障中断使能信号。Bit0WDTIE 看门狗定时器中断使能信号。

UTXIE1URXIE1

中断使能寄存器2中断使能寄存器2,8位寄存器,地址01H。使能某些模块中断。分配如下:76543210rw-0rw-0Bit5UTXIE1 USART1:UART和SPI发送中断使能信号。Bit4URXIE1 USART1:UART和SPI接收中断使能信号

UTXIFG0URXIFG0

NMIIFG

OFIFGWDTIFG中断标志寄存器1中断标志寄存器,8位寄存器,地址02H,指示相应模块中断标志位。分配如下:76543210rw-1rw-0rw-0

rw-0

rw-0其各位意义如下:Bit7UTXIFG0 USART0:UART和SPI发送标志位。Bit6URXIFG0 USART0:UART和SPI接收标志位。Bit4NMIIFG 通过引脚设置。Bit1OFIFG 振荡器失标志位。Bit0WDTIFG 溢出或安全值错误;Vcc上电复位;

UTXIFG1URXIFG1

中断标志寄存器2中断标志寄存器2,8位寄存器,地址03H,指示相应模块的中断标志位,分配如下:76543210rw-1rw-0其各位意义如下:Bit5UTXIFG1 USART1:USART和SPI发送标志位。Bit4URXIFG1 USART1:USART和SPI接收标志位。UTXE0URXE0,USPIE0

中断使能寄存器1中断使能寄存器1,8位寄存器,地址04H,使能相应模块中断,分配如下:

76543210rw-0rw-0其各位意义如下:Bit75UTXE0 USART0:USART发送使能。Bit6URXE0 USART0:USART接收使能。

USPIE0 USART0:SPI(同步外设接口)发送和接收使能。

UTXE1URXE1,USPIE1

中断使能寄存器2中断使能寄存器1,8位寄存器,地址05H,使能相应模块中断,分配如下:76543210

rw-0rw-0=其各位意义如下:Bit5UTXE1 USART1:UART发送使能。Bit4URXE1 USART1:UART接收使能。USPIE1 USART1:SPI(同步外设接口)发送和接收使能。电源监测模块SVS2.7.1电源监测模块概述包括MSP430F16X在内的部分MSP430单片机片内具有电源电压监测模块(SVS:supplyvoltagesupervisor),用来监控AVCC供电电压或外部电压,它可以保证单片机工作于正常的电压。当AVCC或外部电压降低到用户选择电压值以下,SVS会产生一个POR复位信号或设置标志。SVS的主要特点:AVCC电压监测;可选的POR复位信号;软件可设置SVS比较器输出信号;锁存低电压状态,并可由软件处理;可选择的14个门限电压;可以监控外部输入电压。VLDxPORONSVSONSVSOPSVSFG电源管理系统寄存器SVS只应用于控制的寄存器SVSCTL,POR之后复位。该寄存器定义如下:76543210RW-0+RW-0+RW-0+RW-0+RW-0+R+R+RW-0+Bit4~7VLDx

电压等级检测。这些位开启SVS和选择SVS的工作门限电压。这些参数需要参考数据手册,以下为SP430F169参数。0000 SVS关闭0001 1.9V0010 2.1V0011 2.2V0100 2.3V0101 2.4V0110 2.5V0111 2.65V1000 2.8V1001 2.9V1010 3.05V1011 3.2V1100 3.35V1101 3.5V1110 3.7V1111将SVSIN的外部输入电压与1.2V进行比较Bit3PORONPOR开启。该位使能SVSFG标志位产生POR信号使设备复位。0 SVSFG不产生POR1 SVSFG产生PORBit2SVSONSVS开启。该位反映SVS的工作状态,但是不开启SVS。SVS的开启是通过设置VLDx>0实现的,0 SVS状态关闭1 SVS状态开启Bit1SVSOP SVS输出。该位反映SVS比较器的输出值。0 SVS比较器输出为低1SVS比较器输出为高Bit0SVSFG SVS标志位。该位指示一个低电压条件。低电压条件产生后,SVSFG会保留到通过软件复位。0 没有低电压条件出现1存在或者有低电压条件产生设置SVS,使Vcc低于2.65V时,产生POR复位。实例代码如下。

#include<msp430x16x.h>voidmain(void){ WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

SVSCTL=0x70+PORON;//2.65V,使能SVSPOR

for(;;)

……}第三讲MSP430单片机C语言程序设计基础

C语言支持大多数类型的单片机的程序开发,有很强的通用性;

C语言为结构式语言,既有高级语言的特点,又有汇编语言的特点,其编写不依赖计算机硬件的应用程序;C语言简洁紧凑、运算符丰富、程序设计自由度大、可移植性好、开发迅捷,是单片机进行开发的首选语言。C语言与汇编语言混合编程:C语言来构建程序框架,用汇编程序作为子程序处理对效率要求高的相关应用。

3.1IARC430语言基础

适用于MSP430系列的C语言简称C430,C430是在标准的C语言基础上进行了扩展。

3.2IARC430编译器支持的数据类型C430的数据类型可分为:基本类型指针类型枚举类型两种扩展类型基本类型(1)整型表3.1IARC430编译器支持的整型数据类型类型字节数据取值范围说明基本型short2-32768~32767短整数int2-32768~32767整数long4-231~231-1长整数标识型unsignedshort20~65535无符号短整数unsignedint20~65535无符号整数unsignedlong40~232-1无符号长整数

(2)实型

实数(realnumber)又称浮点数(floating-pointnumber),指带小数的数值型数据,IARC430编译器的浮点数为32位或者64位。表3.2IARC430编译器支持的实型数据类型类型字节数据取值范围说明float4±1.18E38~±3.39E+38浮点数double4±1.18E38~±3.39E+38双精度浮点数longdouble4±1.18E38~±3.39E+38长双精度浮点数注意:所有的实型常量其类型均为双精度型。

(3)字符型表3.3IARC430编译器支持的字符型数据类型类型字节数据取值范围说明unsignedchar10~255无符号字符char10~255等效于unsignedcharsignedchar1-128~127有符号字符2.指针类型

枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开;第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1;可以人为设定枚举成员的值,从而自定义某个范围内的整数;枚举型是预处理指令#define的替代;类型定义以分号;结束

枚举的定义枚举类型定义的一般形式为:

enum枚举名{枚举值表};

注:在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。例:enumweekday{sun,mou,tue,wed,thu,fri,sat};

该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为

weekday类型变量的取值只能是七天中的某一天。2.枚举变量的说明:即先定义后说明,同时定义说明或直接说明。设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:enumweekday{sun,mou,tue,wed,thu,fri,sat};enumweekdaya,b,c;enumweekday{sun,mou,tue,wed,thu,fri,sat}a,b,c;enum{sun,mou,tue,wed,thu,fri,sat}a,b,c;main(){enumweekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;a=sun;b=mon;c=tue;printf("%d,%d,%d",a,b,c);}

#ifdef__IAR_SYSTEMS_ASM__#defineDEFC(name,address)sfrbname=address;#defineDEFW(name,address)name=address;#endif/*__IAR_SYSTEMS_ASM__*/

表3.10IARC430编译器支持的整型数据类型类型字节数据取值范围说明sfrb100H~FFH字节类型的特殊功能寄存器或外围模块sfrw1100H~1FFH字类型的特殊功能寄存器或外围模块unsignedchar10~255无符号字符char10~255等效于unsignedcharsignedchar1-128~127有符号字符short2-32768~32767短整数int2-32768~32767整数unsignedshort20~65535无符号短整数unsignedint20~65535无符号整数long4-231~231-1长整数unsignedlong40~232-1无符号长整数pointer20000H~0FFFFH指针enum1~4枚举

Switch(I){Case0: …;

break;Case1: …; break;…break;Default: …;

break;}(2)Switch语句注意:switch语句执行完某一个分支时一定要加break,意为跳出switch语句,否则还会继续执行下面的分支。

Switch(I){Case0: …;

break;Case1: …; break;…break;Default: …;

break;}(2)Switch语句注意:switch语句执行完某一个分支时一定要加break,意为跳出switch语句,否则还会继续执行下面的分支。

函数定义的一般形式:类型说明符函数名(参数列表)如:Inta=0,b=0,c;-全局变量intfunc(chara,charb);-定义函数Intmain(void)-主函数{ c=func(a,b);-调用函数}Intfunc(chara,charb)-实现函数{ intc;-局部变量 c=a+b;returnc;}

3.5C语言的运算符算数运算符: +、-、*、/; %-模运算(如5%2=1); ++、--;逻辑运算符: >、>=、<、<=、==、!=、&&、||、!、=;()-强制转换,如(int)a—将a转换为整型; …符号含义&按位与|按位或^按位异或~按位取反。一元运算符<<左移操作。左边移出的位舍去,右边移入的位补0>>右移操作。右边移出的位舍去,左边移入的位对无符号数补0;对有符号数补符号位

位运算符

位运算(&,|,^,~,<<,>>)1&1=1,1&0=0;0&1=0;0&0=01|1=1,1|0=|;0|1=1;0|0=01^1=0,1^0=0;0^1=1;0^0=0~1=0,~0=1;0x8f&0x80=0x80;1000,1111&1000,0000=1000,00000x80|0x01=0x81;1000,0000|0000,0001=1000,00010x80^0x01=0x81;~0x01=0xfe;0x01>>1结果为0;0x01<<1结果为0x20

例:unsignedcharx=0x55;unsignedchary=0x37;unsignedcharz;z=x&y; 则 z=0x15z=x|y; 则 z=0x77z=x^y; 则 z=0x62z=~x; 则 z=0xAAz=x<<2; 则 z=0x54z=x>>1; 则 z=0x2A3.6程序设计的三种基本结构

顺序结构、选择结构、循环结构。 控制语句为:

If…else…、for、while、do…while、continue、break、switch…case、goto、return;

如:if(a>=b)c=a; elsec=b; for(I=0;I<100;I++){} while(a>0);do{}while(a>0);

3.7C语言中的IO操作

回顾:数组、指针、结构、联合intarray[5]={1,2,3,4,5};int*pointer;structdate

{

intmonth;

intyear;

}date1;

unionnum{

inta;

charb;

}num1;

Array[0]=date1.month;

Array[1]=num1.a;

3.8C语言上机过程

例.

用按键控制节日彩灯显示的变化

方法1:端口2使用字节操作

方法2:

端口2使用位域方法第四讲MSP430的IO结构及应用一、MSP430F169单片机内部资源

MSP430系列单片机端口包括型号不同,包含的端口种类也不同,具体可见各数据手册。MSP430F169单片机具有丰富的I/O资源,共有6组I/O端口,P1~P6,每组I/O端口可独立编程且有8个引脚,但不提供位操作指令。每个I/O引脚可做普通输入输出引脚,也可做第二功能引脚。P1、P2口的每个引脚都可以单独设置成中断,且可设置成边沿(上升沿、下降沿)触发。掌握:I/O的工作模式、接口电路及应用。

4.1I/O端口特点及结构MSP430F169单片I/O机的I/O口主要有以下特点:每个I/O端口可以独立进行位操作;每组I/O口输入、输出任意组合;P1、P2口支持中断,其触发边沿可编程选择;可编程选择引脚的第二功能,以适合不同的I/O操作;丰富的寄存器资源:每个端口具有独立的输入和输出控制寄存器;x=1、2,y=0~7x=3~6,y=0~7表4.1P1口引脚功能表PnSel.xPnDIR.x功能模块方向控制PnOUT.x复用功能输出PnIN.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论