msp430系列_单片机寄存器分类及功能1
MSP430寄存器手册
2-时钟模块
微控网为你准备的 MSP430F 单片机入门必修课
微控网
MSP430F1XX 系列时钟模块图 时基模块结构如上图 : MSP430 系列单片机基础时钟主要是由低频晶体振荡器,高频晶体振荡器,数字控制 振荡器(DCO),锁频环(FLL)及 FLL+等模块构成。由于 430 系列单片机中的型号不同, 而时钟模块也将有所不同。虽然不同型号的单片机的时基模块有所不同,但这些模块产 生出来的结果是相同的.在 MSP430F13、 14 中是有 TX2 振荡器的, 而 MSP430F11X,F11X1 中是用 LFXT1CLK 来代替 XT2CLK 时钟信号的.在时钟模块中有 3 个(对于 F13,F14)时钟 信号源(或 2 个时钟信号源,对于 F11X、F11X1): 1-LFXT1CLK: 低频 /高频时钟源.由外接晶体振荡器,而无需外接两个振荡电容器.较 常使用的晶体振荡器是 32768HZ。 2-XT2CLK: 高频时钟源.由外接晶体振荡器。需要外接两个振荡电容器,较常用 的晶体振荡器是 8MHZ。 3-DCOCLK: 数字可控制的 RC 振荡器。
微控网为你准备的 MSP430F 单片机入门必修课
微控网
1-复位模块
MSP430 单片机系统复位电路 从上 MSP430 系统复位电路功能模块图中可以看到了两个复位信号,一个是上电复位信 号 POR(Power On Reset)和上电清除信号 PUC(Power Up Clear)。 POR 信号是器件的复位信号,此信号只有在以下的事件发生时才会产生: □器件上电时。 □RST/NMI 引脚配置为复位模式,当 RST/NMI 引脚生产低电平时。 当 POR 信号产生时, 必然会产生 PUC 信号; 而 PUC 信号的产生时不会产生 POR 信号。 会引起产生 PUC 信号的事件: □POR 信号发生时。 □ 启动看门狗时,看门狗定时器计满时。 □ 向看门狗写入错误的安全参数值时。 □向片内 FLASH 写入错误的安全参数值时。 MSP430 单片机系统复位后器件的初始 当 POR 信号或 PUC 信号发生时引起器件复位后,器件的初始化状态为: □RST/NMI 引脚配置为复位模式。 □ I/O 引脚为输入模式。
msp430系列 单片机寄存器分类及功能1
两个外部振荡器失效时自动被选作MCLK的时钟源。
BCSCTL2:基本时钟控制系统寄存器
端口P1和P2
定时器
ACLK:辅助时钟,由LFXT1CLK信号经1、2、4、8分频得到,一般用于低速外设。 输出时钟信号 MCLK:系统主时钟,可用软件选择LFXT1CLK/XT2CLK/DC0CLK三者之一经1、2、4、8分频后得到主要用于CPU和系统。 SMCLK:子系统时钟,可用软件选择LFXT1CLK和DC0CLK或XT2CLK和DC0CLK经1、2、4、8分频后得到主要用于高速外围设备 PxDIR:输入输出方向寄存器,可按位操作,复位时输入(默认),置位时输出。 PxIN:输入寄存器,只读存储器不可写入。 PxOUT:输出寄存器,可按位操作,复位时输出低电平,置位时输出高电平。 PxIFG:中断标志寄存器,其中8个标志位分别对应8个引脚的中断请求。 PxIES:中断触发沿选择寄存器,复位时遇上升沿使相应标志位置位,置位时遇下降沿使相应标志位置位。 PxIE:中断使能寄存器,其中8位分别对应8个引脚是否允许中断,复位不允许,置位允许。 PxSEL:端口复用寄存器,复位时引脚为I/O口,置位时引脚为外围模块功能。 PxREN:上拉下拉电阻使能寄存器,复位禁止上拉/下拉电阻,置位允许。 WDTCNT:累加器,16为增计数器,不能读写,受WDTCTL控制。 WDTCTCL:控制寄存器。 IS0,IS1:计数次数选择,0时32768次/1时8192次/2时512次/3时64次。 SSEL:WDTCTCL时钟源选择器,复位时选SMCLK,置位时选ACLK。 WDT:看门狗定时器 CNTCL:置位时清除累加器WDTCNT。 TMSEL:工作模式选择寄存器,复位时看门狗模式,置位时定时器模式。 NMI:RST/NMI引脚功能选择,复位时为复位信号输入端,置位时此引脚为边沿触发的非屏蔽中断输入。 NMIES:出发边沿选择,复位时遇上升沿出发NMI中断,置位时下降沿触发。 HOLD:看门狗开关,复位时看门狗工作,置位时关闭看门狗。 SSEL1,SSEL0:时钟源选择位,00时选TACLK/01时选ACLK/10时选MCLK/11时选INCLK ID1,ID0:分频选择位,00不分频/01时2分频/10时4分频/11时8分频。 MC1,MC0:计数器模式控制位,00停止/01增计数/10连续计数/11先增后减计数 TACTL:TA控制寄存器。 CLR:定时器清除位,置位时清除累加器和输入分频器复位。 TAIE:定时器中断允许位,复位时禁止定时器溢出中断,置位允许中断。 TAIFG:定时器溢出标志位。 TAR:TA累加器。 CM1,CM0:捕获模式选择位,00禁止捕获/01上升捕获/10下降沿捕获/11上升沿下降沿都捕获 CCIS1,CCIS0:捕获事件输入源选择位,00选CCLxA/01选CCLxB/10选GND/11选Vcc SCS:捕获信号与时钟同/异步关系选择位,0异步捕获/1同步捕获 Timer-A:定时器A。 SCCIx:输入信号锁存备读出位 CAP:比较/捕获模式选择位,复位比较/置位捕获 OUTMODx:输出模式选择位,000输出/001置位/010PWM翻转或复位/011PWM置位或复位/100翻转/101复位/110PWM翻转或置位/PWM复位或置 CCTLx:捕获/比较控制寄存器 CCIEx:捕获/比较模块中断允许位,复位禁止中断,置位允许中断。 CCIx:在捕获模式下由CCIS0和CCIS1选择的输入信号可有该位读出,在比较模式下该位复位。 OUT:输出信号位,复位低电平,置位高电平。需OUTMODx位支持。 COV:捕获溢出标志位,0时无捕获溢出,1时发生捕获溢出。在比较模式下被复位。 CCIFGx:捕获比较中断标志位,捕获模式下CCRx值捕获TAR值时置位,比较模式下定时器TAR值等于CCRx值时置位。 CCRx:捕获/比较寄存器。在捕获方式中,满足捕获条件时,硬件自动写入当前TAR值。 TAIV:中断向量寄存器,其中值指向引起中断的中断源。 SSEL,DIV:控制BTCNT2的输入频率,00ACLK/01ACLk/256/10MCLK/11MCLK/256. HOLD:停止计数器。置位时BTCNT2停止工作,置位且DIV置位BTCNT1停止工作。 BTCTL:控制寄存器。
MSP430的I2C模块寄存器
本文为翻译的MSP430x1xx Family User's Guide家庭用户指南,且只有寄存器的翻译比较准确,其他地方阅读时请自行判断语句的准确性本文为翻译的MSP430x1xx Family User's Guide家庭用户指南,且只有寄存器的翻译比较准确,其他地方阅读时请自行判断语句的准确性本文为翻译的MSP430x1xx Family User's Guide家庭用户指南,且只有寄存器的翻译比较准确,其他地方阅读时请自行判断语句的准确性USART外围接口,I2C模式通用同步/异步接收/传输(USART)外设接口支持USART0 I2C通信。
本章介绍I2C模式。
在I2C模式在MSP430x15x和MSP430x16x器件上实现。
专题页面15.1 I2C模块简介..............................................15-215.2 I2C模块操作..............................................15-415.3 I2C模块寄存器............................................15-2015.3 I2C模块寄存器I2C模块寄存器如表15-4。
表15-4.I2C寄存器注册简称注册类型地址初始状态I2C中断使能 I2CIE 读/写 050hI2C中断标志 I2CIFG 读/写 051hI2C数据计数 I2CNDAT 读/写 052hUSART控制 U0CTL 读/写 070hI2C传输控制 I2CTCTL 读/写 071hI2C数据控制 I2CDCTL 只读 072hI2C预分频器 I2CPSC 读/写 073hI2C SCL高 I2CSCLH 读/写 074hI2C SCL低 I2CSCLL 读/写 075hI2C数据 I2CDRW/ I2CDRB 读/写 076hI2C自己的地址 I2COA 读/写 0118hI2C从地址 I2CSA 读/写 011AhI2C中断向量 I2CIV 只读 011ChU0CTL,UART0控制寄存器,I2C模式rw−0rw−0rw−0rw−0rw−0rw−0rw−0rw−1RXDMAEN 第7位接收DMA能。
MSP430寄存器解释
/************************************************************* USART 串口寄存器"UCTL","UTCTL","URCTL"定义的各个位可串口1 串口2公用************************************************************//* UCTL 串口控制寄存器*/#define PENA 0x80 /*校验允许位*/#define PEV 0x40 /*偶校验为0时为奇校验*/#define SPB 0x20 /*停止位为2 为0时停止位为1*/#define CHAR 0x10 /*数据位为8位为0时数据位为7位*/#define LISTEN 0x08 /*自环模式(发数据同时在把发的数据接收回来)*/#define SYNC 0x04 /*同步模式为0异步模式*/#define MM 0x02 /*为1时地址位多机协议(异步) 主机模式(同步);为0时线路空闲多机协议(异步) 从机模式(同步)*/#define SWRST 0x01 /*控制位*//* UTCTL 串口发送控制寄存器*/#define CKPH 0x80 /*时钟相位控制位(只同步方式用)为1时时钟UCLK延时半个周期*/#define CKPL 0x40 /*时钟极性控制位为1时异步与UCLK相反;同步下降延有效*/#define SSEL1 0x20 /*时钟源选择位:与SSEL0组合为0,1,2,3四种方式*/#define SSEL0 0x10 /*"0"选择外部时钟,"1"选择辅助时钟,"2","3"选择系统子时钟 */#define URXSE 0x08 /*接收触发延控制位(只在异步方式下用)*/#define TXWAKE 0x04 /*多处理器通信传送控制位(只在异步方式下用)*/#define STC 0x02 /*外部引脚STE选择位为0时为4线模式为1时为3线模式*/#define TXEPT 0x01 /*发送器空标志*//* URCTL 串口接收控制寄存器同步模式下只用两位:FE和OE*/#define FE 0x80 /*帧错标志*/#define PE 0x40 /*校验错标志位*/#define OE 0x20 /*溢出标志位*/#define BRK 0x10 /*打断检测位*/#define URXEIE 0x08 /*接收出错中断允许位*/#define URXWIE 0x04 /*接收唤醒中断允许位*/#define RXWAKE 0x02 /*接收唤醒检测位*/#define RXERR 0x01 /*接收错误标志位*//************************************************************* USART 0 串口0寄存器定义************************************************************/#define U0CTL_ 0x0070 /* UART 0 Control */sfrb U0CTL = U0CTL_;#define U0TCTL_ 0x0071 /* UART 0 Transmit Control */sfrb U0TCTL = U0TCTL_;#define U0RCTL_ 0x0072 /* UART 0 Receive Control */sfrb U0RCTL = U0RCTL_;#define U0MCTL_ 0x0073 /* UART 0 Modulation Control */ sfrb U0MCTL = U0MCTL_;#define U0BR0_ 0x0074 /* UART 0 Baud Rate 0 */sfrb U0BR0 = U0BR0_;#define U0BR1_ 0x0075 /* UART 0 Baud Rate 1 */sfrb U0BR1 = U0BR1_;#define U0RXBUF_ 0x0076 /* UART 0 Receive Buffer */ const sfrb U0RXBUF = U0RXBUF_;#define U0TXBUF_ 0x0077 /* UART 0 Transmit Buffer */ sfrb U0TXBUF = U0TXBUF_;/* Alternate register names */#define UCTL0_ 0x0070 /* UART 0 Control */sfrb UCTL0 = UCTL0_;#define UTCTL0_ 0x0071 /* UART 0 Transmit Control */ sfrb UTCTL0 = UTCTL0_;#define URCTL0_ 0x0072 /* UART 0 Receive Control */ sfrb URCTL0 = URCTL0_;#define UMCTL0_ 0x0073 /* UART 0 Modulation Control */ sfrb UMCTL0 = UMCTL0_;#define UBR00_ 0x0074 /* UART 0 Baud Rate 0 */sfrb UBR00 = UBR00_;#define UBR10_ 0x0075 /* UART 0 Baud Rate 1 */sfrb UBR10 = UBR10_;#define RXBUF0_ 0x0076 /* UART 0 Receive Buffer */ const sfrb RXBUF0 = RXBUF0_;#define TXBUF0_ 0x0077 /* UART 0 Transmit Buffer */ sfrb TXBUF0 = TXBUF0_;#define UCTL_0_ 0x0070 /* UART 0 Control */sfrb UCTL_0 = UCTL_0_;#define UTCTL_0_ 0x0071 /* UART 0 Transmit Control */ sfrb UTCTL_0 = UTCTL_0_;#define URCTL_0_ 0x0072 /* UART 0 Receive Control */ sfrb URCTL_0 = URCTL_0_;#define UMCTL_0_ 0x0073 /* UART 0 Modulation Control */ sfrb UMCTL_0 = UMCTL_0_;#define UBR0_0_ 0x0074 /* UART 0 Baud Rate 0 */sfrb UBR0_0 = UBR0_0_;#define UBR1_0_ 0x0075 /* UART 0 Baud Rate 1 */sfrb UBR1_0 = UBR1_0_;#define RXBUF_0_ 0x0076 /* UART 0 Receive Buffer */ const sfrb RXBUF_0 = RXBUF_0_;#define TXBUF_0_ 0x0077 /* UART 0 Transmit Buffer */sfrb TXBUF_0 = TXBUF_0_;/************************************************************ * USART 1 串口1寄存器定义************************************************************/#define U1CTL_ 0x0078 /* UART 1 Control */sfrb U1CTL = U1CTL_;#define U1TCTL_ 0x0079 /* UART 1 Transmit Control */sfrb U1TCTL = U1TCTL_;#define U1RCTL_ 0x007A /* UART 1 Receive Control */sfrb U1RCTL = U1RCTL_;#define U1MCTL_ 0x007B /* UART 1 Modulation Control */ sfrb U1MCTL = U1MCTL_;#define U1BR0_ 0x007C /* UART 1 Baud Rate 0 */sfrb U1BR0 = U1BR0_;#define U1BR1_ 0x007D /* UART 1 Baud Rate 1 */sfrb U1BR1 = U1BR1_;#define U1RXBUF_ 0x007E /* UART 1 Receive Buffer */const sfrb U1RXBUF = U1RXBUF_;#define U1TXBUF_ 0x007F /* UART 1 Transmit Buffer */sfrb U1TXBUF = U1TXBUF_;#define UCTL1_ 0x0078 /* UART 1 Control */sfrb UCTL1 = UCTL1_;#define UTCTL1_ 0x0079 /* UART 1 Transmit Control */sfrb UTCTL1 = UTCTL1_;#define URCTL1_ 0x007A /* UART 1 Receive Control */sfrb URCTL1 = URCTL1_;#define UMCTL1_ 0x007B /* UART 1 Modulation Control */ sfrb UMCTL1 = UMCTL1_;#define UBR01_ 0x007C /* UART 1 Baud Rate 0 */sfrb UBR01 = UBR01_;#define UBR11_ 0x007D /* UART 1 Baud Rate 1 */sfrb UBR11 = UBR11_;#define RXBUF1_ 0x007E /* UART 1 Receive Buffer */const sfrb RXBUF1 = RXBUF1_;#define TXBUF1_ 0x007F /* UART 1 Transmit Buffer */sfrb TXBUF1 = TXBUF1_;#define UCTL_1_ 0x0078 /* UART 1 Control */sfrb UCTL_1 = UCTL_1_;#define UTCTL_1_ 0x0079 /* UART 1 Transmit Control */sfrb UTCTL_1 = UTCTL_1_;#define URCTL_1_ 0x007A /* UART 1 Receive Control */sfrb URCTL_1 = URCTL_1_;#define UMCTL_1_ 0x007B /* UART 1 Modulation Control */sfrb UMCTL_1 = UMCTL_1_;#define UBR0_1_ 0x007C /* UART 1 Baud Rate 0 */sfrb UBR0_1 = UBR0_1_;#define UBR1_1_ 0x007D /* UART 1 Baud Rate 1 */sfrb UBR1_1 = UBR1_1_;#define RXBUF_1_ 0x007E /* UART 1 Receive Buffer */const sfrb RXBUF_1 = RXBUF_1_;#define TXBUF_1_ 0x007F /* UART 1 Transmit Buffer */sfrb TXBUF_1 = TXBUF_1_;/************************************************************* ADC12 A/D采样寄存器定义************************************************************//*ADC12转换控制类寄存器*/#define ADC12CTL0_ 0x0;' /* ADC12 Control 0 */sfrw ADC12CTL0 = ADC12CTL0_;#define ADC12CTL1_ 0x01A2 /* ADC12 Control 1 */sfrw ADC12CTL1 = ADC12CTL1_;/*ADC12中断控制类寄存器*/#define ADC12IFG_ 0x01A4 /* ADC12 Interrupt Flag */sfrw ADC12IFG = ADC12IFG_;#define ADC12IE_ 0x01A6 /* ADC12 Interrupt Enable */sfrw ADC12IE = ADC12IE_;#define ADC12IV_ 0x01A8 /* ADC12 Interrupt Vector Word */sfrw ADC12IV = ADC12IV_;/*ADC12存贮器类寄存器*/#define ADC12MEM_ 0x0140 /* ADC12 Conversion Memory */#ifndef __IAR_SYSTEMS_ICC#define ADC12MEM ADC12MEM_ /* ADC12 Conversion Memory (for assembler) */ #else#define ADC12MEM ((int*) ADC12MEM_) /* ADC12 Conversion Memory (for C) */ #endif#define ADC12MEM0_ ADC12MEM_ /* ADC12 Conversion Memory 0 */sfrw ADC12MEM0 = ADC12MEM0_;#define ADC12MEM1_ 0x0142 /* ADC12 Conversion Memory 1 */sfrw ADC12MEM1 = ADC12MEM1_;#define ADC12MEM2_ 0x0144 /* ADC12 Conversion Memory 2 */sfrw ADC12MEM2 = ADC12MEM2_;#define ADC12MEM3_ 0x0146 /* ADC12 Conversion Memory 3 */#define ADC12MEM4_ 0x0148 /* ADC12 Conversion Memory 4 */sfrw ADC12MEM4 = ADC12MEM4_;#define ADC12MEM5_ 0x014A /* ADC12 Conversion Memory 5 */sfrw ADC12MEM5 = ADC12MEM5_;#define ADC12MEM6_ 0x014C /* ADC12 Conversion Memory 6 */sfrw ADC12MEM6 = ADC12MEM6_;#define ADC12MEM7_ 0x014E /* ADC12 Conversion Memory 7 */sfrw ADC12MEM7 = ADC12MEM7_;#define ADC12MEM8_ 0x0150 /* ADC12 Conversion Memory 8 */sfrw ADC12MEM8 = ADC12MEM8_;#define ADC12MEM9_ 0x0152 /* ADC12 Conversion Memory 9 */sfrw ADC12MEM9 = ADC12MEM9_;#define ADC12MEM10_ 0x0154 /* ADC12 Conversion Memory 10 */sfrw ADC12MEM10 = ADC12MEM10_;#define ADC12MEM11_ 0x0156 /* ADC12 Conversion Memory 11 */sfrw ADC12MEM11 = ADC12MEM11_;#define ADC12MEM12_ 0x0158 /* ADC12 Conversion Memory 12 */sfrw ADC12MEM12 = ADC12MEM12_;#define ADC12MEM13_ 0x015A /* ADC12 Conversion Memory 13 */sfrw ADC12MEM13 = ADC12MEM13_;#define ADC12MEM14_ 0x015C /* ADC12 Conversion Memory 14 */sfrw ADC12MEM14 = ADC12MEM14_;#define ADC12MEM15_ 0x015E /* ADC12 Conversion Memory 15 */sfrw ADC12MEM15 = ADC12MEM15_;/*ADC12存贮控制类寄存器*/#define ADC12MCTL_ 0x0080 /* ADC12 Memory Control */#ifndef __IAR_SYSTEMS_ICC#define ADC12MCTL ADC12MCTL_ /* ADC12 Memory Control (for assembler) */ #else#define ADC12MCTL ((char*) ADC12MCTL_) /* ADC12 Memory Control (for C) */ #endif#define ADC12MCTL0_ ADC12MCTL_ /* ADC12 Memory Control 0 */sfrb ADC12MCTL0 = ADC12MCTL0_;#define ADC12MCTL1_ 0x0081 /* ADC12 Memory Control 1 */sfrb ADC12MCTL1 = ADC12MCTL1_;#define ADC12MCTL2_ 0x0082 /* ADC12 Memory Control 2 */sfrb ADC12MCTL2 = ADC12MCTL2_;#define ADC12MCTL3_ 0x0083 /* ADC12 Memory Control 3 */sfrb ADC12MCTL3 = ADC12MCTL3_;#define ADC12MCTL4_ 0x0084 /* ADC12 Memory Control 4 */sfrb ADC12MCTL4 = ADC12MCTL4_;#define ADC12MCTL5_ 0x0085 /* ADC12 Memory Control 5 */#define ADC12MCTL6_ 0x0086 /* ADC12 Memory Control 6 */sfrb ADC12MCTL6 = ADC12MCTL6_;#define ADC12MCTL7_ 0x0087 /* ADC12 Memory Control 7 */sfrb ADC12MCTL7 = ADC12MCTL7_;#define ADC12MCTL8_ 0x0088 /* ADC12 Memory Control 8 */sfrb ADC12MCTL8 = ADC12MCTL8_;#define ADC12MCTL9_ 0x0089 /* ADC12 Memory Control 9 */sfrb ADC12MCTL9 = ADC12MCTL9_;#define ADC12MCTL10_ 0x008A /* ADC12 Memory Control 10 */sfrb ADC12MCTL10 = ADC12MCTL10_;#define ADC12MCTL11_ 0x008B /* ADC12 Memory Control 11 */sfrb ADC12MCTL11 = ADC12MCTL11_;#define ADC12MCTL12_ 0x008C /* ADC12 Memory Control 12 */sfrb ADC12MCTL12 = ADC12MCTL12_;#define ADC12MCTL13_ 0x008D /* ADC12 Memory Control 13 */sfrb ADC12MCTL13 = ADC12MCTL13_;#define ADC12MCTL14_ 0x008E /* ADC12 Memory Control 14 */sfrb ADC12MCTL14 = ADC12MCTL14_;#define ADC12MCTL15_ 0x008F /* ADC12 Memory Control 15 */sfrb ADC12MCTL15 = ADC12MCTL15_;/* ADC12CTL0 内8位控制寄存器位*/#define ADC12SC 0x001 /*采样/转换控制位*/#define ENC 0x002 /* 转换允许位*/#define ADC12TOVIE 0x004 /*转换时间溢出中断允许位*/#define ADC12OVIE 0x008 /*溢出中断允许位*/#define ADC12ON 0x010 /*ADC12内核控制位*/#define REFON 0x020 /*参考电压控制位*/#define REF2_5V 0x040 /*内部参考电压的电压值选择位 '0'为1.5V; '1'为2.5V*/ #define MSH 0x080 /*多次采样/转换位*/#define MSC 0x080 /*多次采样/转换位*//*SHT0 采样保持定时器0 控制ADC12的结果存贮器MEM0~MEM7的采样周期*/#define SHT0_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT0_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT0_2 2*0x100 /*采样周期=TADC12CLK*16 */#define SHT0_3 3*0x100 /*采样周期=TADC12CLK*32 */#define SHT0_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT0_5 5*0x100 /*采样周期=TADC12CLK*96 */#define SHT0_6 6*0x100 /*采样周期=TADC12CLK*128 */#define SHT0_7 7*0x100 /*采样周期=TADC12CLK*192 */#define SHT0_8 8*0x100 /*采样周期=TADC12CLK*256 */#define SHT0_9 9*0x100 /*采样周期=TADC12CLK*384 */#define SHT0_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT0_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT0_12 12*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_13 13*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_14 14*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_15 15*0x100 /*采样周期=TADC12CLK*1024 *//*SHT1 采样保持定时器1 控制ADC12的结果存贮器MEM8~MEM15的采样周期*/ #define SHT1_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT1_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT1_2 2*0x100 /*采样周期=TADC12CLK*16 */#define SHT1_3 3*0x100 /*采样周期=TADC12CLK*32 */#define SHT1_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT1_5 5*0x100 /*采样周期=TADC12CLK*96 */#define SHT1_6 6*0x100 /*采样周期=TADC12CLK*128 */#define SHT1_7 7*0x100 /*采样周期=TADC12CLK*192 */#define SHT1_8 8*0x100 /*采样周期=TADC12CLK*256 */#define SHT1_9 9*0x100 /*采样周期=TADC12CLK*384 */#define SHT1_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT1_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT1_12 12*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_13 13*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_14 14*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_15 15*0x100 /*采样周期=TADC12CLK*1024 *//* ADC12CTL1 内8位控制寄存器位*/#define ADC12BUSY 0x0001 /*ADC12忙标志位*/#define CONSEQ_0 0*2 /*单通道单次转换*/#define CONSEQ_1 1*2 /*序列通道单次转换*/#define CONSEQ_2 2*2 /*单通道多次转换*/#define CONSEQ_3 3*2 /*序列通道多次转换*/#define ADC12SSEL_0 0*8 /*ADC12内部时钟源*/#define ADC12SSEL_1 1*8 /*ACLK*/#define ADC12SSEL_2 2*8 /*MCLK*/#define ADC12SSEL_3 3*8 /*SCLK*/#define ADC12DIV_0 0*0x20 /*1分频*/#define ADC12DIV_1 1*0x20 /*2分频*/#define ADC12DIV_2 2*0x20 /*3分频*/#define ADC12DIV_3 3*0x20 /*4分频*/#define ADC12DIV_4 4*0x20 /*5分频*/#define ADC12DIV_5 5*0x20 /*6分频*/#define ADC12DIV_6 6*0x20 /*7分频*/#define ADC12DIV_7 7*0x20 /*8分频*/#define ISSH 0x0100 /*采样输入信号反向与否控制位*/#define SHP 0x0200 /*采样信号(SAMPCON)选择控制位*/#define SHS_0 0*0x400 /*采样信号输入源选择控制位 ADC12SC*/#define SHS_1 1*0x400 /*采样信号输入源选择控制位 TIMER_A.OUT1*/ #define SHS_2 2*0x400 /*采样信号输入源选择控制位 TIMER_B.OUT0*/ #define SHS_3 3*0x400 /*采样信号输入源选择控制位 TIMER_B.OUT1*/ /*转换存贮器地址定义位*/#define CSTARTADD_0 0*0x1000 /*选择MEM0首地址*/#define CSTARTADD_1 1*0x1000 /*选择MEM1首地址*/#define CSTARTADD_2 2*0x1000 /*选择MEM2首地址*/#define CSTARTADD_3 3*0x1000 /*选择MEM3首地址*/#define CSTARTADD_4 4*0x1000 /*选择MEM4首地址*/#define CSTARTADD_5 5*0x1000 /*选择MEM5首地址*/#define CSTARTADD_6 6*0x1000 /*选择MEM6首地址*/#define CSTARTADD_7 7*0x1000 /*选择MEM7首地址*/#define CSTARTADD_8 8*0x1000 /*选择MEM8首地址*/#define CSTARTADD_9 9*0x1000 /*选择MEM9首地址*/#define CSTARTADD_10 10*0x1000 /*选择MEM10首地址*/#define CSTARTADD_11 11*0x1000 /*选择MEM11首地址*/#define CSTARTADD_12 12*0x1000 /*选择MEM12首地址*/#define CSTARTADD_13 13*0x1000 /*选择MEM13首地址*/#define CSTARTADD_14 14*0x1000 /*选择MEM14首地址*/#define CSTARTADD_15 15*0x1000 /*选择MEM15首地址*//* ADC12MCTLx */#define INCH_0 0 /*选择模拟量通道0 A0 */#define INCH_1 1 /*选择模拟量通道0 A1*/#define INCH_2 2 /*选择模拟量通道0 A2*/#define INCH_3 3 /*选择模拟量通道0 A3*/#define INCH_4 4 /*选择模拟量通道0 A4*/#define INCH_5 5 /*选择模拟量通道0 A5*/#define INCH_6 6 /*选择模拟量通道0 A6*/#define INCH_7 7 /*选择模拟量通道0 A7*/#define INCH_8 8 /*VEREF+*/#define INCH_9 9 /*VEREF-*/#define INCH_10 10 /*片内温度传感器的输出*/#define INCH_11 11 /*(A VCC-A VSS)/2*/#define INCH_12 12 /*(A VCC-A VSS)/2*/#define INCH_13 13 /*(A VCC-A VSS)/2*/#define INCH_14 14 /*(A VCC-A VSS)/2*/#define INCH_15 15 /*(A VCC-A VSS)/2*//*参考电压源选择位*/#define SREF_0 0*0x10 /*VR+ = A VCC; VR- = A VSS*/#define SREF_1 1*0x10 /*VR+ = VREF+; VR- = A VSS*/#define SREF_2 2*0x10 /*VR+ = VEREF+; VR- = A VSS*/#define SREF_3 3*0x10 /*VR+ = VEREF+; VR- = A VSS*/#define SREF_4 4*0x10 /*VR+ = A VCC; VR- = VREF-*/ #define SREF_5 5*0x10 /*VR+ = VREF+; VR- = VREF-*/ #define SREF_6 6*0x10 /*VR+ = VEREF+; VR- = VREF-*/ #define SREF_7 7*0x10 /*VR+ = VEREF+; VR- = VREF-*/ #define EOS 0x80 /*序列结束选择位*/ADC12定义/************************************************************ * 特殊功能寄存器地址和控制位************************************************************/ /*中断使能1*/#define IE1_ 0x0000sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/#define OFIE 0x02 /*外部晶振故障中断使能*/#define NMIIE 0x10 /*非屏蔽中断使能*/#define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/ #define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*//*中断标志1*/#define IFG1_ 0x0002sfrb IFG1 = IFG1_;#define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收中断标志*/#define UTXIFG0 0x80 /*串口0发送中断标志*//* 中断模式使能1 */#define ME1_ 0x0004sfrb ME1 = ME1_;#define URXE0 0x40 /* 串口0接收中断模式使能 */#define USPIE0 0x40 /* 同步中断模式使能 */#define UTXE0 0x80 /* 串口0发送中断模式使能 *//* 中断使能2 */#define IE2_ 0x0001sfrb IE2 = IE2_;#define URXIE1 0x10 /* 串口1接收中断使能 */#define UTXIE1 0x20 /* 串口1发送中断使能 *//* 中断标志2 */#define IFG2_ 0x0003sfrb IFG2 = IFG2_;#define URXIFG1 0x10 /* 串口1接收中断标志 */#define UTXIFG1 0x20 /* 串口1发送中断标志 *//* 中断模式使能2 */#define ME2_ 0x0005sfrb ME2 = ME2_;#define URXE1 0x10 /* 串口1接收中断模式使能 */#define USPIE1 0x10 /* 同步中断模式使能 */#define UTXE1 0x20 /* 串口1发送中断模式使能 *//************************************************************* 看门狗定时器的寄存器定义************************************************************/#define WDTCTL_ 0x0120sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/#define WDTTMSEL 0x0010 /*选择模式 0: 看门狗模式; 1: 定时器模式*/#define WDTNMI 0x0020 /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/#define WDTNMIES 0x0040 /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/#define WDTHOLD 0x0080 /*停止看门狗定时器工作 0:启动;1:停止*/#define WDTPW 0x5A00 /* 写密码:高八位*//* SMCLK= 1MHz定时器模式 */#define WDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL /* TSMCLK*2POWER15= 32ms 复位状态 */#define WDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /* TSMCLK*2POWE R13=8.192ms " */#define WDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /* TSMCLK*2POW ER9=0.512ms " */#define WDT_MDLY_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK* 2POWER6=0.512ms " *//* ACLK=32.768KHz 定时器模式*/#define WDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2POW ER15=1000ms " */#define WDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2 POWER13=250ms " */#define WDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2 POWER9=16ms " */#define WDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TAC LK*2POWER6=1.9ms " *//* SMCLK=1MHz看门狗模式 */#define WDT_MRST_32 WDTPW+WDTCNTCL /* TSMCLK*2POWER15=32ms 复位状态 */#define WDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.19 2ms " */#define WDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.51 2ms " */#define WDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER 6=0.512ms " *//* ACLK=32KHz看门狗模式 */#define WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=10 00ms " */#define WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER1 3=250ms " */#define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9 =16ms " */#define WDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TACLK*2PO WER6=1.9ms " *//************************************************************硬件乘法器的寄存器定义************************************************************/#define MPY_ 0x0130 /* 无符号乘法 */sfrw MPY = MPY_;#define MPYS_ 0x0132 /* 有符号乘法*/sfrw MPYS = MPYS_;#define MAC_ 0x0134 /* 无符号乘加 */sfrw MAC = MAC_;#define MACS_ 0x0136 /* 有符号乘加 */sfrw MACS = MACS_;#define OP2_ 0x0138 /* 第二乘数 */sfrw OP2 = OP2_;#define RESLO_ 0x013A /* 低6位结果寄存器 */sfrw RESLO = RESLO_;#define RESHI_ 0x013C /* 高6位结果寄存器 */sfrw RESHI = RESHI_;#define SUMEXT_ 0x013E /*结果扩展寄存器 */const sfrw SUMEXT = SUMEXT_;/************************************************************* DIGITAL I/O Port1/2 寄存器定义有中断功能************************************************************/#define P1IN_ 0x0020 /* P1 输入寄存器 */const sfrb P1IN = P1IN_;#define P1OUT_ 0x0021 /* P1 输出寄存器 */sfrb P1OUT = P1OUT_;#define P1DIR_ 0x0022 /* P1 方向选择寄存器 */sfrb P1DIR = P1DIR_;#define P1IFG_ 0x0023 /* P1 中断标志寄存器*/sfrb P1IFG = P1IFG_;#define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/sfrb P1IES = P1IES_;#define P1IE_ 0x0025 /* P1 中断使能寄存器 */sfrb P1IE = P1IE_;#define P1SEL_ 0x0026 /* P1 功能选择寄存器*/sfrb P1SEL = P1SEL_;#define P2IN_ 0x0028 /* P2 输入寄存器 */const sfrb P2IN = P2IN_;#define P2OUT_ 0x0029 /* P2 输出寄存器 */sfrb P2OUT = P2OUT_;#define P2DIR_ 0x002A /* P2 方向选择寄存器 */sfrb P2DIR = P2DIR_;#define P2IFG_ 0x002B /* P2 中断标志寄存器 */sfrb P2IFG = P2IFG_;#define P2IES_ 0x002C /* P2 中断边沿选择寄存器 */sfrb P2IES = P2IES_;#define P2IE_ 0x002D /* P2 中断使能寄存器 */sfrb P2IE = P2IE_;#define P2SEL_ 0x002E /* P2 功能选择寄存器 */sfrb P2SEL = P2SEL_;/************************************************************ * DIGITAL I/O Port3/4寄存器定义无中断功能************************************************************/#define P3IN_ 0x0018 /* P3 输入寄存器 */const sfrb P3IN = P3IN_;#define P3OUT_ 0x0019 /* P3 输出寄存器 */sfrb P3OUT = P3OUT_;#define P3DIR_ 0x001A /* P3 方向选择寄存器 */sfrb P3DIR = P3DIR_;#define P3SEL_ 0x001B /* P3 功能选择寄存器*/sfrb P3SEL = P3SEL_;#define P4IN_ 0x001C /* P4 输入寄存器 */const sfrb P4IN = P4IN_;#define P4OUT_ 0x001D /* P4 输出寄存器 */sfrb P4OUT = P4OUT_;#define P4DIR_ 0x001E /* P4 方向选择寄存器 */sfrb P4DIR = P4DIR_;#define P4SEL_ 0x001F /* P4 功能选择寄存器 */sfrb P4SEL = P4SEL_;/************************************************************ * DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能************************************************************/#define P5IN_ 0x0030 /* P5 输入寄存器 */const sfrb P5IN = P5IN_;#define P5OUT_ 0x0031 /* P5 输出寄存器*/sfrb P5OUT = P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/sfrb P5DIR = P5DIR_;#define P5SEL_ 0x0033 /* P5 功能选择寄存器*/sfrb P5SEL = P5SEL_;#define P6IN_ 0x0034 /* P6 输入寄存器 */const sfrb P6IN = P6IN_;#define P6OUT_ 0x0035 /* P6 输出寄存器*/sfrb P6OUT = P6OUT_;#define P6DIR_ 0x0036 /* P6 方向选择寄存器*/sfrb P6DIR = P6DIR_;#define P6SEL_ 0x0037 /* P6 功能选择寄存器*/sfrb P6SEL = P6SEL_;。
MSP430单片机
» 开发环境的发展 开发语言从汇编发展成为C、PLM等高级语言,并且开发工具提供操作系统,简化 程序的编写。
单片机系统的开发流程
硬件准备
编写源代码
修改程序 软件不满意
仿真调试
修改硬件
硬件不满意
满意?
USB,ADC McBSP,SPI,I2C
音频,语音 医疗,生物统计学
$3.00 to $10.00
软件及开发工具
什么是MSP430?
MSP430系列单片机是美国Texas Instruments (TI) 从 1996年开始推向市场的一种16位 RISC 架构、超低 功耗的混合信号处理器(Mixed Signal Processor)。
MSP430单片机开发方便
嵌入式仿真器不占用软件资源
MSP430全系列产品
MSP430X1XX 系列 MSP430X2XX 系列 MSP430X4XX 系列 MSP430X5XX 系列 MSP430X6XX 系列
第二部分 MSP430单片机结构与指令系统
主要内容
增强了MSP430要功能部件2
存储器: 存储程序、数据以及外围模块的运行控制信息。有程
序存储器和数据存储器。对程序存储器访问总是以字形式 取得代码,而对数据可以用字或字节方式访问。其中 MSP430各系列单片机的程序存储器有ROM、OTP、 EPROM、FLASH和FRAM型。
PIC增强系列
Microchip公司的PIC单片机推出来在市场上取得了巨大的成功, 目前成为世界上销量最大的单片机。Microchip公司在不断的推 出增强的PIC内核,指令宽度从12、16位提高到目前的18、24、 30位,运行速度不断的提高,同时Microchip公司不断的推出集 成更多外设的新品种。
MSP430寄存器表
一、时钟模块(共涉及3个寄存器)DCO.2、DCO.1、DCO.0:定义8种频率组合M OD.4~MOD.0:定义32种频率微调二、I/O端口(共涉及6组34个寄存器)1、P1口相应位为0: 输入模式 1:输出模式相应位为0:没有中断请求 1:有中断请求相应位为0:上升沿触发中断 1:下升沿触发中断相应位为0:禁止中断 1:允许中断相应位为0:I/O功能 1:片上模块功能2、P2口相应位为0: 输入模式 1:输出模式相应位为0:没有中断请求 1:有中断请求相应位为0:上升沿触发中断 1:下升沿触发中断相应位为0:禁止中断 1:允许中断相应位为0:I/O功能 1:片上模块功能3、P3口相应位为0: 输入模式 1:输出模式相应位为0:I/O功能 1:片上模块功能4、P4口相应位为0: 输入模式 1:输出模式相应位为0:I/O功能 1:片上模块功能5、P5口相应位为0: 输入模式 1:输出模式相应位为0:I/O功能 1:片上模块功能6、P6口相应位为0: 输入模式 1:输出模式相应位为0:I/O功能 1:片上模块功能三、WDT(涉及三个寄存器,其中两个是共用寄存器)。
四、定时器(共涉及九个寄存器)1、定时器 A定时器模式下进入中断自动复位,也可通过软件复位。
产生NMI中断,需手动清除。
上电后,成功振荡前为1。
字符,读接收缓存器时自动复位接收时产生的各种错误。
模式。
0 1 CM_1 上升沿捕获1 0 CM _2 下降沿捕获1 1 CM _3 上下沿均捕获0 1 CCIS_1 CCI0B 1 0 CCIS_2 GND 1 1 CCIS_3 VCC0:异步捕获1:同步捕获,通常使用。
1: 捕获模式CM1 CM0 捕获模式设置CCIS1 CCIS0 捕获比较选择捕获信号关模式选择:1 0 0 OUTMOD_4 翻转/置位1 0 1 OUTMOD_5 复位1 1 0 OUTMOD_6 PWM 翻转/置位1 1 1 OUTMOD_7 PWM 翻转/置位比较模式:TAR 值等于CCRx值时置位。
MSP430F149寄存器整理
各个模块的寄存器:1)CPU内部寄存器(状态寄存器SR)2)外围模块寄存器和特殊寄存器中断使能寄存器(IE1)UTXIE0USART0模块的传输中断使能控制比特。
置1时模块的中断使能,0时关闭URXIE0USART0接收中断控制。
1中断使能、0中断关闭ACCVIEFLASH 存储器非法访问中断使能控制比特位。
1使能、0时关闭。
NMIE 非屏蔽中断使能控制。
1使能、0关闭OFIE 晶体出错中断使能控制。
1使能、0关闭WDTIE看门狗中断使能控制。
1使能看门狗中断、0关闭中断使能寄存器(IE2)****UTXIE15URXIE14********UTXIE1USART1模块传输中断使能控制。
1使能、0关闭URXIE1USART1模块接收中断使能控制。
1使能、0关闭中断标志寄存器(IFG1)UTXIFG07URXIFG 06**NMIIFG4****OFIFG 1WDTIFGUTXIFG0USART0传输中断标志位。
1时有中断产生、0没有URXIFG0USART0接收中断标志位。
1时有中断产生、0没有NMIIFG非屏蔽中断标志位。
1时有中断产生、0没有UTXIE07URXIE06ACCVIE5NMIIE4**3**2OFIE1WDTIEOFIFG晶体出错中断标志位。
1时有中断产生、0没有WDTIFG看门狗中断标志。
1时有中断产生、0时没有中断标志寄存器(IFG2)****UTXIFG15URXIFG14********UTXIFG1USART1传输中断标志位。
1时有中断产生、0时没有URXIFG1USART1接收中断标志位。
1时有中断产生、0时没有模块使能寄存器1(ME1)UTXE0 7URXE0USPIE0************UTXE0USART0的传输使能。
1时USART0传输模块使能、0时不工作URXE0 USPIE0USART作为UART时,该比特控制UART的接收功能,设置为1时接收模块使能,0时不工作;作为SPI时,设置为1,则SPI使能,0时SPI不工作。
MSP430简介(超详细·)
msp430简介MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化, MSP430系列将会得到越来越多人的喜爱.一、IO口(一)、P口端口寄存器:1、PxDIR 输入/输出方向寄存器(0:输入模式 1:输出模式)2、PxIN 输入寄存器输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。
3、PxOUT 输出寄存器寄存器内的内容不会受引脚方向改变的影响。
4、PxIFG 中断标志寄存器(0:没有中断请求 1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位;外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受;5、PxIES 中断触发沿选择寄存器(0:上升沿中断 1:下降沿中断)6、PxSEL 功能选择寄存器(0:选择引脚为I/O端口 1:选择引脚为外围模块功能)7、PxREN 上拉/下拉电阻使能寄存器(0:禁止 1:使能)(二)、常用特殊P口:1、P1和P2口可作为外部中断口。
MSP430
MSP430MSP430一、上电复位POR 和上电清除PUC二、低功耗控制但系统时钟发生器基本功能建立之后,CPU内的状态寄存器SR中的SCG1、SCG2、OscOff、CpuOff是低功耗的重要控制位;系统工作模式一共有6种,1种活动模式和5种低功耗模式;可以通过设置控制位使MSP430进入低功耗模式,由中断唤醒CPU,在执行完中断服务程序之后再回到低功耗模式,也可以在执行中断程序的时候间接访问堆栈修改状态寄存器的值,这样中断程序执行完之后就会进入另外一种低功耗模式或者处于活动模式。
三、时钟模块(一)、MSP430F149有三个时钟输入源:1、LFXT1CLK:如果LFXTCLK没有作用于SMCLK、MCLK信号,可以用OscOff置位以禁止LFXT1CLK工作;2、XT2CLK:若XT2CLK没有作用于SMCLK、MCLK信号,可以用控制位XT2OFF 关闭XT2;3、DCO振荡器:MSP430F149的两个外部振荡器产生的时钟信号都可以经过1、2、4、8分频后用作系统主时钟MCLK;当外部振荡器失效后,DCO 振荡器会自动被选作MCLK 的时钟源;(二)、MSP430F149提供3三种时钟信号:1、ACLK----辅助时钟,一般用于低速外设,由LFXT1CLK信号分频而得;2、MCLK----系统通过主时钟,一般用于CPU和系统,由以上三个时钟源任意一个分频而得;3、SMCLK---主要用于高速外设,由XT2CLK+XT2CLK 或LFXT1CLK+DCO分频而得。
(三)、如何控制MSP430的DCOCLK频率?——时钟模块的控制由5个寄存器来完成1、DCOCTL:定义8总频率之一2、BCSCTL1:控制XT2CLK的开启与关闭;控制LFXT1CLK的工作模式(低频或高频,高频下需要接高频时钟源);控制ACLK分频。
3、BCSCTL2选择MCLK时钟源;选择MCLK分频;选择SMCLK时钟源;选择SMCLK时钟源分频。
430主要用到的寄存器
寄存器实在太多了。
我有个文档给你看看吧、、MSP430寄存器中文注释---P1/2口(带中断功能)/************************************************************ * DIGITAL I/O Port1/2 寄存器定义有中断功能************************************************************/#define P1IN_ 0x0020 /* P1 输入寄存器*/const sfrb P1IN = P1IN_;#define P1OUT_ 0x0021 /* P1 输出寄存器*/sfrb P1OUT = P1OUT_;#define P1DIR_ 0x0022 /* P1 方向选择寄存器*/ sfrb P1DIR = P1DIR_;#define P1IFG_ 0x0023 /* P1 中断标志寄存器*/sfrb P1IFG = P1IFG_;#define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/ sfrb P1IES = P1IES_;#define P1IE_ 0x0025 /* P1 中断使能寄存器*/sfrb P1IE = P1IE_;#define P1SEL_ 0x0026 /* P1 功能选择寄存器*/sfrb P1SEL = P1SEL_;#define P2IN_ 0x0028 /* P2 输入寄存器*/const sfrb P2IN = P2IN_;#define P2OUT_ 0x0029 /* P2 输出寄存器*/sfrb P2OUT = P2OUT_;#define P2DIR_ 0x002A /* P2 方向选择寄存器*/ sfrb P2DIR = P2DIR_;#define P2IFG_ 0x002B /* P2 中断标志寄存器*/ sfrb P2IFG = P2IFG_;#define P2IES_ 0x002C /* P2 中断边沿选择寄存器*/ sfrb P2IES = P2IES_;#define P2IE_ 0x002D /* P2 中断使能寄存器*/ sfrb P2IE = P2IE_;#define P2SEL_ 0x002E /* P2 功能选择寄存器*/ sfrb P2SEL = P2SEL_;MSP430寄存器中文注释---P3/4口(无中断功能)/************************************************************ * DIGITAL I/O Port3/4寄存器定义无中断功能************************************************************/ #define P3IN_ 0x0018 /* P3 输入寄存器*/const sfrb P3IN = P3IN_;#define P3OUT_ 0x0019 /* P3 输出寄存器*/sfrb P3OUT = P3OUT_;#define P3DIR_ 0x001A /* P3 方向选择寄存器*/sfrb P3DIR = P3DIR_;#define P3SEL_ 0x001B /* P3 功能选择寄存器*/sfrb P3SEL = P3SEL_;#define P4IN_ 0x001C /* P4 输入寄存器*/const sfrb P4IN = P4IN_;#define P4OUT_ 0x001D /* P4 输出寄存器*/sfrb P4OUT = P4OUT_;#define P4DIR_ 0x001E /* P4 方向选择寄存器*/sfrb P4DIR = P4DIR_;#define P4SEL_ 0x001F /* P4 功能选择寄存器*/sfrb P4SEL = P4SEL_;/************************************************************* DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能************************************************************/#define P5IN_ 0x0030 /* P5 输入寄存器*/const sfrb P5IN = P5IN_;#define P5OUT_ 0x0031 /* P5 输出寄存器*/sfrb P5OUT = P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/sfrb P5DIR = P5DIR_;#define P5SEL_ 0x0033 /* P5 功能选择寄存器*/sfrb P5SEL = P5SEL_;#define P6IN_ 0x0034 /* P6 输入寄存器*/const sfrb P6IN = P6IN_;#define P6OUT_ 0x0035 /* P6 输出寄存器*/sfrb P6OUT = P6OUT_;#define P6DIR_ 0x0036 /* P6 方向选择寄存器*/sfrb P6DIR = P6DIR_;#define P6SEL_ 0x0037 /* P6 功能选择寄存器*/sfrb P6SEL = P6SEL_;MSP430寄存器中文注释--- 硬件乘法器/************************************************************ 硬件乘法器的寄存器定义************************************************************/#define MPY_ 0x0130 /* 无符号乘法*/sfrw MPY = MPY_;#define MPYS_ 0x0132 /* 有符号乘法*/sfrw MPYS = MPYS_;#define MAC_ 0x0134 /* 无符号乘加*/sfrw MAC = MAC_;#define MACS_ 0x0136 /* 有符号乘加*/sfrw MACS = MACS_;#define OP2_ 0x0138 /* 第二乘数*/sfrw OP2 = OP2_;#define RESLO_ 0x013A /* 低6位结果寄存器*/sfrw RESLO = RESLO_;#define RESHI_ 0x013C /* 高6位结果寄存器*/sfrw RESHI = RESHI_;#define SUMEXT_ 0x013E /*结果扩展寄存器*/const sfrw SUMEXT = SUMEXT_;MSP430寄存器中文注释---看门狗和定时器/************************************************************* 看门狗定时器的寄存器定义************************************************************/#define WDTCTL_ 0x0120sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/#define WDTTMSEL 0x0010 /*选择模式0: 看门狗模式; 1: 定时器模式*/#define WDTNMI 0x0020 /*选择NMI/RST 引脚功能0:为RST; 1:为NMI*/#define WDTNMIES 0x0040 /*WDTNMI=1时.选择触发延0:为上升延1:为下降延*/#define WDTHOLD 0x0080 /*停止看门狗定时器工作0:启动;1:停止*/#define WDTPW 0x5A00 /* 写密码:高八位*//* SMCLK= 1MHz定时器模式*/#define WDT_MDL Y_32 WDTPW+WDTTMSEL+WDTCNTCL /* TSMCLK*2POWER15=32ms 复位状态*/#define WDT_MDL Y_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.192ms " */#define WDT_MDL Y_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.512ms " */#define WDT_MDL Y_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER6=0.512ms " *//* ACLK=32.768KHz 定时器模式*/#define WDT_ADL Y_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=1000ms " */#define WDT_ADL Y_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER13=250ms " */#define WDT_ADL Y_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9=16ms " */#define WDT_ADL Y_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TACLK*2POWER6=1.9ms " *//* SMCLK=1MHz看门狗模式*/#define WDT_MRST_32 WDTPW+WDTCNTCL /* TSMCLK*2POWER15=32ms 复位状态*/#define WDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.192ms " */#define WDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.512ms " */#define WDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER6=0.512ms " *//* ACLK=32KHz看门狗模式*/#define WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=1000ms " */#define WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER13=250ms " */#define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9=16ms " */#define WDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TACLK*2POWER6=1.9ms " */MSP430寄存器中文注释---A/D采样寄存器定义/************************************************************* ADC12 A/D采样寄存器定义************************************************************//*ADC12转换控制类寄存器*/#define ADC12CTL0_ 0x0; /* ADC12 Control 0 */sfrw ADC12CTL0 = ADC12CTL0_;#define ADC12CTL1_ 0x01A2 /* ADC12 Control 1 */sfrw ADC12CTL1 = ADC12CTL1_;/*ADC12中断控制类寄存器*/#define ADC12IFG_ 0x01A4 /* ADC12 Interrupt Flag */sfrw ADC12IFG = ADC12IFG_;#define ADC12IE_ 0x01A6 /* ADC12 Interrupt Enable */sfrw ADC12IE = ADC12IE_;#define ADC12IV_ 0x01A8 /* ADC12 Interrupt Vector Word */sfrw ADC12IV = ADC12IV_;/*ADC12存贮器类寄存器*/#define ADC12MEM_ 0x0140 /* ADC12 Conversion Memory */#ifndef __IAR_SYSTEMS_ICC#define ADC12MEM ADC12MEM_ /* ADC12 Conversion Memory (for assembler) */#else#define ADC12MEM ((int*) ADC12MEM_) /* ADC12 Conversion Memory (for C) */#endif#define ADC12MEM0_ ADC12MEM_ /* ADC12 Conversion Memory 0 */sfrw ADC12MEM0 = ADC12MEM0_;#define ADC12MEM1_ 0x0142 /* ADC12 Conversion Memory 1 */sfrw ADC12MEM1 = ADC12MEM1_;#define ADC12MEM2_ 0x0144 /* ADC12 Conversion Memory 2 */sfrw ADC12MEM2 = ADC12MEM2_;#define ADC12MEM3_ 0x0146 /* ADC12 Conversion Memory 3 */sfrw ADC12MEM3 = ADC12MEM3_;#define ADC12MEM4_ 0x0148 /* ADC12 Conversion Memory 4 */sfrw ADC12MEM4 = ADC12MEM4_;#define ADC12MEM5_ 0x014A /* ADC12 Conversion Memory 5 */sfrw ADC12MEM5 = ADC12MEM5_;#define ADC12MEM6_ 0x014C /* ADC12 Conversion Memory 6 */sfrw ADC12MEM6 = ADC12MEM6_;#define ADC12MEM7_ 0x014E /* ADC12 Conversion Memory 7 */sfrw ADC12MEM7 = ADC12MEM7_;#define ADC12MEM8_ 0x0150 /* ADC12 Conversion Memory 8 */sfrw ADC12MEM8 = ADC12MEM8_;#define ADC12MEM9_ 0x0152 /* ADC12 Conversion Memory 9 */sfrw ADC12MEM9 = ADC12MEM9_;#define ADC12MEM10_ 0x0154 /* ADC12 Conversion Memory 10 */#define ADC12MEM11_ 0x0156 /* ADC12 Conversion Memory 11 */sfrw ADC12MEM11 = ADC12MEM11_;#define ADC12MEM12_ 0x0158 /* ADC12 Conversion Memory 12 */sfrw ADC12MEM12 = ADC12MEM12_;#define ADC12MEM13_ 0x015A /* ADC12 Conversion Memory 13 */sfrw ADC12MEM13 = ADC12MEM13_;#define ADC12MEM14_ 0x015C /* ADC12 Conversion Memory 14 */sfrw ADC12MEM14 = ADC12MEM14_;#define ADC12MEM15_ 0x015E /* ADC12 Conversion Memory 15 */sfrw ADC12MEM15 = ADC12MEM15_;/*ADC12存贮控制类寄存器*/#define ADC12MCTL_ 0x0080 /* ADC12 Memory Control */#ifndef __IAR_SYSTEMS_ICC#define ADC12MCTL ADC12MCTL_ /* ADC12 Memory Control (for assembler) */#else#define ADC12MCTL ((char*) ADC12MCTL_) /* ADC12 Memory Control (for C) */#endif#define ADC12MCTL0_ ADC12MCTL_ /* ADC12 Memory Control 0 */sfrb ADC12MCTL0 = ADC12MCTL0_;#define ADC12MCTL1_ 0x0081 /* ADC12 Memory Control 1 */sfrb ADC12MCTL1 = ADC12MCTL1_;#define ADC12MCTL2_ 0x0082 /* ADC12 Memory Control 2 */sfrb ADC12MCTL2 = ADC12MCTL2_;#define ADC12MCTL3_ 0x0083 /* ADC12 Memory Control 3 */sfrb ADC12MCTL3 = ADC12MCTL3_;#define ADC12MCTL4_ 0x0084 /* ADC12 Memory Control 4 */sfrb ADC12MCTL4 = ADC12MCTL4_;#define ADC12MCTL5_ 0x0085 /* ADC12 Memory Control 5 */sfrb ADC12MCTL5 = ADC12MCTL5_;#define ADC12MCTL6_ 0x0086 /* ADC12 Memory Control 6 */sfrb ADC12MCTL6 = ADC12MCTL6_;#define ADC12MCTL7_ 0x0087 /* ADC12 Memory Control 7 */sfrb ADC12MCTL7 = ADC12MCTL7_;#define ADC12MCTL8_ 0x0088 /* ADC12 Memory Control 8 */sfrb ADC12MCTL8 = ADC12MCTL8_;#define ADC12MCTL9_ 0x0089 /* ADC12 Memory Control 9 */sfrb ADC12MCTL9 = ADC12MCTL9_;#define ADC12MCTL10_ 0x008A /* ADC12 Memory Control 10 */sfrb ADC12MCTL10 = ADC12MCTL10_;#define ADC12MCTL11_ 0x008B /* ADC12 Memory Control 11 */#define ADC12MCTL12_ 0x008C /* ADC12 Memory Control 12 */sfrb ADC12MCTL12 = ADC12MCTL12_;#define ADC12MCTL13_ 0x008D /* ADC12 Memory Control 13 */sfrb ADC12MCTL13 = ADC12MCTL13_;#define ADC12MCTL14_ 0x008E /* ADC12 Memory Control 14 */sfrb ADC12MCTL14 = ADC12MCTL14_;#define ADC12MCTL15_ 0x008F /* ADC12 Memory Control 15 */sfrb ADC12MCTL15 = ADC12MCTL15_;/* ADC12CTL0 内8位控制寄存器位*/#define ADC12SC 0x001 /*采样/转换控制位*/#define ENC 0x002 /* 转换允许位*/#define ADC12TOVIE 0x004 /*转换时间溢出中断允许位*/#define ADC12OVIE 0x008 /*溢出中断允许位*/#define ADC12ON 0x010 /*ADC12内核控制位*/#define REFON 0x020 /*参考电压控制位*/#define REF2_5V 0x040 /*内部参考电压的电压值选择位'0'为1.5V; '1'为2.5V*/#define MSH 0x080 /*多次采样/转换位*/#define MSC 0x080 /*多次采样/转换位*//*SHT0 采样保持定时器0 控制ADC12的结果存贮器MEM0~MEM7的采样周期*/#define SHT0_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT0_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT0_2 2*0x100 /*采样周期=TADC12CLK*16 */#define SHT0_3 3*0x100 /*采样周期=TADC12CLK*32 */#define SHT0_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT0_5 5*0x100 /*采样周期=TADC12CLK*96 */#define SHT0_6 6*0x100 /*采样周期=TADC12CLK*128 */#define SHT0_7 7*0x100 /*采样周期=TADC12CLK*192 */#define SHT0_8 8*0x100 /*采样周期=TADC12CLK*256 */#define SHT0_9 9*0x100 /*采样周期=TADC12CLK*384 */#define SHT0_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT0_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT0_12 12*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_13 13*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_14 14*0x100 /*采样周期=TADC12CLK*1024 */#define SHT0_15 15*0x100 /*采样周期=TADC12CLK*1024 *//*SHT1 采样保持定时器1 控制ADC12的结果存贮器MEM8~MEM15的采样周期*/#define SHT1_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT1_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT1_2 2*0x100 /*采样周期=TADC12CLK*16 */#define SHT1_3 3*0x100 /*采样周期=TADC12CLK*32 */#define SHT1_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT1_5 5*0x100 /*采样周期=TADC12CLK*96 */#define SHT1_6 6*0x100 /*采样周期=TADC12CLK*128 */#define SHT1_7 7*0x100 /*采样周期=TADC12CLK*192 */#define SHT1_8 8*0x100 /*采样周期=TADC12CLK*256 */#define SHT1_9 9*0x100 /*采样周期=TADC12CLK*384 */#define SHT1_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT1_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT1_12 12*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_13 13*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_14 14*0x100 /*采样周期=TADC12CLK*1024 */#define SHT1_15 15*0x100 /*采样周期=TADC12CLK*1024 *//* ADC12CTL1 内8位控制寄存器位*/#define ADC12BUSY 0x0001 /*ADC12忙标志位*/#define CONSEQ_0 0*2 /*单通道单次转换*/#define CONSEQ_1 1*2 /*序列通道单次转换*/#define CONSEQ_2 2*2 /*单通道多次转换*/#define CONSEQ_3 3*2 /*序列通道多次转换*/#define ADC12SSEL_0 0*8 /*ADC12内部时钟源*/#define ADC12SSEL_1 1*8 /*ACLK*/#define ADC12SSEL_2 2*8 /*MCLK*/#define ADC12SSEL_3 3*8 /*SCLK*/#define ADC12DIV_0 0*0x20 /*1分频*/#define ADC12DIV_1 1*0x20 /*2分频*/#define ADC12DIV_2 2*0x20 /*3分频*/#define ADC12DIV_3 3*0x20 /*4分频*/#define ADC12DIV_4 4*0x20 /*5分频*/#define ADC12DIV_5 5*0x20 /*6分频*/#define ADC12DIV_6 6*0x20 /*7分频*/#define ADC12DIV_7 7*0x20 /*8分频*/#define ISSH 0x0100 /*采样输入信号反向与否控制位*/#define SHP 0x0200 /*采样信号(SAMPCON)选择控制位*/#define SHS_0 0*0x400 /*采样信号输入源选择控制位ADC12SC*/ #define SHS_1 1*0x400 /*采样信号输入源选择控制位TIMER_A.OUT1*/#define SHS_2 %2。
MPS430单片机寄存器资料
MSP430单片机自学知识点笔记目录1、 PWM(脉冲宽度调制) (3)2、 ADC (3)3、DCO (3)4、 MSP430F1xx基础时钟模块有三个时钟输入源介绍 (3)5、基础时钟模块可以提供三种时钟信号,分别是ACLK、MCLK和SMCLK。
(3)注意:在MSP430单片机中一共有三个时钟源: (3)6、 DCO控制寄存器DCOCTL各位定义如下表: (4)7、基本时钟系统控制寄存器BCSCTL1 (4)8、基本时钟系统控制寄存器BCSCTL2 (5)9、 FCTL1寄存器 (6)10、 FCTL2寄存器 (7)11、 FCTL3寄存器 (8)12、IE1寄存器 (8)13、编程语句注释 (9)14、MSP430 头文件对Bitx的定义 (9)15、IFG1寄存器 (10)16、定时器的定时周期 (10)17、注意:定时器的工作方式 (10)18、#pragma vector=TIMERA0_VECTOR (12)19、TACCTLx寄存器 (12)20、符号运算 (14)21、延时函数 _NOP() (14)22、TACTL寄存器 (14)23、TAIV TA 中断向量寄存器 (15)24、_EINT();与_DINT(); (16)25、I/O端口(共涉及6组34个寄存器) (16)1) P1口 (16)2) P2口 (17)3) P3口 (18)4) P4口 (19)5) P5口 (19)6) P6口 (20)26、IAR快捷键操作 (21)27、语句_BIS_SR(LPM0_bits + GIE);解释 (21)28、定时器A的中断说明: (21)29、ADC12(共涉及32个寄存器和3个共用寄存器) (22)1) ADC12CTL0 转换控制寄存器 (22)2) ADC12CTL1 (24)MSP430单片机自学笔记1、PWM(脉冲宽度调制)脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
MSP430引脚功能介绍和寄存器详细分类汇编
引脚功能引脚名称序号I/O 说明Avcc 64 模拟供电电源正端.只为ADC和DAC的模拟部分供电Avss 62 模拟供电电源负端.只为ADC和DAC的模拟部分供电DVcc 1 数字供电电源正端.为所有数字部分供电DVss 63 数字供电电源负端.为所有数字部分供电P1.0/TACLK 12 I/O 通用数字I/O引脚/定时器A时钟信号TACLK输入P1.1/TA0 13 I/O 通用数字I/O引脚/定时器A捕捉:CCI0A输入,比较:OUT0输出P1.2/TA1 14 I/O 通用数字I/O引脚/定时器A捕捉:CCI1A输入,比较:OUT1输出P1.3/TA2 15 I/O 通用数字I/O引脚/定时器A捕捉:CCI2A输入,比较:OUT2输出P1.4/SMCLK 16 I/O 通用数字I/O引脚/SMCLK信号输出P1.5/TA0 17 I/O 通用数字I/O引脚/定时器A,比较:OUT0输出P1.6/TA1 18 I/O 通用数字I/O引脚/定时器A,比较:OUT1输出P1.7/TA2 19 I/O 通用数字I/O引脚/定时器A,比较:OUT2输出P2.0/ACLK 20 I/O 通用数字I/O引脚/ACLK输出P2.1/TAINCLK 21 I/O 通用数字I/O引脚/定时器A,INCLK上的时钟信号P2.2/CAOUT/TA0 22 I/O 通用数字I/O引脚/定时器A捕获:CCI0B输入/比较器输出P2.3/CA0/TA1 23 I/O 通用数字I/O引脚/定时器A,比较:OUT1输出/比较器A输入P2.4/CA1/TA2 24 I/O 通用数字I/O引脚/定时器A,比较:OUT2输出/比较器A输入P2.5/Rosc 25 I/O 通用数字I/O引脚,定义DCO标称频率的外部电阻输入P2.6/ADC12CLK/ 26 I/O 通用数字I/O引脚,转换时钟-12位ADC,DMA通道0外部触发器P2.7/TA0 27 I/O 通用数字I/O引脚/定时器A比较:OUT0输出P3.0/STE0 28 I/O 通用数字I/O引脚,USART0/SPI模式从设备传输使能端P3.1/SIMO0/SDA 29 I/O 通用数字I/O引脚,USART0/SPI模式的从入/主出,I2C数据P3.2/SOMI0 30 I/O 通用数字I/O引脚,USART0/SPI模式的从出/主入P3.3/UCLK0/SCL 31 I/O 通用数字I/O引脚,USART0/SPI模式的外部时钟输入,USART0 P3.4/UTXD0 32 I/O 通用数字I/O引脚,USART0/UART模式的传输数据输出P3.5/URXD0 33 I/O 通用数字I/O引脚,USART0/UART模式的接收数据输入P3.6/UTXD1 34 I/O 通用数字I/O引脚,USI1/UART模式的发送数据输出P3.7/URXD1 35 I/O 通用数字I/O引脚,USI1/UART模式的接收数据输入P4.0/TB0 36 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR0P4.1/TB1 37 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR1P4.2/TB2 38 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR2P4.3/TB3 39 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR3P4.4/TB4 40 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR4P4.5/TB5 41 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR5P4.6/TB6 42 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR6P4.7/TBCLK 43 I/O 通用数字I/O引脚,输入时钟TBCLK-定时器B7P5.0/STE1 44 I/O 通用数字I/O引脚,USART1/SPI模式从设备传输使能端P5.1/SIMO1 45 I/O 通用数字I/O引脚,USART1/SPI模式的从入/主出P5.2/SOMI1 46 I/O 通用数字I/O引脚,USART1/SPI模式的从出/主入P5.3/UCLK1 47 I/O 通用数字I/O引脚,USART1/SPI模式的外部时钟输入,USART0/SPI 模式的时钟输出- 8 -P5.4/MCLK 48 I/O 通用数字I/O引脚,主系统时钟MCLK输出P5.5/SMCLK 49 I/O 通用数字I/O引脚,子系统时钟SMCLK输出P5.6/ACLK 50 I/O 通用数字I/O引脚,辅助时钟ACLK输出P5.7/TboutH/ 51 I/O 通用数字I/O引脚,将所有PWM数字输出端口为高阻态-定时器B7P6.0/A0 59 I/O 通用数字I/O引脚,模拟量输入A0-12位ADCP6.1/A1 60 I/O 通用数字I/O引脚,模拟量输入A1-12位ADCP6.2/A2 61 I/O 通用数字I/O引脚,模拟量输入A2-12位ADCP6.3/A3 2 I/O 通用数字I/O引脚,模拟量输入A3-12位ADCP6.4/A4 3 I/O 通用数字I/O引脚,模拟量输入A4-12位ADCP6.5/A5 4 I/O 通用数字I/O引脚,模拟量输入A5-12位ADCP6.6/A6/DAC0 5 I/O 通用数字I/O引脚,模拟量输入A6-12位ADC,DAC.0输出P6.7/A7/DAC1/ 6 I/O 通用数字I/O引脚,模拟量输入A7-12位ADC,DAC.1输出,SVS输入RST/NMI 58 I 复位输入,不可屏蔽中断输入端口或者Bootstrap Lload启动(FLASHTCK 57 I 测试时钟,TCK是芯片编程测试和bootstrap loader启动的时钟输入端口TDI 55 I 测试数据输入,TDI用作数据输入端口,芯片保护熔丝连接到TDITDO/TDI 54 I/O 测试数据输出端口,TDO/TDI数据输出或者编程数据输出引脚TMS 56 I 测试模式选择,TMS用作芯片编程和测试的输入端口VeREF+ 10 I/P 外部参考电压的输入VREF+ 7 O 参考电压的正输出引脚VREF-/VeREF- 11 O 内部参考电压或者外加参考电压的引脚XIN 8 I 晶体振荡器XT1的输入端口,可连接标准晶振或者钟表晶振XOUT/TCLK 9 I/O 晶体振荡器XT1的输出引脚或测试时钟输入XT2IN 53 I 晶体振荡器XT2的输入端口,只能连接标准晶振XT2OUT 52 O 晶体振荡器XT2的输出引脚时钟模块76543210 DCO.2DCO.1DCO.0MOD.4MOD.3MOD.2MOD.1MOD.0DCO.0-DCO.4 定义8 种频率之一,可以分段调节DCOCLK 频率,相邻两种频率相差10%。
第3章MSP430单片机CPU和存储器
直接的存储器到存储器访问;
字节、字和20位操作方式。 MSP430单片机内部由一个16位或者20位的ALU(算术逻辑单元)、16个寄存器和一个指令控制单 元构成,如图3.3.1所示。
3.3 MSP430F5529单片机的中央处理器
图1 MSP430F5xx/6xx系列单片机结构概述
1.MSP430F5xx/6xx系列单片机的结构特征 ① 16位精简指令集CPU通过地址总线和数据总线直接与存储器和片上外设相连; ② 单片机内部包含嵌入式仿真系统,具有JTAG/SBW接口; ③ 智能时钟系统支持多种时钟,能够最大限度地降低功耗; ④ DMA控制器可显著地提高程序执行效率。
表3.4.1 MSP430F5529外围模块寄存器地址分配列表
3.2 MSP430F5529单片机特性、结构和外部引脚
3.2.2 MSP430F5529单片机的结构
图3.2.1 MSP430F5529单片机结构框图
3.2 MSP430F5529单片机特性、结构和外部引脚
3.2.3 MSP430F5529单片机的外部引脚
MSP430F5529单片机具有80个引脚,采用LQFP封装,其引脚分布如图3.2.2所示。
MSP430单片机采用的是冯· 诺依曼结构。冯· 诺依曼结构是一种将程序存储器和数据存
储器合并在一起且指令和数据共享同一总线的存储器结构。MSP430单片机的结构主要包
含16位精简指令集CPU、存储器、片上外设、时钟系统、仿真系统以及连接它们的数据总 线和地址总线,如图3.1.1所示。
图3.1.1 MSP430F5xx/6xx系列单片机结构
首先简单介绍MSP430单片机的结构和特性,然后重点介绍 MSP430单片机的CPU和存储器。
1 Msp430Flash型单片机外部Flash存储器介绍
1 Msp430Flash型单片机内部Flash存储器介绍MSP430的Flash存储器是可位、字节、字寻址和编程的存储器。
该模块由一个集成控制器来控制编程和擦除的操作。
控制器包括三个寄存器,一个时序发生器及一个提供编程、擦除电压的电压发生器。
Msp430的Flash存储器的特点有:1)产生内部编程电压2)可位、字节、字编程,可以单个操作,也可以连续多个操作3)超低功耗操作4)支持段擦除和多段模块擦除2 Flash存储器的分割Msp430 Flash存储器分成多个段。
可对其进行单个字节、字的写入,也可以进行连续多个字、字节的写入操作,但是最小的擦除单位是段。
Flash 存储器被分割成两部分:主存储器和信息存储器,两者在操作上没有什么区别。
两部分的区别在于段的大小和物理地址的不同。
以Msp430F149为例,信息存储器有两个128字节的段,即segmentA和segmentB,主存储器有多个512字节的段。
Msp430F149内部Flash的地址为0x1000H~0xFFFFH,计60K。
信息段SegA的起始地址为0x1080H,信息段SegB的起始地址为0x1000H。
3 Flash存储器的操作在默认状态下,处于读操作模式。
在读操作模式中,Flash存储器不能被擦除和写入,时序发生器和电压发生被关闭,存储器操作指向ROM区。
Msp430 Flash存储器在系统编程ISP(in-system programmable)不需要额外的外部电压。
CPU能够对Flash直接编程。
Flash存储器的写入/擦除通过BLKWRT、WRT、MERAS、ERASE等位确定。
3.1 擦除Flash存储器各位的缺省值为1,每一位都可以单独编程为0,但只有擦除操作3)判断BUSY位,只有当BUSY=0时才可以执行下一步4)使能段操作,设置ERASE、MERAS位等(如果是擦除一段,则ERASE=1,如果擦除多段,则MERAS=1,如果擦除整个Flash,则ERASE=1,MERAS=1)5)对擦除的地址范围内的任意位置作一次空写入,以启动擦除操作6)在擦除周期内,时钟源始终有效,不修改分频因子7)操作完成后,置位LOCK根据上述操作顺序,编写程序代码如下:void FlashErase(unsigned int adr){uchar *p0;FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//选择时钟源,分频FCTL3 = FWKEY;//清除LOCKwhile(FCTL3 & BUSY);//如果出于忙,则等待FCTL1 = FWKEY + ERASE;//使能段操作p0 = (unsigned char *)adr;//数值强制转换成指针*p0 = 0; //向段内任意地址写0,即空写入,启动擦除操作FCTL1 = FWKEY;FCTL3 = FWKEY + LOCK;while(FCTL3 & BUSY);}4.2 写入对Flash的写入数据可以是单字、单字节,也可以是连续多个字或字节(即块操作)。
MSP430引脚功能介绍和寄存器详细分类
MSP430引脚功能介绍和寄存器详细分类引脚功能引脚名称序号I/O 说明Avcc 64 模拟供电电源正端.只为ADC和DAC的模拟部分供电Avss 62 模拟供电电源负端.只为ADC和DAC的模拟部分供电DVcc 1 数字供电电源正端.为所有数字部分供电DVss 63 数字供电电源负端.为所有数字部分供电P1.0/TACLK 12 I/O 通用数字I/O引脚/定时器A时钟信号TACLK 输入P1.1/TA0 13 I/O 通用数字I/O引脚/定时器A捕捉:CCI0A输入,比较:OUT0输出P1.2/TA1 14 I/O 通用数字I/O引脚/定时器A捕捉:CCI1A输入,比较:OUT1输出P1.3/TA2 15 I/O 通用数字I/O引脚/定时器A捕捉:CCI2A输入,比较:OUT2输出P1.4/SMCLK 16 I/O 通用数字I/O引脚/SMCLK信号输出P1.5/TA0 17 I/O 通用数字I/O引脚/定时器A,比较:OUT0输出P1.6/TA1 18 I/O 通用数字I/O引脚/定时器A,比较:OUT1输出P1.7/TA2 19 I/O 通用数字I/O引脚/定时器A,比较:OUT2输出P2.0/ACLK 20 I/O 通用数字I/O引脚/ACLK输出P2.1/TAINCLK 21 I/O 通用数字I/O引脚/定时器A,INCLK上的时钟信号P2.2/CAOUT/TA0 22 I/O 通用数字I/O引脚/定时器A捕获:CCI0B输入/比较器输出P2.3/CA0/TA1 23 I/O 通用数字I/O引脚/定时器A,比较:OUT1输出/比较器A输入P2.4/CA1/TA2 24 I/O 通用数字I/O引脚/定时器A,比较:OUT2输出/比较器A输入P2.5/Rosc 25 I/O 通用数字I/O引脚,定义DCO标称频率的外部电阻输入P2.6/ADC12CLK/ 26 I/O 通用数字I/O引脚,转换时钟-12位ADC,DMA通道0外部触发器P2.7/TA0 27 I/O 通用数字I/O引脚/定时器A比较:OUT0输出P3.0/STE0 28 I/O 通用数字I/O引脚,USART0/SPI模式从设备传输使能端P3.1/SIMO0/SDA 29 I/O 通用数字I/O引脚,USART0/SPI模式的从入/主出,I2C数据P3.2/SOMI0 30 I/O 通用数字I/O引脚,USART0/SPI模式的从出/主入P3.3/UCLK0/SCL 31 I/O 通用数字I/O引脚,USART0/SPI模式的外部时钟输入,USART0 P3.4/UTXD0 32 I/O 通用数字I/O引脚,USART0/UART模式的传输数据输出P3.5/URXD0 33 I/O 通用数字I/O引脚,USART0/UART模式的接收数据输入P3.6/UTXD1 34 I/O 通用数字I/O引脚,USI1/UART模式的发送数据输出P3.7/URXD1 35 I/O 通用数字I/O引脚,USI1/UART模式的接收数据输入P4.0/TB0 36 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR0P4.1/TB1 37 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR1P4.2/TB2 38 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR2P4.3/TB3 39 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR3P4.4/TB4 40 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR4P4.5/TB5 41 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR5P4.6/TB6 42 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR6P4.7/TBCLK 43 I/O 通用数字I/O引脚,输入时钟TBCLK-定时器B7P5.0/STE1 44 I/O 通用数字I/O引脚,USART1/SPI模式从设备传输使能端P5.1/SIMO1 45 I/O 通用数字I/O引脚,USART1/SPI模式的从入/主出P5.2/SOMI1 46 I/O 通用数字I/O引脚,USART1/SPI模式的从出/主入P5.3/UCLK1 47 I/O 通用数字I/O引脚,USART1/SPI模式的外部时钟输入,USART0/SPI 模式的时钟输出- 8 -P5.4/MCLK 48 I/O 通用数字I/O引脚,主系统时钟MCLK输出P5.5/SMCLK 49 I/O 通用数字I/O引脚,子系统时钟SMCLK输出P5.6/ACLK 50 I/O 通用数字I/O引脚,辅助时钟ACLK输出P5.7/TboutH/ 51 I/O 通用数字I/O引脚,将所有PWM数字输出端口为高阻态-定时器B7P6.0/A0 59 I/O 通用数字I/O引脚,模拟量输入A0-12位ADC P6.1/A1 60 I/O 通用数字I/O引脚,模拟量输入A1-12位ADC P6.2/A2 61 I/O 通用数字I/O引脚,模拟量输入A2-12位ADC P6.3/A3 2 I/O 通用数字I/O引脚,模拟量输入A3-12位ADC P6.4/A4 3 I/O 通用数字I/O引脚,模拟量输入A4-12位ADC P6.5/A5 4 I/O 通用数字I/O引脚,模拟量输入A5-12位ADCP6.6/A6/DAC0 5 I/O 通用数字I/O引脚,模拟量输入A6-12位ADC,DAC.0输出P6.7/A7/DAC1/ 6 I/O 通用数字I/O引脚,模拟量输入A7-12位ADC,DAC.1输出,SVS输入RST/NMI 58 I 复位输入,不可屏蔽中断输入端口或者Bootstrap Lload启动(FLASHTCK 57 I 测试时钟,TCK是芯片编程测试和bootstrap loader启动的时钟输入端口TDO/TDI 54 I/O 测试数据输出端口,TDO/TDI数据输出或者编程数据输出引脚TMS 56 I 测试模式选择,TMS用作芯片编程和测试的输入端口VeREF+ 10 I/P 外部参考电压的输入VREF+ 7 O 参考电压的正输出引脚VREF-/VeREF- 11 O 内部参考电压或者外加参考电压的引脚XIN 8 I 晶体振荡器XT1的输入端口,可连接标准晶振或者钟表晶振XOUT/TCLK 9 I/O 晶体振荡器XT1的输出引脚或测试时钟输入XT2IN 53 I 晶体振荡器XT2的输入端口,只能连接标准晶振XT2OUT 52 O 晶体振荡器XT2的输出引脚时钟模块DCO.0-DCO.4 定义8 种频率之一,可以分段调节DCOCLK 频率,相邻两种频率相MOD.0-MOD.4 定义在32 个DCO 周期中插入的Fdco+1 周期个数,而在下的DCO 周期中为Fdco 周期,控制改换DCO 和DCO+1 选择的两种频率。
第1讲 MSP430单片机系列简介(下)
第1讲MSP430单片机系列简介(下)作者:张俊谟来源:《电子世界》2004年第02期4.MSP430系列的内部结构概述MSP430系列器件包含CPU、程序存储器(ROM、 OTP和Flash ROM)、数据存储器(RAM)、运行控制、外围模块、振荡器和倍频器等主要功能模块。
其基本结构如图1所示。
可以看出,MSP430内部包含了计算机的所有部件,是一个真正的单片机(微控制器MCU)。
CPU CPU 由一个16位的ALU、16个寄存器和一套指令控制逻辑组成,其逻辑简图如图2所示。
在16个寄存器中,程序计数器PC、堆栈指针SP、状态寄存器SR和常数发生器CGl、CG2这4个寄存器有特殊用途。
除了R3和R2外,所有寄存器都可作为通用寄存器来用于所有指令操作。
常数发生器是为指令执行时提供常数的,而不是用于存储数据的。
对CGl、CG2访问的寻址模式可以区分常数的数据。
在CPU内部有一组16位数据总线和16位的地址总线;CPU运行正交设计、对模块高度透明的精简指令集;PC、SR和SP配合精简指令组所实现的控制,使应用开发可实现复杂的寻址模式和软件算法。
存储器 MSP430系列采用“冯-纽曼结构”。
因此,RAM、ROM和全部外围模块都位于同一个地址空间内,即用一个公共的空间对全部功能模块进行寻址。
支持外部扩展存储器是将来性能增强的目标。
特殊功能寄存器及外围模块安排在000H~1FFH区域;RAM和ROM共享0200H~FFFFH区域,数据存储器(RAM)的起始地址是0200H。
存储器与CPU及存储器数据总线(MDB)、存储器地址总线(MAB)的连接关系如图3所示。
(1)程序存储器 MSP430系列程序存储器的类型有ROM、OTP和Flash ROM三种,存储器的类型和容量示于本刊网站的表1中。
ROM的容量在1~60KB之间;对于Flash型的芯片,内部还集成有两段128B(共256B)的信息存储器以及1KB存放自举程序的自举存储器(BOOT ROM);对代码存储器的访问总是以字形式取得代码,而对数据可以用字或字节方式访问。
msp430基础知识
5:完善的中断服务功能。
6:4种计数功能的选择
7:8种输出计数功能的选择。
8:支持多种时序控制
9:DMA使能
TAR 16位计数器
1:修改Timer _A:当计数时钟不是MLCK时,写入应该计数器在计数器停止计数时,因为它与CPU不同步,可能引起时间的竞争。
2:增计数模式
捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器。因为CCR0为16位寄存器,所以该模式适用于定时周期小于65536的连续计数情况。计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。
LFXT1CLK:低频时钟源
XT2CLK:高频时钟源
DCOCLK:数字控制RC振荡器
时钟发生器的原理说明
问题的提出:
1: 高频,以便对系统硬件请求和事件作出快速的响应。
2:低频 以便将电流消耗降至最小
{
;
}
基本定时器
MSP430具有基本定时器(Basic Timer1),Basic Timer1经常用在低功耗应用中,它的工作目的就是支持软件和外围模块工作在低频率、低功耗条件下。Basic Timer1通过对SMCLK 和ACLK进行分频,向其他外围模块提供低频率控制信号。Basic Timer1非常适合于周期性地产生中断
。(F14系列没有该定时器)
Timer_A 的特性
1:输入时钟可以有多种选择,可以是慢始终、快时钟以及外部时钟。
2:没有自动重装时间常数功能,但产生的定时脉冲或PWM(脉宽调制)信号没有软件带来的误差。
3:不仅能捕获外部事件发生的时间还可以锁定其发生时的高低电平。
MSP430系列寄存器详细分类及介绍
时钟模块DCO.0-DCO.4 定义8 种频率之一,可以分段调节DCOCLK 频率,相邻两种频率相差10%。
而频率由注入直流发生器的电流定义。
MOD.0-MOD.4 定义在32 个DCO 周期中插入的Fdco+1 周期个数,而在下的DCO 周期中为Fdco 周期,控制改换DCO 和DCO+1 选择的两种频率。
如果DCO 常数为7,表示已经选择最高频率,此时不能利用MOD.0-MOD.4 进行频率调整。
BC SCT L1基本时钟系统控制寄存器XT2OFF 控制XT2 振荡器的开启与关闭。
TX2OFF=0,XT2 振荡器开启。
TX2OFF=1,TX2 振荡器关闭(默认为TX2 关闭)XTS 控制LFXT1 工作模式,选择需结合实际晶体振荡器连接情况。
XTS=0,LFXT1 工作在低频模式(默认)。
XTS=1,LFXT1 工作在高频模式(必须连接有高频相应的高频时钟源)。
DIV A.0 DIV A.1 控制ACLK 分频。
0 不分频(默认)1 2 分频2 4 分频3 8 分频XT5V 此位设置为0。
Resl1.0,Resl1.1,Resl1.2 三位控制某个内部电阻以决定标称频率。
Resl=0,选择最低的标称频率。
…….. Resl=7,选择最高的标称频率。
SELM.1 S EL M.0选择MCLK 时钟源0 时钟源为DCOCLK(默认)1 时钟源为DCOCLK2 时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CL K(对于MSP430F13/14/15/16X);3 时钟源为LFTXTICLK。
D I V M.1D IV M.0选择MCLK 分频0 1 分频(默认)1 2 分频2 4 分频3 8 分频SELS 选择SMCLK 时钟源0 时钟源为DCOCLK(默认)1 时钟源为LFXT1CLK(对于MSP430F11/12X),时钟源为XT2CL K(对于MSP430F13/14/15/16X)。
MSP430寄存器详解
/*********************************** 中断 ******************************/ /*中断使能1*/#define IE1_ 0x0000sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/#define OFIE 0x02 /*外部晶振故障中断使能*/#define NMIIE 0x10 /*非屏蔽中断使能*/#define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/#define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*/中断使能IE1UTXIE0 URXIE0 ACCVIE NMIIE OFIE WDTIE /*中断标志1*/#define IFG1_ 0x0002sfrb IFG1 = IFG1_;#define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收中断标志*/#define UTXIFG0 0x80 /*串口0发送中断标志*/中断标志IFG1UTXIFG0 URXIFG0 NMIIFG OFIFG WDTIFG /* 中断模式使能1 */#define ME1_ 0x0004sfrb ME1 = ME1_;#define URXE0 0x40 /* 串口0接收中断模式使能 */#define USPIE0 0x40 /* 同步中断模式使能 */#define UTXE0 0x80 /* 串口0发送中断模式使能 */中断模式使能ME1UTXE0 URXE0USPIE0/* 中断使能2 */#define IE2_ 0x0001sfrb IE2 = IE2_;#define URXIE1 0x10 /* 串口1接收中断使能 */#define UTXIE1 0x20 /* 串口1发送中断使能 */中断使能IE2UTXIE1 URXIE1/* 中断标志2 */#define IFG2_ 0x0003sfrb IFG2 = IFG2_;#define URXIFG1 0x10 /* 串口1接收中断标志 */#define UTXIFG1 0x20 /* 串口1发送中断标志 */中断标志IFG2UTXIFG1 URXIFG1/* 中断模式使能2 */#define ME2_ 0x0005sfrb ME2 = ME2_;#define URXE1 0x10 /* 串口1接收中断模式使能 */#define USPIE1 0x10 /* 同步中断模式使能 */#define UTXE1 0x20 /* 串口1发送中断模式使能 */中断模式使能ME2UTXE1 URXE1USPIE1/********************************** 看门狗 ******************************/ #define WDTCTL_ 0x0120 P145 sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/ #define WDTTMSEL 0x0010 /*选择模式 0: 看门狗模式; 1: 定时器模式*/ #define WDTNMI 0x0020 /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/ #define WDTNMIES 0x0040 /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/ #define WDTHOLD 0x0080 /*停止看门狗定时器工作 0:启动;1:停止*/看门狗控制寄存器WDTCTL口令WDTHOLD WDTNMIES WDTNMI WDTTMSEL WDTCNTCL WDTSSEL WDTIS1 WDTIS0 注:口令(15-8):读取为69H,写为5AH。
msp430各功能模块的介绍
各个时钟信号源介绍如下:1、LFXT1CLK:低频/高频时钟源。
可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器。
2、XT2CLK:高频时钟源。
需要外接两个震荡电容器。
可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器和外部时钟输入。
较常用的晶体是8MHz的。
3、DCOCLK:内部数字可控制的RC振荡器。
MSP430单片机时钟模块提供3个时钟信号以供给片内各部分电路使用,这3个时钟信号分别是:(1)ACLK:辅助时钟信号。
ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后得到的。
由BCSCTL1寄存器设置DIV A相应位来决定分频因子。
ACLK可提供给CPU外围功能模块做时钟信号使用。
(2)MCLK:主时钟信号。
MCLK是由3个时钟源所提供的。
它们分别是:LFXT1CLK、XT2CLK、和DCO时钟源信号。
MCLK主要用于MCU和相关模块做时钟。
同样可设置相关寄存器来决定分频因子及相关设置。
(3)SMCLK:子系统时钟。
SMCLK由2个时钟源信号提供,他们分别是XT2CLK 和DCO。
如果是F11或F11X1系列单片机,则由LFXT1CLK代替XT2CLK。
同样可设置相关寄存器来决定分频因子及相关的设置。
低频振荡器LFXT1:LFXT1支持超低功耗,它在低频模式下使用一个32768Hz的晶体。
不需要任何电容因为在低频模式下内部集成了电容。
低频振荡器也支持高频模式和高速晶体,但连接时每端必须加电容。
电容的大小根据所接晶体频率的高低来选择。
低频振荡器在低频和高频模式下都可以选择从XIN引脚接入一个外部输入时钟信号,但所接频率必须根据所设定的工作模式来选择,并且OSCOFF位必须复位。
高频振荡器LFXT2:LFXT2作为MSP430的第二晶体振荡器。
与低频相比,其功耗更大。
高频晶体真大气外接在XIN2和XOUT2两个引脚,并且必须外接电容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DCOx:定义8种频率之一可分段调节DCOCLK频率,步进10%。
MODx:定义在32个DCO周期中插入f(DCO+1)的个数,控制切换DCO和DCO+1选择的频率。
XT2OFF:XT2开关控制寄存器,复位时开启XT2振荡器。
默认为置位状态。
XTS:LFTX1工作模式控制寄存器,默认为复位低频模式,置位时需外接高频时钟源DIVAx:控制ACLK分频,0时(默认)不分频/1时2分频/2时4分频/3时8分频。
XT5V:恒为0。
RSELx:选择标称频率控制位,为0时选最低,为7时选最高。
SELMx:MCLK时钟源选择控制位,0和1为DCOCLK(默认)/2为LFTX1CLK或TX2CLK/3为LFTX1CLK。
DIVMx:分频控制位,0时1分频(默认)/1时2分频/2时4分频/3时8分频。
SELS:SMCLK时钟源选择控制位。
0时为DCOCLK(默认)/1时为LFTX1CLK或TX2CLK。
DIVSx:SMCLK分频控制位。
0时(默认)不分频/1时2分频/2时4分频/3时8分频。
DCOR:DCO电阻选择控制位。
0时内部/1时外部。
URXBUF:接收数据缓存。
URCTL:接收控制寄存器。
SYNC:模式选择,复位UART模式(异步),置位SPI模式(同步)。
MM:多机模式选择位,复位线路空闲多机协议,置位地址位多机协议。
SWRST:控制位。
在置位下设置串口,复位后设置中断使能。
ADC:模数转换UTXBUF:发送数据缓存。
UxMCTL:波特率调整控制寄存器,放波特率小数部分UBR:波特率选择寄存器。
其中数字以二进制形式选择2^x波特率整数部分URXWIE:接收唤醒中断允许位,复位所有接收到的字符都能置位URXIFG,置位只有接收到地址字符才能置位URXIFG。
RXWAKE:接收唤醒检测位,在地址位多机模式,接收字符地址位置位时,该机被唤醒,在线路空闲多机模式,在接收字符前检测到URXD线路空闲时,该机被唤醒,RXWAKE置位。
RXERR:接受错误标志位,复位无错误。
ADC12CTL0: 转换控制寄存器0ADC12CTL1: 转换控制寄存器1ADC12MCTLx: 转换存储器控制寄存器。
时钟模块USARTx:异步通信寄存器。
ADC12IFG:中断标志寄存器,其中16位分别对应转换控制寄存器ADC12MEMx,置位表示转换结束且结果已存入转换存储寄存器。
ADC12IE:中断使能寄存器,置位时允许相应中断标志位ADC12IFG.x置位时发生中断。
SPB:停止位选择,决定发送的停止位的个数,复位1位,置位两位。
CHAR:字符长度,复位7位,置位8位。
LISTEN:反馈选择,复位无反馈,置位时发送信号的同时通过内部反馈给接收器。
端口P1和P2WDT: 看门狗定时器 Timer-A: 定时器A BCSCTL2:基本时钟控制系统寄存器TMSEL:工作模式选择寄存器,复位时看门狗模式,置位时定时器模式。
HOLD:看门狗开关,复位时看门狗工作,置位时关闭看门狗。
Basic Timer1 基本定时器定时器TACTL:TA控制寄存器。
WDTCTCL:控制寄存器。
CNTCL:置位时清除累加器WDTCNT。
IS0,IS1:计数次数选择,0时32768次/1时8192次/2时512次/3时64次。
SSEL:WDTCTCL时钟源选择器,复位时选SMCLK,置位时选ACLK。
PEV:奇偶校验位,校验允许时有效,复位奇校验,置位偶校验。
BTCNT2:分频输入时钟。
SSEL1,SSEL0:时钟源选择位,00时选TACLK/01时选ACLK/10时选MCLK/11时选INCLK。
ID1,ID0:分频选择位,00不分频/01时2分频/10时4分频/11时8分频。
MC1,MC0:计数器模式控制位,00停止/01增计数/10连续计数/11先增后减计数。
XT2CLK高频时钟源,受SR状态寄存器中XT2OFF控制。
默认工作在高频450kHZ--8M状态。
SMCLK:子系统时钟,可用软件选择LFXT1CLK和DC0CLK或XT2CLK和DC0CLK经1、2、4、8分频后得到主要用于高速外围设备。
ACLK:辅助时钟,由LFXT1CLK信号经1、2、4、8分频得到,一般用于低速外设。
BTCTL:控制寄存器。
TAR:TA累加器。
时钟输入源LFXT1CLK低频时钟源,受SR状态寄存器中OscOFF控制。
复位时工作。
默认工作在低频状态32768HZ,也可外接450--8M晶振。
WDTCNT:累加器,16为增计数器,不能读写,受WDTCTL控制。
PxOUT:输出寄存器,可按位操作,复位时输出低电平,置位时输出高电平。
PxIFG:中断标志寄存器,其中8个标志位分别对应8个引脚的中断请求。
MCLK:系统主时钟,可用软件选择LFXT1CLK/XT2CLK/DC0CLK三者之一经1、2、4、8分频后得到主要用于CPU和系统。
PxIES:中断触发沿选择寄存器,复位时遇上升沿使相应标志位置位,置位时遇下降沿使相应标志位置位。
PxIE:中断使能寄存器,其中8位分别对应8个引脚是否允许中断,复位不允许,置位允许。
DCOCTL:DCO控制寄存器BCSCTL1:基本时钟控制系统寄存器CCIS1,CCIS0:捕获事件输入源选择位,00选CCLxA/01选CCLxB/10选GND/11选Vcc。
CAP:比较/捕获模式选择位,复位比较/置位捕获。
CM1,CM0:捕获模式选择位,00禁止捕获/01上升捕获/10下降沿捕获/11上升沿下降沿都捕获。
SCS:捕获信号与时钟同/异步关系选择位,0异步捕获/1同步捕获。
SCCIx:输入信号锁存备读出位。
输出时钟信号NMIES:出发边沿选择,复位时遇上升沿出发NMI中断,置位时下降沿触发。
CCTLx:捕获/比较控制寄存器NMI:RST/NMI引脚功能选择,复位时为复位信号输入端,置位时此引脚为边沿触发的非屏蔽中断输入。
CLR:定时器清除位,置位时清除累加器和输入分频器复位。
PxSEL:端口复用寄存器,复位时引脚为I/O口,置位时引脚为外围模块功能。
PxREN:上拉下拉电阻使能寄存器,复位禁止上拉/下拉电阻,置位允许。
PxDIR:输入输出方向寄存器,可按位操作,复位时输入(默认),置位时输出。
PxIN:输入寄存器,只读存储器不可写入。
TAIE:定时器中断允许位,复位时禁止定时器溢出中断,置位允许中断。
TAIFG:定时器溢出标志位。
ADC12SC:采样/转换控制位,在ENC置位ISSH复位时SHP置位下ADC12SC由0变为1时启动一次转换,完成后自动复位,SHP复位下ADC12SC保持高电平时采样复位时启动一次转换。
ENC:转换允许位,复位不能启动转换(默认),置位时允许转换首次转换由SAMPCON启动,且在CONSEQ=0(单通道单次转换模式)ADC12BUSY=1(ADC12处于转换或采样CCRx:捕获/比较寄存器。
在捕获方式中,满足捕获条件时,硬件自动写入当前TAR值。
TAIV:中断向量寄存器,其中值指向引起中断的中断源。
CCIEx:捕获/比较模块中断允许位,复位禁止中断,置位允许中断。
CCIx:在捕获模式下由CCIS0和CCIS1选择的输入信号可有该位读出,在比较模式下该位复位。
OUT:输出信号位,复位低电平,置位高电平。
需OUTMODx位支持。
COV:捕获溢出标志位,0时无捕获溢出,1时发生捕获溢出。
在比较模式下被复位。
MSC:多次采样/转换位,在SHP=1、CONSEQ!=0时复位MSC则每次转换需要SHI信号上升沿触发采样定时器,置位MSC只需首次转换需要SHI信号上升沿触发采样定时器,而后采样转换SHT1/SHT0:采样保持定时器,定义转换采样时序与采样时钟ADC2CLK的关系。
将在前一次转换完成后立即进行。
OUTMODx:输出模式选择位,000输出/001置位/010PWM翻转或复位/011PWM置位或复位/100翻转/101复位/110PWM翻转或置位/PWM复位或置位。
模式)下复位ENC转换立即结束,在CONSEQ!=0(非单通道单次转换)下复位ENC则完成本次转换后停止。
SSEL,DIV:控制BTCNT2的输入频率,00ACLK/01ACLk/256/10MCLK/11MCLK/256。
HOLD:停止计数器。
置位时BTCNT2停止工作,置位且DIV置位BTCNT1停止工作。
FRFQ1,FRFQ0:选择4个BTCNT1的输出之一做Flcd的输入信号。
0032分/0164分/10128分/11256分。
IP0,IP1,IP2:定义定时间隔,中断频率=Fclk/IP值。
CCIFGx:捕获比较中断标志位,捕获模式下CCRx值捕获TAR值时置位,比较模式下定时器TAR值等于CCRx值时置位。
ADC12TVIE:转换时间溢出中断允许位,复位不允许因本次转换未完成又有采样请求而引发的中断,置位允许中断。
ADC12ON:ADC12内核控制位,复位关闭内核,置位打开内核。
ADC12OVIE:溢出中断允许位,复位时不允许因ADC12MENx中原有数据未读出又有新的转换结果要写入而引发的中断,职位是允许引发中断。
ADC12DIV:时钟源分频选择位,分频数位该三位二进制数加1。
CSStartADD:转换存储器地址位,定义单次转换地址或序列转换首地址。
SHS:采样触发输入源选择位,0选ADC12SC/1选Timer-A.OUT1/2选Timer-B.OUT0/3选Timer-B.OUT1。
SHP:采样信号(SAMPCON)选择控制位,复位时选采样触发数去信号,置位选采样定时器,并由采样输入信号的上升沿触发采样定时器。
ISSH:采样输入信号方向控制位,复位同相输入,置位反相输入。
REFON:参考电压控制位,复位关闭内部参考电压发生器,置位打开。
2.5V:内部参考电压电压值选择位,复位选1.5V,置位选2.5V。
BRK:打断检测位,复位没有被打断。
URXEIE:接收出错中断允许位,复位不接收出错字符并且不改变URXIFG标志位,置位接收并置位URXIFG。
ADC12SSEL:ADC12内核时钟源选择,0内部时钟源ADC12OSC/1ACLK/2MCLK/3SMCLK。
ADC12BUSY:ADC12忙标志位。
只用于单通道单次转换模式。
EOS:序列结束控制位,复位未结束,置位该序列最后一次转换。
CONSEQ:转换模式选择位,0单通道单次/1序列通道单次/2单通道多次/3序列通道多次。
ADC12IV:中断向量寄存器。
ADC12MEM0--15: 低十二位存放A/D转换结果。
PENA:校验允许位,置位允许校验。
Uxctl:通信控制寄存器。
两个外部振荡器失效时自动被选作MCLK的时钟源。
DCOCLK数字控制RC振荡器受SCG0控制。