当前位置:文档之家› msp430头文件解释说明

msp430头文件解释说明

msp430头文件解释说明
msp430头文件解释说明

MSP430F149祥解

对头文件做了比较详细的注释,记不清寄存器的人可以看看

#ifndef__msp430x14x

#define__msp430x14x

/************************************************************ *STANDARD BITS

************************************************************/

#define BIT00x0001

#define BIT10x0002

#define BIT20x0004

#define BIT30x0008

#define BIT40x0010

#define BIT50x0020

#define BIT60x0040

#define BIT70x0080

#define BIT80x0100

#define BIT90x0200

#define BITA0x0400

#define BITB0x0800

#define BITC0x1000

#define BITD0x2000

#define BITE0x4000

#define BITF0x8000

/************************************************************ *STATUS REGISTER BITS

************************************************************/

#define C0x0001

#define Z0x0002

#define N0x0004

#define V0x0100

#define GIE0x0008

#define CPUOFF0x0010

#define OSCOFF0x0020

#define SCG00x0040

#define SCG10x0080

/*Low Power Modes coded with Bits4-7in SR*/

#ifndef__IAR_SYSTEMS_ICC/*Begin#defines for assembler*/

#define LPM0CPUOFF

#define LPM1SCG0+CPUOFF

#define LPM2SCG1+CPUOFF

#define LPM3SCG1+SCG0+CPUOFF

#define LPM4SCG1+SCG0+OSCOFF+CPUOFF

/*End#defines for assembler*/

#else/*Begin#defines for C*/

#define LPM0_bits CPUOFF

#define LPM1_bits SCG0+CPUOFF

#define LPM2_bits SCG1+CPUOFF

#define LPM3_bits SCG1+SCG0+CPUOFF

#define LPM4_bits SCG1+SCG0+OSCOFF+CPUOFF

#include

#define LPM0_BIS_SR(LPM0_bits)/*Enter Low Power Mode0*/

#define LPM0_EXIT_BIC_SR(LPM0_bits)/*Exit Low Power Mode0*/

#define LPM1_BIS_SR(LPM1_bits)/*Enter Low Power Mode1*/

#define LPM1_EXIT_BIC_SR(LPM1_bits)/*Exit Low Power Mode1*/

#define LPM2_BIS_SR(LPM2_bits)/*Enter Low Power Mode2*/

#define LPM2_EXIT_BIC_SR(LPM2_bits)/*Exit Low Power Mode2*/

#define LPM3_BIS_SR(LPM3_bits)/*Enter Low Power Mode3*/

#define LPM3_EXIT_BIC_SR(LPM3_bits)/*Exit Low Power Mode3*/

#define LPM4_BIS_SR(LPM4_bits)/*Enter Low Power Mode4*/

#define LPM4_EXIT_BIC_SR(LPM4_bits)/*Exit Low Power Mode4*/

#endif/*End#defines for C*/

/************************************************************

*PERIPHERAL FILE MAP

************************************************************/

/************************************************************

*特殊功能寄存器地址和控制位

************************************************************/

/*中断使能1*/

#define IE1_0x0000

sfrb IE1=IE1_;

#define WDTIE0x01/*看门狗中断使能*/

#define OFIE0x02/*外部晶振故障中断使能*/

#define NMIIE0x10/*非屏蔽中断使能*/

#define ACCVIE0x20/*可屏蔽中断使能/flash写中断错误*/ #define URXIE00x40/*串口0接收中断使能*/

#define UTXIE00x80/*串口0发送中断使能*/

/*中断标志1*/

#define IFG1_0x0002

sfrb IFG1=IFG1_;

#define WDTIFG0x01/*看门狗中断标志*/

#define OFIFG0x02/*外部晶振故障中断标志*/

#define NMIIFG0x10/*非屏蔽中断标志*/

#define URXIFG00x40/*串口0接收中断标志*/

#define UTXIFG00x80/*串口0发送中断标志*/

/*中断模式使能1*/

#define ME1_0x0004

sfrb ME1=ME1_;

#define URXE00x40/*串口0接收中断模式使能*/

#define USPIE00x40/*同步中断模式使能*/

#define UTXE00x80/*串口0发送中断模式使能*/

/*中断使能2*/

#define IE2_0x0001

sfrb IE2=IE2_;

#define URXIE10x10/*串口1接收中断使能*/

#define UTXIE10x20/*串口1发送中断使能*/

/*中断标志2*/

#define IFG2_0x0003

sfrb IFG2=IFG2_;

#define URXIFG10x10/*串口1接收中断标志*/

#define UTXIFG10x20/*串口1发送中断标志*/

/*中断模式使能2*/

#define ME2_0x0005

sfrb ME2=ME2_;

#define URXE10x10/*串口1接收中断模式使能*/

#define USPIE10x10/*同步中断模式使能*/

#define UTXE10x20/*串口1发送中断模式使能*/

/************************************************************

*看门狗定时器的寄存器定义

************************************************************/

#define WDTCTL_0x0120

sfrw WDTCTL=WDTCTL_;

#define WDTIS00x0001/*选择WDTCNT的四个输出端之一*/

#define WDTIS10x0002/*选择WDTCNT的四个输出端之一*/

#define WDTSSEL0x0004/*选择WDTCNT的时钟源*/

#define WDTCNTCL0x0008/*清除WDTCNT端:为1时从0开始计数*/

#define WDTTMSEL0x0010/*选择模式0:看门狗模式;1:定时器模式*/

#define WDTNMI0x0020/*选择NMI/RST引脚功能0:为RST;1:为NMI*/

#define WDTNMIES0x0040/*WDTNMI=1时.选择触发延0:为上升延1:为下降延*/

#define WDTHOLD0x0080/*停止看门狗定时器工作0:启动;1:停止*/

#define WDTPW0x5A00/*写密码:高八位*/

/*SMCLK=1MHz定时器模式*/

#define WDT_MDLY_32WDTPW+WDTTMSEL+WDTCNTCL /*TSMCLK*2POWER15=32ms复位状态*/

#define WDT_MDLY_8WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /*TSMCLK*2POWER13=8.192ms"*/

#define WDT_MDLY_0_5WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /*TSMCLK*2POWER9=0.512ms"*/

#define WDT_MDLY_0_064WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /*TSMCLK*2POWER6=0.512ms"*/

/*ACLK=32.768KHz定时器模式*/

#define WDT_ADLY_1000WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /*TACLK*2POWER15=1000ms"*/

#define WDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0/* TACLK*2POWER13=250ms"*/

#define WDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2POWER9=16ms"*/

#define WDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/* TACLK*2POWER6=1.9ms"*/

/*SMCLK=1MHz看门狗模式*/

#define WDT_MRST_32WDTPW+WDTCNTCL /*TSMCLK*2POWER15=32ms复位状态*/

#define WDT_MRST_8WDTPW+WDTCNTCL+WDTIS0 /*TSMCLK*2POWER13=8.192ms"*/

#define WDT_MRST_0_5WDTPW+WDTCNTCL+WDTIS1 /*TSMCLK*2POWER9=0.512ms"*/

#define WDT_MRST_0_064WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /*TSMCLK*2POWER6=0.512ms"*/

/*ACLK=32KHz看门狗模式*/

#define WDT_ARST_1000WDTPW+WDTCNTCL+WDTSSEL /*TACLK*2POWER15=1000ms"*/

#define WDT_ARST_250WDTPW+WDTCNTCL+WDTSSEL+WDTIS0

/*TACLK*2POWER13=250ms"*/

#define WDT_ARST_16WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /*TACLK*2POWER9=16ms"*/

#define WDT_ARST_1_9WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /*TACLK*2POWER6=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/6I/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_;

//2

/************************************************************

*USART串口寄存器"UCTL","UTCTL","URCTL"定义的各个位可串口1串口2公用

************************************************************/

/*UCTL串口控制寄存器*/

#define PENA0x80/*校验允许位*/

#define PEV0x40/*偶校验为0时为奇校验*/

#define SPB0x20/*停止位为2为0时停止位为1*/

#define CHAR0x10/*数据位为8位为0时数据位为7位*/

#define LISTEN0x08/*自环模式(发数据同时在把发的数据接收回来)*/

#define SYNC0x04/*同步模式为0异步模式*/

#define MM0x02/*为1时地址位多机协议(异步)主机模式(同步);为0时线路空闲多机协议(异步)从机模式(同步)*/

#define SWRST0x01/*控制位*/

/*UTCTL串口发送控制寄存器*/

#define CKPH0x80/*时钟相位控制位(只同步方式用)为1时时钟UCLK延时半个周期*/

#define CKPL0x40/*时钟极性控制位为1时异步与UCLK相反;同步下降延有效*/

#define SSEL10x20/*时钟源选择位:与SSEL0组合为0,1,2,3四种方式*/

#define SSEL00x10/*"0"选择外部时钟,"1"选择辅助时钟,"2","3"选

择系统子时钟*/

#define URXSE0x08/*接收触发延控制位(只在异步方式下用)*/

#define TXWAKE0x04/*多处理器通信传送控制位(只在异步方式下用)*/

#define STC0x02/*外部引脚STE选择位为0时为4线模式为1时为3线模式*/

#define TXEPT0x01/*发送器空标志*/

/*URCTL串口接收控制寄存器同步模式下只用两位:FE和OE*/

#define FE0x80/*帧错标志*/

#define PE0x40/*校验错标志位*/

#define OE0x20/*溢出标志位*/

#define BRK0x10/*打断检测位*/

#define URXEIE0x08/*接收出错中断允许位*/

#define URXWIE0x04/*接收唤醒中断允许位*/

#define RXWAKE0x02/*接收唤醒检测位*/

#define RXERR0x01/*接收错误标志位*/

/************************************************************

*USART0串口0寄存器定义

************************************************************/

#define U0CTL_0x0070/*串口0基本控制寄存器*/

sfrb U0CTL=U0CTL_;

#define U0TCTL_0x0071/*串口0发送控制寄存器*/

sfrb U0TCTL=U0TCTL_;

#define U0RCTL_0x0072/*串口0接收控制寄存器*/

sfrb U0RCTL=U0RCTL_;

#define U0MCTL_0x0073/*波特率调整寄存器*/

sfrb U0MCTL=U0MCTL_;

#define U0BR0_0x0074/*波特率选择寄存器0*/

sfrb U0BR0=U0BR0_;

#define U0BR1_0x0075/*波特率选择寄存器1*/

sfrb U0BR1=U0BR1_;

#define U0RXBUF_0x0076/*接收缓存寄存器*/

const sfrb U0RXBUF=U0RXBUF_;

#define U0TXBUF_0x0077/*发送缓存寄存器*/

sfrb U0TXBUF=U0TXBUF_;

/*改变的寄存器名定义*/

#define UCTL0_0x0070/*UART0Control*/

sfrb UCTL0=UCTL0_;

#define UTCTL0_0x0071/*UART0Transmit Control*/

#define URCTL0_0x0072/*UART0Receive Control*/

sfrb URCTL0=URCTL0_;

#define UMCTL0_0x0073/*UART0Modulation Control*/ sfrb UMCTL0=UMCTL0_;

#define UBR00_0x0074/*UART0Baud Rate0*/

sfrb UBR00=UBR00_;

#define UBR10_0x0075/*UART0Baud Rate1*/

sfrb UBR10=UBR10_;

#define RXBUF0_0x0076/*UART0Receive Buffer*/ const sfrb RXBUF0=RXBUF0_;

#define TXBUF0_0x0077/*UART0Transmit Buffer*/

sfrb TXBUF0=TXBUF0_;

#define UCTL_0_0x0070/*UART0Control*/

sfrb UCTL_0=UCTL_0_;

#define UTCTL_0_0x0071/*UART0Transmit Control*/ sfrb UTCTL_0=UTCTL_0_;

#define URCTL_0_0x0072/*UART0Receive Control*/ sfrb URCTL_0=URCTL_0_;

#define UMCTL_0_0x0073/*UART0Modulation Control*/ sfrb UMCTL_0=UMCTL_0_;

#define UBR0_0_0x0074/*UART0Baud Rate0*/

sfrb UBR0_0=UBR0_0_;

#define UBR1_0_0x0075/*UART0Baud Rate1*/

sfrb UBR1_0=UBR1_0_;

#define RXBUF_0_0x0076/*UART0Receive Buffer*/ const sfrb RXBUF_0=RXBUF_0_;

#define TXBUF_0_0x0077/*UART0Transmit Buffer*/ sfrb TXBUF_0=TXBUF_0_;

/************************************************************ *USART1串口1寄存器定义

************************************************************/

#define U1CTL_0x0078/*串口1基本控制寄存器*/ sfrb U1CTL=U1CTL_;

#define U1TCTL_0x0079/*串口1发送控制寄存器*/ sfrb U1TCTL=U1TCTL_;

#define U1RCTL_0x007A/*串口1接收控制寄存器*/ sfrb U1RCTL=U1RCTL_;

#define U1MCTL_0x007B/*波特率调整控制寄存器*/ sfrb U1MCTL=U1MCTL_;

#define U1BR0_0x007C/*波特率选择寄存器0*/

#define U1BR1_0x007D/*波特率选择寄存器1*/

sfrb U1BR1=U1BR1_;

#define U1RXBUF_0x007E/*接收缓存*/

const sfrb U1RXBUF=U1RXBUF_;

#define U1TXBUF_0x007F/*发送缓存*/

sfrb U1TXBUF=U1TXBUF_;

/*改变的寄存器名定义*/

#define UCTL1_0x0078/*UART1Control*/

sfrb UCTL1=UCTL1_;

#define UTCTL1_0x0079/*UART1Transmit Control*/ sfrb UTCTL1=UTCTL1_;

#define URCTL1_0x007A/*UART1Receive Control*/

sfrb URCTL1=URCTL1_;

#define UMCTL1_0x007B/*UART1Modulation Control*/ sfrb UMCTL1=UMCTL1_;

#define UBR01_0x007C/*UART1Baud Rate0*/

sfrb UBR01=UBR01_;

#define UBR11_0x007D/*UART1Baud Rate1*/

sfrb UBR11=UBR11_;

#define RXBUF1_0x007E/*UART1Receive Buffer*/ const sfrb RXBUF1=RXBUF1_;

#define TXBUF1_0x007F/*UART1Transmit Buffer*/

sfrb TXBUF1=TXBUF1_;

#define UCTL_1_0x0078/*UART1Control*/

sfrb UCTL_1=UCTL_1_;

#define UTCTL_1_0x0079/*UART1Transmit Control*/ sfrb UTCTL_1=UTCTL_1_;

#define URCTL_1_0x007A/*UART1Receive Control*/ sfrb URCTL_1=URCTL_1_;

#define UMCTL_1_0x007B/*UART1Modulation Control*/ sfrb UMCTL_1=UMCTL_1_;

#define UBR0_1_0x007C/*UART1Baud Rate0*/

sfrb UBR0_1=UBR0_1_;

#define UBR1_1_0x007D/*UART1Baud Rate1*/

sfrb UBR1_1=UBR1_1_;

#define RXBUF_1_0x007E/*UART1Receive Buffer*/ const sfrb RXBUF_1=RXBUF_1_;

#define TXBUF_1_0x007F/*UART1Transmit Buffer*/ sfrb TXBUF_1=TXBUF_1_;

/************************************************************

*Timer A定时器A寄存器定义

************************************************************/

#define TAIV_0x012E/*Timer A中断向量寄存器*/

sfrw TAIV=TAIV_;

#define TACTL_0x0160/*Timer A控制寄存器*/

sfrw TACTL=TACTL_;

#define TACCTL0_0x0162/*Timer A捕获/比较控制寄存器0*/ sfrw TACCTL0=TACCTL0_;

#define TACCTL1_0x0164/*Timer A捕获/比较控制寄存器1*/ sfrw TACCTL1=TACCTL1_;

#define TACCTL2_0x0166/*Timer A捕获/比较控制寄存器2*/ sfrw TACCTL2=TACCTL2_;

#define TAR_0x0170/*Timer A16位计数器内容*/

sfrw TAR=TAR_;

#define TACCR0_0x0172/*Timer A捕获/比较寄存器0*/

sfrw TACCR0=TACCR0_;

#define TACCR1_0x0174/*Timer A捕获/比较寄存器1*/

sfrw TACCR1=TACCR1_;

#define TACCR2_0x0176/*Timer A捕获/比较寄存器2*/

sfrw TACCR2=TACCR2_;

/*改变的寄存器名定义*/

#define CCTL0_0x0162/*Timer A Capture/Compare Control0*/ sfrw CCTL0=CCTL0_;

#define CCTL1_0x0164/*Timer A Capture/Compare Control1*/ sfrw CCTL1=CCTL1_;

#define CCTL2_0x0166/*Timer A Capture/Compare Control2*/ sfrw CCTL2=CCTL2_;

#define CCR0_0x0172/*Timer A Capture/Compare0*/

sfrw CCR0=CCR0_;

#define CCR1_0x0174/*Timer A Capture/Compare1*/

sfrw CCR1=CCR1_;

#define CCR2_0x0176/*Timer A Capture/Compare2*/

sfrw CCR2=CCR2_;

/*TACTL控制寄存器16个位寄存器定义*///对应寄存器的位

#define TASSEL20x0400/*未用*/

#define TASSEL10x0200/*时钟输入源控制位1*/

#define TASSEL00x0100/*时钟输入源控制位0*/

#define ID10x0080/*分频系数选择位1*/

#define ID00x0040/*分频系数选择位0*/

#define MC10x0020/*计数模式控制位1*/

#define MC00x0010/*计数模式控制位0*/

#define TACLR0x0004/*置1位清除定时器*/

#define TAIE0x0002/*定时器中断允许*/

#define TAIFG0x0001/*定时器中断标志*/

//对应寄存器的位的相应的选择模式

#define MC_000*0x10/*停止模式*/

#define MC_101*0x10/*增计数模式*/

#define MC_202*0x10/*连续计数模式*/

#define MC_303*0x10/*增/减计数模式*/

#define ID_000*0x40/*直通*/

#define ID_101*0x40/*2分频*/

#define ID_202*0x40/*4分频*/

#define ID_303*0x40/*8分频*/

#define TASSEL_000*0x100/*时钟源为TACLK*/

#define TASSEL_101*0x100/*时钟源为ACLK*/

#define TASSEL_202*0x100/*时钟源为SMCLK*/

#define TASSEL_303*0x100/*时钟源为INCLK*/

//3

/*Timer A,Timer B可公用捕获/比较控制寄存器X*/

#define CM10x8000/*捕获模式选择位1*/

#define CM00x4000/*捕获模式选择位0*/

#define CCIS10x2000/*捕获输入信号源选择位1*/

#define CCIS00x1000/*捕获输入信号源选择位0*/

#define SCS0x0800/*信号同步位0:异步捕获;1:同步捕获*/ #define SCCI0x0400/*锁存输入信号*/

#define CAP0x0100/*模式选择:0:比较模式;1:捕获模式*/ #define OUTMOD20x0080/*输出模式选择位2*/

#define OUTMOD10x0040/*输出模式选择位1*/

#define OUTMOD00x0020/*输出模式选择位0*/

#define CCIE0x0010/*中断允许位*/

#define CCI0x0008/*读出输入信号源位ccis0\1*/

#define OUT0x0004/*输出信号(选择输出模式0)*/

#define COV0x0002/*捕获溢出标志*/

#define CCIFG0x0001/*中断标志*/

#define OUTMOD_00*0x20/*输出模式*/

#define OUTMOD_11*0x20/*置位模式*/

#define OUTMOD_22*0x20/*翻转/复位模式*/

#define OUTMOD_33*0x20/*置位/复位模式*/

#define OUTMOD_44*0x20/*翻转模式*/

#define OUTMOD_55*0x20/*复位模式*/

#define OUTMOD_66*0x20/*翻转/置位模式*/

#define OUTMOD_77*0x20/*复位/置位模式*/

#define CCIS_00*0x1000/*选择CCIXA为捕获事件的输入信号源*/

#define CCIS_11*0x1000/*选择CCIXB为捕获事件的输入信号源*/

#define CCIS_22*0x1000/*选择GND为捕获事件的输入信号源*/

#define CCIS_33*0x1000/*选择VCC为捕获事件的输入信号源*/

#define CM_00*0x4000/*禁止捕获模式*/

#define CM_11*0x4000/*上升延捕获模式*/

#define CM_22*0x4000/*下降沿捕获模式*/

#define CM_33*0x4000/*上升沿和下降沿都捕获模式*/

/************************************************************

*Timer B定时器B寄存器定义

************************************************************/

#define TBIV_0x011E/*中断向量寄存器:BIT1-BIT3有效*/

sfrw TBIV=TBIV_;

#define TBCTL_0x0180/*定时器B控制寄存器:全部控制都集中在这*/ sfrw TBCTL=TBCTL_;

#define TBCCTL0_0x0182/*定时器B捕获/比较控制寄存器0*/

sfrw TBCCTL0=TBCCTL0_;

#define TBCCTL1_0x0184/*定时器B捕获/比较控制寄存器1*/

sfrw TBCCTL1=TBCCTL1_;

#define TBCCTL2_0x0186/*定时器B捕获/比较控制寄存器2*/

sfrw TBCCTL2=TBCCTL2_;

#define TBCCTL3_0x0188/*定时器B捕获/比较控制寄存器3*/

sfrw TBCCTL3=TBCCTL3_;

#define TBCCTL4_0x018A/*定时器B捕获/比较控制寄存器4*/

sfrw TBCCTL4=TBCCTL4_;

#define TBCCTL5_0x018C/*定时器B捕获/比较控制寄存器5*/

sfrw TBCCTL5=TBCCTL5_;

#define TBCCTL6_0x018E/*定时器B捕获/比较控制寄存器6*/

sfrw TBCCTL6=TBCCTL6_;

#define TBR_0x0190/*计数器*/

sfrw TBR=TBR_;

#define TBCCR0_0x0192/*定时器B捕获/比较寄存器0*/

sfrw TBCCR0=TBCCR0_;

#define TBCCR1_0x0194/*定时器B捕获/比较寄存器1*/

sfrw TBCCR1=TBCCR1_;

#define TBCCR2_0x0196/*定时器B捕获/比较寄存器2*/

sfrw TBCCR2=TBCCR2_;

#define TBCCR3_0x0198/*定时器B捕获/比较寄存器3*/

sfrw TBCCR3=TBCCR3_;

#define TBCCR4_0x019A/*定时器B捕获/比较寄存器4*/

sfrw TBCCR4=TBCCR4_;

#define TBCCR5_0x019C/*定时器B捕获/比较寄存器5*/

sfrw TBCCR5=TBCCR5_;

#define TBCCR6_0x019E/*定时器B捕获/比较寄存器6*/

sfrw TBCCR6=TBCCR6_;

/*定时器B控制寄存器:全部控制都集中在这*/

#define SHR10x4000/*装载比较锁存器控制位1:受TBCCTLx中的CCLDx位控制*/

#define SHR00x2000/*装载比较锁存器控制位0:受TBCCTLx中的CCLDx位控制*/

#define TBCLGRP10x4000/*装载比较锁存器控制位1:受TBCCTLx中的CCLDx位控制*/

#define TBCLGRP00x2000/*装载比较锁存器控制位0:受TBCCTLx中的CCLDx位控制*/

#define CNTL10x1000/*定时器位数长度控制位1*/

#define CNTL00x0800/*定时器位数长度控制位0*/

#define TBSSEL20x0400/*未用*/

#define TBSSEL10x0200/*时钟输入源控制位1*/

#define TBSSEL00x0100/*时钟输入源控制位0*/

#define TBCLR0x0004/*置1清除定时器*/

#define TBIE0x0002/*中断允许*/

#define TBIFG0x0001/*中断标志*/

#define TBSSEL_00*0x0100/*时钟源为:TBCLK*/

#define TBSSEL_11*0x0100/*时钟源为:ACLK*/

#define TBSSEL_22*0x0100/*时钟源为:SMCLK*/

#define TBSSEL_33*0x0100/*时钟源为:INCLK*/

#define CNTL_00*0x0800/*16位计数模式*/

#define CNTL_11*0x0800/*12位计数模式*/

#define CNTL_22*0x0800/*10位计数模式*/

#define CNTL_33*0x0800/*8位计数模式*/

#define SHR_00*0x2000/*单独装载(初始值)*/

#define SHR_11*0x2000/*分三组装载:1-3groups(1-2,3-4,5-6)*/

#define SHR_22*0x2000/*分二组装载:2-2groups(1-3,4-6)*/

#define SHR_33*0x2000/*不分组装载:3-1group(all)*/

#define TBCLGRP_00*0x2000/*单独装载(初始值)*/

#define TBCLGRP_11*0x2000/*分三组装载:1-3groups(1-2,3-4,5-6)*/

#define TBCLGRP_22*0x2000/*分二组装载:2-2groups(1-3,4-6)*/

#define TBCLGRP_33*0x2000/*不分组装载:3-1group(all)*/

/*Additional Timer B Control Register bits are defined in Timer A*/

#define SLSHR10x0400/*Compare latch load source1*/

#define SLSHR00x0200/*Compare latch load source0*/

#define CLLD10x0400/*定义比较锁存器TBCLx的装载方式控制位1*/

#define CLLD00x0200/*定义比较锁存器TBCLx的装载方式控制位0*/

#define SLSHR_00*0x0200/*立即装载*/

#define SLSHR_11*0x0200/*TBR计数到0时装载*/

#define SLSHR_22*0x0200/*在增减模式下,计数到TBCLx或0时装载;在连续计数模式下,计数到0时装载*/

#define SLSHR_33*0x0200/*当计数到TBCL0时装载*/

#define CLLD_00*0x0200/*立即装载*/

#define CLLD_11*0x0200/*TBR计数到0时装载*/

#define CLLD_22*0x0200/*在增减模式下,计数到TBCLx或0时装载;在连续计数模式下,计数到0时装载*/

#define CLLD_33*0x0200/*当计数到TBCL0时装载*/

点击查看:怎样获取“电子币”的详细说明---漫步于开源世界之中,一起与自由同行!Posted:2007-04-1300:14|[楼主]

hueiyew

级别:新手上路

精华:0

发帖:24

威望:25点

电子币:46元

贡献值:0点

注册时间:2007-04-12

最后登录:2007-04-13小中大

/************************************************************

*Basic Clock Module

************************************************************/

#define DCOCTL_0x0056/*DCO时钟频率控制寄存器:复位后的值位060h*/ sfrb DCOCTL=DCOCTL_;

#define BCSCTL1_0x0057/*系统时钟控制寄存器1:复位后的值位084h*/ sfrb BCSCTL1=BCSCTL1_;

#define BCSCTL2_0x0058/*系统时钟控制寄存器2:复位后的值位000h*/ sfrb BCSCTL2=BCSCTL2_;

/*DCO时钟频率控制寄存器*/

#define MOD00x01/*DCO插入周期控制位0*/

#define MOD10x02/*DCO插入周期控制位1*/

#define MOD20x04/*DCO插入周期控制位2*/

#define MOD30x08/*DCO插入周期控制位3*/

#define MOD40x10/*DCO插入周期控制位4*/

#define DCO00x20/*8种频率控制位0*/

#define DCO10x40/*8种频率控制位1*/

#define DCO20x80/*8种频率控制位2*/

/*系统时钟控制寄存器1:复位后的值位084h*/

#define RSEL00x01/*选择内部电阻控制位0*/

#define RSEL10x02/*选择内部电阻控制位1*/

#define RSEL20x04/*选择内部电阻控制位2*/

#define XT5V0x08/*必须为0*/

#define DIVA00x10/*ACLK分频系数控制位0*/

#define DIVA10x20/*ACLK分频系数控制位1*/

#define XTS0x40/*LFXT1工作模式控制位0:低频模式./1:高频模式.*/ #define XT2OFF0x80/*XT2CLK使能控制位0:开启;1:关闭*/

#define DIVA_00x00/*ACLK分频系数为:1*/

#define DIVA_10x10/*ACLK分频系数为:2*/

#define DIVA_20x20/*ACLK分频系数为:4*/

#define DIVA_30x30/*ACLK分频系数为:8*/

/*系统时钟控制寄存器2:复位后的值位000h*/

#define DCOR0x01/*内外电阻选择控制位*/

#define DIVS00x02/*SMCLK分频控制位0*/

#define DIVS10x04/*SMCLK分频控制位1*/

#define SELS0x08/*SMCLK时钟源选择位t0:DCOCLK/ 1:XT2CLK/LFXTCLK*/

#define DIVM00x10/*MCLK分频控制位0*/

#define DIVM10x20/*MCLK分频控制位1*/

#define SELM00x40/*MCLK时钟输入源选择位0*/

#define SELM10x80/*MCLK时钟输入源选择位1*/

#define DIVS_00x00/*SMCLK分频系数为:1*/

#define DIVS_10x02/*SMCLK分频系数为:2*/

#define DIVS_20x04/*SMCLK分频系数为:4*/

#define DIVS_30x06/*SMCLK分频系数为:8*/

#define DIVM_00x00/*MCLK分频系数为:1*/

#define DIVM_10x10/*MCLK分频系数为:2*/

#define DIVM_20x20/*MCLK分频系数为:4*/

#define DIVM_30x30/*MCLK分频系数为:8*/

#define SELM_00x00/*MCLK时钟输入源:DCOCLK*/

#define SELM_10x40/*MCLK时钟输入源:DCOCLK*/

#define SELM_20x80/*MCLK时钟输入源:XT2CLK/LFXTCLK*/ #define SELM_30xC0/*MCLK时钟输入源:LFXTCLK*/

/*************************************************************

*Flash Memory FLASH操作寄存器定义

*************************************************************/

#define FCTL1_0x0128/*FLASH控制寄存器1:控制编程、擦除*/ sfrw FCTL1=FCTL1_;

#define FCTL2_0x012A/*FLASH控制寄存器2:控制时钟分频*/ sfrw FCTL2=FCTL2_;

#define FCTL3_0x012C/*FLASH控制寄存器3:状态标志*/ sfrw FCTL3=FCTL3_;

#define FRKEY0x9600/*读FLASH密码*/

#define FWKEY0xA500/*写FLASH密码*/

#define FXKEY0x3300/*for use with XOR instruction*/

/*FLASH控制寄存器1:控制编程、擦除*/

#define ERASE0x0002/*擦除段使能*/

#define MERAS0x0004/*主存擦除使能*/

#define WRT0x0040/*编程使能*/

#define BLKWRT0x0080/*段编程使能*/

/*FLASH控制寄存器2:控制时钟分频*/

#define FN_00x0000/*直通*/

#define FN_10x0001/*2分频*/

#define FN_20x0002/*3分频*/

#define FN_30x0003/*4分频*/

#define FN_40x0004/*5分频*/

#define FN_50x0005/*6分频*/

#define FN_60x0006/*7分频*/

#define FN_70x0007/*8分频*/

#define FN_80x0008/*9分频*/

#define FN_90x0009/*10分频*/

#define FN_100x000A/*11分频*/

#define FN_110x000B/*12分频*/

#define FN_120x000C/*13分频*/

#define FN_130x000D/*14分频*/

#define FN_140x000E/*15分频*/

#define FN_150x000F/*16分频*/

#define FN_160x0010/*17分频*/

#define FN_170x0011/*18分频*/

#define FN_180x0012/*19分频*/

#define FN_190x0013/*20分频*/

#define FN_200x0014/*21分频*/

#define FN_210x0015/*22分频*/

#define FN_220x0016/*23分频*/

#define FN_230x0017/*24分频*/

#define FN_240x0018/*25分频*/

#define FN_250x0019/*26分频*/

#define FN_260x001A/*27分频*/

#define FN_270x001B/*28分频*/

#define FN_280x001C/*29分频*/

#define FN_290x001D/*30分频*/

#define FN_300x001E/*31分频*/

#define FN_310x001F/*32分频*/

#define FN_320x0020/*33分频*/

#define FN_330x0021/*34分频*/

#define FN_340x0022/*35分频*/

#define FN_350x0023/*36分频*/

#define FN_360x0024/*37分频*/

#define FN_370x0025/*38分频*/

#define FN_380x0026/*39分频*/

#define FN_390x0027/*40分频*/

#define FN_400x0028/*41分频*/

#define FN_410x0029/*42分频*/

#define FN_420x002A/*43分频*/

#define FN_430x002B/*44分频*/

#define FN_440x002C/*45分频*/

#define FN_450x002D/*46分频*/

#define FN_460x002E/*47分频*/

#define FN_470x002F/*48分频*/

#define FN_480x0030/*49分频*/

#define FN_490x0031/*50分频*/

#define FN_500x0032/*51分频*/

#define FN_510x0033/*52分频*/

#define FN_520x0034/*53分频*/

#define FN_530x0035/*54分频*/

#define FN_540x0036/*55分频*/

#define FN_550x0037/*56分频*/

#define FN_560x0038/*57分频*/

#define FN_570x0039/*58分频*/

#define FN_580x003A/*59分频*/

#define FN_590x003B/*60分频*/

#define FN_600x003C/*61分频*/

#define FN_610x003D/*62分频*/

#define FN_620x003E/*63分频*/

#define FN_630x003F/*64分频*/

#define FSSEL_00x0000/*Flash时钟选择:ACLK*/

#define FSSEL_10x0040/*Flash时钟选择:MCLK*/

#define FSSEL_20x0080/*Flash时钟选择:SMCLK*/

#define FSSEL_30x00C0/*Flash时钟选择:SMCLK*/

/*FLASH控制寄存器3:状态标志*/

#define BUSY0x0001/*Flash忙标志*/

#define KEYV0x0002/*Flash安全键值出错标志*/

#define ACCVIFG0x0004/*Flash非法访问中断标志*/

#define WAIT0x0008/*等待指示信号位*/

#define LOCK0x0010/*锁定位*/

#define EMEX0x0020/*紧急退出位*/

/************************************************************

*Comparator A比较器A寄存器定义

************************************************************/

#define CACTL1_0x0059/*比较器A控制寄存器1*/

sfrb CACTL1=CACTL1_;

#define CACTL2_0x005A/*比较器A控制寄存器2*/

sfrb CACTL2=CACTL2_;

#define CAPD_0x005B/*比较器A端口禁止寄存器*/

sfrb CAPD=CAPD_;

/*比较器A控制寄存器1*/

#define CAIFG0x01/*比较器A中断标志*/

#define CAIE0x02/*比较器A中断使能*/

#define CAIES0x04/*比较器A中断边沿触发选择0:上升延1:下降延*/

#define CAON0x08/*比较器电源开关*/

#define CAREF00x10/*选择参考源位0*/

#define CAREF10x20/*选择参考源位1*/

#define CARSEL0x40/*选择内部参考源加到比较器的正端或负端*/ #define CAEX0x80/*交换比较器的输入端*/

#define CAREF_00x00/*选择参考源0:Off使用外部参考源*/

#define CAREF_10x10/*选择参考源1:0.25*Vcc为参考源*/

#define CAREF_20x20/*选择参考源2:0.5*Vcc为参考源*/

#define CAREF_30x30/*选择参考源3:Vt*/

/*比较器A控制寄存器2*/

#define CAOUT0x01/*比较器输出*/

#define CAF0x02/*选择比较器是否经过RC低通滤波器*/

#define P2CA00x04/*外部引脚信号连接到比较器A的CA0*/

#define P2CA10x08/*外部引脚信号连接到比较器A的CA1*/

#define CACTL240x10

#define CACTL250x20

#define CACTL260x40

#define CACTL270x80

#define CAPD00x01/*Comp.A Disable Input Buffer of Port Register.0*/ #define CAPD10x02/*Comp.A Disable Input Buffer of Port Register.1*/ #define CAPD20x04/*Comp.A Disable Input Buffer of Port Register.2*/ #define CAPD30x08/*Comp.A Disable Input Buffer of Port Register.3*/ #define CAPD40x10/*Comp.A Disable Input Buffer of Port Register.4*/ #define CAPD50x20/*Comp.A Disable Input Buffer of Port Register.5*/ #define CAPD60x40/*Comp.A Disable Input Buffer of Port Register.6*/ #define CAPD70x80/*Comp.A Disable Input Buffer of Port Register.7*/

//4

/************************************************************

*ADC12A/D采样寄存器定义

************************************************************/

/*ADC12转换控制类寄存器*/

#define ADC12CTL0_0x0;'/*ADC12Control0*/

sfrw ADC12CTL0=ADC12CTL0_;

#define ADC12CTL1_0x01A2/*ADC12Control1*/

sfrw ADC12CTL1=ADC12CTL1_;

/*ADC12中断控制类寄存器*/

#define ADC12IFG_0x01A4/*ADC12Interrupt Flag*/

sfrw ADC12IFG=ADC12IFG_;

#define ADC12IE_0x01A6/*ADC12Interrupt Enable*/

sfrw ADC12IE=ADC12IE_;

#define ADC12IV_0x01A8/*ADC12Interrupt Vector Word*/

sfrw ADC12IV=ADC12IV_;

/*ADC12存贮器类寄存器*/

#define ADC12MEM_0x0140/*ADC12Conversion Memory*/

#ifndef__IAR_SYSTEMS_ICC

#define ADC12MEM ADC12MEM_/*ADC12Conversion Memory(for assembler) */

#else

#define ADC12MEM((int*)ADC12MEM_)/*ADC12Conversion Memory(for C) */

#endif

#define ADC12MEM0_ADC12MEM_/*ADC12Conversion Memory0*/

sfrw ADC12MEM0=ADC12MEM0_;

#define ADC12MEM1_0x0142/*ADC12Conversion Memory1*/

sfrw ADC12MEM1=ADC12MEM1_;

#define ADC12MEM2_0x0144/*ADC12Conversion Memory2*/

sfrw ADC12MEM2=ADC12MEM2_;

红头文件工资证明格式

红头文件工资证明格式文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

××××××××××××公司 ××字【20××】×号 下面几种证明格式、挑选适合自己的、直接填好打印出来、让财务盖章即可! 员工工作及收入证明 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:年月日 ==================================================================

工资收入证明 ________________: 兹证明________是我公司员工,在________部门任________职务。至今为止,一年以来总收入约为__________元。特此证明。 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:______年___月___日 ================================================================== 工资收入证明

兹证明___是我单位员工,身份证号码:___________,在我单位工作___年,岗位为____,年收入__万元(人民币)。 本证明仅限于该职工办理____信用卡使用,我公司不对该职工使用信用卡可能造成的一切后果承担任何责任。 特此证明 单位名称(盖章):_____ 日期:___年__月__日 公文排版样式 文头的字体:一号黑体字、加粗、红色、居中、字符间距为1.7磅 发文字号的字体:四号仿宋体、黑色 标题的字体:三号黑体字、加粗、黑色、居中 主送机关的字体:四号仿宋体、黑色 正文的字体:四号仿宋体、黑色、首行缩进2个字符、1.5倍行距

MSP430单片机题目答案整理(大部分)

第一章 1. MCU(微控制器单元)与MPU(微处理器单元)的区别 MCU集成了片上外围器件,而MPU不带外围器件,是高度集成的通用结构的处理器。是去除了集成外设的MCU。 2. MSC430单片机的不同系列的差别 MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显着优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。 3. MSC430单片机主要特点 1.超低功耗 2. 强大的处理能力 3. 高性能模拟技术及丰富的片上外围模块 4. 系统工作稳定 5. 方便高效的开发环境 4. MSC430单片机选型依据 选择最容易实现设计目标且性能价格比高的机型。 在研制任务重,时间紧的情况下,首先选择熟悉的机型。 欲选的机型在市场上要有稳定充足的货源。 第二章 1. 从计算机存储器体系结构上看,MSP430单片机属于什么结构 冯·诺依曼结构,是一种程序存储器和数据存储器合并在一起的存储器体系结构。 2. RISC与CISC体系结构的主要特征是什么MSP430单片机属于哪种结构 CISC----是复杂指令系统计算机Complex Instruction Set Computer的缩写,MCS-51单片机属于CISC。具有8位数据总线、7种寻址模式,111条指令。 RISC----是精简指令系统计算机Reduced Instruction Set Computer的缩写,MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令。 3. 对MSP430单片机的内存访问时,可以有哪几种方式读写字数据有什么具体要求 字,字节,常字。字访问地址必须是偶数地址单元。 4. MSP430单片机的中断向量表位于什么位置其中存放的是什么内容 中断向量表:存放中断向量的存储空间。430单片机中断向量表地址空间:32字节,映射到存储器空间的最高端区域 5. MSP430单片机的指令系统物理指令和仿真指令各有多少条。 27种物理指令-内核指令和24种仿真指令 6. MSP430单片机的指令系统有哪些寻址方式各举一例说明。 有7种寻址方式:寄存器寻址,变址寻址,符号寻址,绝对寻址, 间接寻址,间接增量寻址,立即数寻址 7. MSP430单片机的CPU中有多少个寄存器其中专用寄存器有哪几个 4个专用寄存器(R0、R1、R2、R3)和12个通用寄存器(R4~R15) R0:程序计数器(PC) R1:堆栈指针(SP)—总是指向当前栈顶 R2:状态寄存器(SR)只用到16位中的低9位 R2/R3:常数发生器(CG1/CG2) 8. 按要求写出指令或指令序列。 9. 写出给定指令或指令序列的执行结果。 10.汇编语言程序的分析与理解。

MSP430单片机选型指南

MSP430单片机选型指南 概述: 1xx:8MIPS,1-60KB 2xx:16MIPS,1-120KB,500nA Stand By(待机电流为1xx的1/2) 4xx:8/16MIPS,4-120KB,LCD Driver 5xx:25MIPS,32-256KB,USB,RF,500nA Stand By(未上市) 命名规则: 1.x1为不带“1”的型号的外设精简版,一般去掉ADC12 2.1x为不带“1”的型号的存储器增强版,加入更多的Flash或是RAM,增加Flash的型号 采用了MSP430X构架。 3.型号中带“F”表示该型号的程序存储器为Flash,不采用Flash的信号有:C11x1,C13x1, C41x,CG461x(新型号,MSP430CG4619(120k)与MSP430FG4619的差价约为$2) 4.型号中带“E”表示该型号为电测做了优化,一般有LCD驱动器,3路独立AD,硬件乘法 器,嵌入式信号处理器(ESP430) 5.型号中带“W”表示该型号为流体测量做了优化 6.型号中带“G”表示该型号为医疗仪器做了优化,一般有LCD,ADC,DAC,OPAMP 13x(1),14x(1),15x,16x系列 基本配置:48个I/O,TA,TB,Watchdog,UART/SPI,I2C,DMA,MPY,Comp_A,ADC12 相同 1.全系列Flash程序存储器 2.64引脚PM, PAG, RTD封装 3.48个I/O 4.TA(TA3),TB(13x,15x为TB3;14x,16x为TB7) 5.Comp_A 不同 1.15x,16x:支持BOR,SVS,I2C,DMA,DAC 2.14x,16x:MPY(硬件乘法器),2个UART/SPI 3.13x1,14x1不含ADC12;其它器件含8通道ADC12 4.MSP430F161x最大支持10k的RAM 说明:不特别指明的话13x包含13x1,14x包含14x1,16x包含161x 41x,42x系列

IAR中MSP430的头文件解析,你看看

1、#define BIT0 (0×0001) //(0×0001)不是地址,而是一个16进制数值。 例1、P3DIR |= BIT3;实际上也可以写成P3DIR |= 0×0008; 意思是将P3口的默认上电值0×0000和0×0008相与,设置P3口的第三位(即P3.3)管脚作输出使用。 例2、WDTCTL = WDTPW + WDTHOLD;实际上就是WDTCTL=0×5A80; 你可以在头文件中查到#define WDTPW (0×5A00)和#define WDTHOLD (0×0080)。WDTCTL是看门狗的控 制寄存器,在msp430的User’Guide中有说明:当它的值为0×5A80时停止看门狗定时。 那为什么我们不直接写成WDTCTL=0×5A80;呢?这样的话程序的可读性会很差。 0×5A80只是一个数值,当你下次再看你写的程序,或者别人读你的程序时,就不明白WDTCTL=0×5A80;的 意思了。如果写成WDTCTL = WDTPW + WDTHOLD;就好理解多了: WDTPW(Watchdog timer password,看门狗的密码,WDTCTL的高8位):只有WDTCTL的高8位为 0×5A时才能对WDTCTL寄存器进行写操作。 WDTHOLD(Watchdog timer hold,WDTCTL的第7位):当WDTCTL的第7位为1时,停止看门狗计时。 这样我们通过PW,HOLD就可以轻松的知道WDTCTL = WDTPW + WDTHOLD;是做什么的了。可以看出 msp430的头文件是很人性化的。 2、当然也有表示地址的,例如,头文件中有以下部分: #ifdef __IAR_SYSTEMS_ASM__ #define DEFC(name, address) sfrb name = address #define DEFW(name, address) sfrw name = address; ///运用了可变参数宏的宏定义格式:#define 宏符号名(参数表) 宏体;;宏体中就是写出参数表中各个

MSP430单片机最小系统

第八章MSP430F249单片机最小系统 8.1 MSP430单片机下载方式 当单片机程序利用IAR开发环境编译和proteus仿真通过以后,还需要把程序生成的二进制代码烧录进单片机内部闪存中运行,这个过程称为下载或者编程。MSP430单片机支持多种FLASH编程方法:BSL和JTAG。其中BSL是启动加载程序(BootStrap Loader)的简称,该方法允许用户通过标准的RS-232串口访问MSP430单片机的FLASH和RAM。在单片机的地址为(0C00H-1000H)的ROM区内存放了一段引导程序,给单片机的特定引脚加上一段特定的时序脉冲,就可以进入这段程序,让用户读写、擦除FLASH程序。通过BSL无条件擦除单片机闪存,重新下载程序,还可以通过密码读出程序。 另外一种下载程序的方式为JTAG(Joint Test Action Group ,联合测试行动小组),JTAG是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG 技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port,测试访问口),通过专用的JTAG 测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持JTAG 协议,如ARM 、DSP 、FPGA 器件等。标准的JTAG 接口是4 线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。目前JTAG 接口的连接有两种标准,即14 针接口和20 针接口,MSP430单片机使用的是14针的接口,其定义分别如表8-1所示。 表8-1 14针JTAG接口定义引脚名称描述 管脚编号功能说明 2 、4 VCC 电源 9 G ND 接地 11 nTRST 系统复位信号 3 TDI 数据串行输入 7 TMS 测试模式选 9 TCK 测试时钟 1 TDO 测试数据串行 输 6、8、10、12 NC 未连接 下面分别介绍BSL和JTAG方式下编程器设计,可以用在实际系统编程中。 8.2 BSL编程器原理 启动程序载入器(BootStrap)是一种编程方法,允许通过串行连接和MSP430通讯,在Flash Memory 被完全擦除时也能正常工作。MSP430的启动程序载入器(Bootstrap)在单片机正常复位时不会自动启动,当需要对单片机下载程序代码时候,对RST/NMI和TEST引脚设置特殊的顺序。当MSP430单片机的TEST 引脚为低电平而RST/NMI引脚有上升沿时,用户程序从位于内存地址0FFFEh 复位向量开始执行,用户程序正常启动,如图8-1所示

如何学习并使用MSP430单片机(入门)

如何学习MSP430单片机 如何学习MSP430单片机 。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET 一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

企业红头文件标准格式(公文必备)

×××××公司 公文格式 说明:本纸质公文格式样本共8 页,按照国家标准GB/T9704 -1999 并结合公司实际情况制定。

—1— 关于×××××的通知 (批复、函 ) 标题: 小二宋体加粗 ××公司: 主送单位: 小三黑体 ×××××××××××××××××××××××××××××××××××× ×××××××××××××正文×:×小×三仿×宋×××××××××××××××。 ×××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××××××××××××× ××××××××××××××××。 该页为 下行 文 及平行 文首页 格式 发文机构: 宋体,字号不限, 可适当调整,置于同一行 密级、紧急程度: 三号黑体 公司 B 密★一年 特急 ×××××管理有限公司文件 物业××字〔 2004 〕××号 签发人: ×××

—1— 公司 B 密★一年 特急 ×××××管理有限公司文件 签发人:××× 关于×××的请示 ××公司: ×××××××××××××××××××××××××××××××××××× ×××××××××××××××××××××××××××××××××××××× ×× 该页为 上 行文 首页 格 式 物业××字〔 2004 〕××号 ×××

××××××××××××××××××××× 该页为单一机构行文末页格式 附件:1 、××××× 2、××××× 二○ ○三年×月×日联系人:×××,电话:××) 联系人:只在上行文中标注

企业、公司红头文件公文格式

×××××管理有限公司 纸质公文格式 综合管理部 二○○四年九月二十日编制 说明:本纸质公文格式样本共8页,按照国家标准GB/T9704-1999并结合公司实际情况制定。

特 急 ×××××管理有限公司文件 物业××字…2004?××号 签发人:××× 关于×××××的通知(批复、函) ××公司: ×××××××××××××××××××××××××××××××××××××。 ××××××××××××××××××××××××××××××××。 ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。 —1—

公司B密★一年 特急×××××管理有限公司文件 签发人:×××物业××字…2004?××号××× 关于×××的请示 ××公司: ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。 —1—

×××××××××××××××××××××。 2、××××× 二○○三年×月×日 (联系人:×××,电话:××) —2—

××××××××××××××。 附件:1、×××××××× 2、×××××××× 二○○三年×月×日 主题词:×××× 抄报: 抄送:

××××××××××××××。 附件:1、×××××××× 2、×××××××× ××公司××公司××公司 ××公司××公司 二○○三年×月×日 主题词:×××× 抄报: 抄送:

MSP430G2553_官方例程(加注释版)

LaunchPad 官方例程(无修改) 一切皆为2012TI杯电子设计大赛 1. //************************************************************************* ***** // LaunchPad Lab2 - Software Toggle P1.0, // // MSP430G2xx2 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.0|-->LED // //************************************************************************* ***** #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer //在MSP430的information A Flash段中一般会有一些比如DCO校正信息,温度传感器校正等等的数据存在,这些是出厂设置好的!但是有时候用户会不小心把infoA擦除掉,而擦除后的内容就为0xFF了。下面程序段的作用是,判断CALBC1_1MHZ的地址内容是否被擦除了,如果擦除了,那么while(1)。如果没有,那么将校正信息添入相应的寄存器,可以得到精度相对高的DCO输出频率 if (CALBC1_1MHZ == 0xFF || CALDCO_1MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } // Configure Basic Clock

MSP430初学者教程(最详细)

如何学习 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以系列为例,解释一下学习的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET 使用指导、F1xx系列、F4xx系列的使用说明和具体芯片的数据说明,可以找到FET的、实验板、知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制FET和实验电路板 自制仿真器FET,首先要到网上找到FET,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画,画完后,就学习认识,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个的功能,还需要、按钮、、三端、、散热器、、普通电容、电阻、等元件的知识,对于初学者,可以做一个只有3个、8个按钮、8个的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上,在未干的情况下,将芯片放在焊盘上,注意芯片第一的位置,并使与焊盘对齐,将擦干净的(不能有任何)接触引脚,引脚只要一热,焊盘上的就自动将引脚焊住了,千万注意上不能有,焊接时最好配备一个。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA 到利尔达公司或的网站下载IA,并安装到计算机上。 (5)调试FET和实验板

Msp430学习笔记

Msp430学习笔记一、简介 图1 基本结构

图2 pin designation 结论: 1.基本每个管脚都可以复用 2.外围功能模块丰富 端口介绍(32 I/O pins) 1.端口P1和P2 具有输入、输出、中断和外部模块功能。这些功能可以通过各自的7个控制寄存器的设置来实现。 (1)PxDIR 输入输出方向寄存器rw (2)PxIN 输入寄存器r (3)PxOUT 输出寄存器r (4)PxIFG 中断标志寄存器r (5)PxIES 中断触发沿选择寄存器rw (6)PxIE 中断使能寄存器rw (7)PxSEL 功能选择寄存器rw 2.其他端口:四个控制寄存器(除去中断相关)看看例程

二、时钟部分 1.时钟寄存器设置 SCFQCTL 系统时钟控制寄存器(倍频,反馈后默认是31,31+1=32) SCFI0 系统时钟频率调整器0(锁频环反馈中的分频(实质最终是倍频)) SCFI1 系统时钟频率调整器1(自动控制调整,无需软件设置) FLL_CTL0 FLL+控制器0 (反馈中是否分频、选择LFXT1晶振的有效电容) FLL_CTL1 FLL+控制器1 (振荡器控制、时钟源对应的振荡器的选择,默认情况下:振荡 器打开,MCLK选择DCOCLK,SMCLK选择DCOCLK) 图时钟模块

2.工作模式:One Active Mode、Five Power Saving Modes MSP430是一个特别强调低功耗的单片机系列,尤其适用于采用电池供电的长时间工作场合。 系统根据应用和节能使用不同的时钟信号,这样可以合理利用系统的电源,实现整个系统的超低功耗。 中断是MSP430微处理器的一大特色。有效地利用中断可以简化程序,并且提高执行效率和系统稳定性。几乎所有的msp430系统单片机的每个外围模块都能产生中断,为MSP430针对事件(外围模块产生的中断)进行的编程打下基础。MSP430在没有事件发生时处于低功耗模式,事件发生时通过中断唤醒CPU,时间处理完毕后CPU再次进入低功耗模式,由于CPU运算速度和推出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态,使得系统的整体功耗极大地降低。 MSP430中断可分为三种:1.系统复位中断;2.不可屏蔽中断;3.可屏蔽中断。 多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430单片机会将不可屏蔽中断控制位SR.GIE(总中断允许位)复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断而去响应更高优先级的中断。但SR.GIE复位不会影响不可屏蔽中断,所以仍可接收不可屏蔽中断的中断请求。

MSP430单片机深入学习笔记

复位 1.POR信号只在两种情况下产生: 微处理器上电。 RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。 2.PUC信号产生的条件为: POR信号产生。 看门狗有效时,看门狗定时器溢出。 写看门狗定时器安全健值出现错误。 写FLASH存储器安全键值出现错误。 3.POR信号的出现会导致系统复位,并产生PUC信号。而PUC信号不会引起POR信号的产生。系统复位后(POR之后)的状态为: RST/MIN管脚功能被设置为复位功能。 所有I/O管脚被设置为输入。 外围模块被初始化,其寄存器值为相关手册上注明的默认值。 状态寄存器(SR)复位。 看门狗激活,进入工作模式。 程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。 4.典型的复位电路有以下3种: (1)由于MSP430具有上电复位功能, 因此,上电后只要保持RST/NMI(设置 为复位功能)为高电平即可。通 常的做法为,在RST/NMI管脚接100k? 的上拉电阻,如图1-5(a)所示。 (2)除了在RST/NMI管脚接100k?的 上拉电阻外,还可以再接0.1μF的电 容,电容的另一端接地,可以使复位 更加可靠。如图1-5(b)所示。 (3)由于MSP430具有极低的功耗,如 果系统断电后立即上电,则系统中电 容所存储的电荷来不及释放,此时系 统电压不会下降到最低复位电压以下, 因而MSP430不会产生上电复位,同时 RST/NMI管脚上也没有足够低的电平 使MSP430复位。这样,系统断电后立 即上电,MSP430并没有被复位。为了 解决这个问题,可增加一个二极管, 这样断电后储存在复位电容中的电荷 就可以通过二极管释放,从而加速电 容的放电。二极管的型号可取1N4008。 如图1-5(c)所示。

MSP430 中文版用户指南

用于MSP430?的IAR嵌入式工作平台版本3+用户指南 Literature Number:ZHCU026X June2004–Revised November2011

内容Preface (5) 1现在就开始! (7) 1.1软件安装 (8) 1.2LED闪烁 (8) 1.3光盘和网络上重要的MSP430文档 (9) 2开发流程 (10) 2.1概述 (11) 2.2使用KickStart (11) 2.2.1项目设置 (12) 2.2.2用于MSP430L092/MSP430C092的附件项目设置 (13) 2.2.3从零开始创建一个项目 (15) 2.2.4用于LPMx.5调试的附加项目设置 (16) 2.2.5MSP430器件的密码保护 (17) 2.2.6使用一个现有的IAR V1.x/V2.x/V3.x项目 (18) 2.2.7堆栈管理和.xcl文件 (18) 2.2.8如何生成德州仪器(TI).TXT(和其它格式)文件 (18) 2.2.9示例程序概述 (18) 2.3使用C-SPY (18) 2.3.1断点类型 (19) 2.3.2使用断点 (20) 2.3.3使用单步执行 (21) 2.3.4使用观察窗口 (21) A常见问题和解答 (23) A.1硬件 (24) A.2程序开发(汇编语言、C语言编译器、连接器) (24) A.3调试中(C-SPY) (26) B FET专用菜单 (30) B.1菜单 (31) B.1.1Emulator→Device Information (31) B.1.2Emulator→Release JTAG on Go (31) B.1.3Emulator→Resynchronize JTAG (31) B.1.4Emulator→Init New Device (31) B.1.5Emulator→Secure-Blow JTAG Fuse (31) B.1.6Emulator→Breakpoint Usage (31) B.1.7Emulator→Advanced→Clock Control (31) B.1.8Emulator→Advanced→Emulation Mode (31) B.1.9Emulator→Advanced→Memory Dump (32) B.1.10Emulator→Advanced→Breakpoint Combiner (32) B.1.11Emulator→State Storage Control (32) B.1.12Emulator→State Storage Window (32) B.1.13Emulator→Sequencer Control (32) B.1.14Emulator→"Power on"Reset (32) B.1.15Emulator→GIE on/off (32) B.1.16Emulator→Leave Target Running (32)

MSP430单片机原理解读

第 2 章MSP430 单片机原理与 C 语言基础MSP430系列超低功耗单片机有200多种型号,TI公司用3~ 4位数字表示其型号。其中第一位数字表示大系列,如MSP430F1xx系列、MSP430F2xx系列、MSP430F4xx系列、MSP430F5xx系列等。在每个大系列中,又分若干子系列,单片机型号中的第二位数字表示子系列号,一般子系列越大,所包含的功能模块越多。最后1~2 位数字表示存储容量,数字越大表示RAM 和ROM 容量越大。430 家族中还有针对热门应用而设计的一系列专用单片机。如SP430FW4xx 系列水表专用单片机、MSP430FG4xx 系列医疗仪器专用单片机、MSP430FE4xx 系列电能计量专用单片机等。这些专用单片机都是在同型号的通用单片机上增加专用模块而构成的。最新的MSP430型号列表可以通过TI公司网站下载。 在开发单片机应用系统时,第一步就是单片机的选型,选择合适的单片机型号往往就能事半功倍。单片机选型基本方法是选择功能模块最接近项目需求的系列,然后根据程序复杂程度估算存储器和RAM 空间,并留有适当的余量,最终决定选用的单片机型号。 本章节以MSP430F249单片机为学习目标,介绍单片机的基本结构和工作原理,读者可以举一反三、触类旁通,而不必每种型号都去学习却无法深入掌握。 2.1 MSP430F249单片机基本结构与原理 2.1.1MSP430F249的主要结构特点 供电电压范围1.8V~3.6V 。 超低功耗:活动状态270uA(1MHz,2.2V);待机模式0.3uA;关机模式0.1uA。 16位RISC精简指令集处理器。 时钟系统:多种时钟源,可灵活使用。时钟频率达到16MHz ;具有内部振荡器;可外接32kHz 低频晶振;外接时钟输入。 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.2 MSP430F249单片机的基本结构 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 周期。

MSP430单片机 BSL说明

1.通过PC机USB口对MSP430 FLASH 全系列单片机进行BSL编程,并在JTAG里的熔丝已烧断的情况下可再次编程,可有效保护用户程序,是对MSP430单片机进行加密后再进行编程的唯一解决方案;它既适合少量写片,也适合批量生产。 2.完全兼容德州仪器原厂BSL(Bootstrap Loader)的MSP430开发工具; https://www.doczj.com/doc/9e17672530.html,B接口在线编程,USB口取电,不需要外接电源,并能给目标板或用户板提供3.3V电源(采用专业3.3V稳压芯片而非芯片PL2303的调整电压输出,功率更大,通讯更稳定),目标板或用户板无需上电(只需连接编程器的1-6脚即可,如F14X系列); 注意:如果目标板或用户板需上电(目标板或用户板负载较大时),则编程器6脚不要连接到目标板或用户板的VCC,只需连接编程器的1-5脚即可(如F14X系列); 4.带短路保护!板载500MA的自恢复保险丝,当您目标板短路时,自恢复保险立即断开,起到保护您电脑USB口的作用,当您的短路故障排除后,保险丝自己可以恢复正常; 5.操作软件全中文图形化界面,使用简单可靠;相比同功能产品体积更小,使用更方便。 6.通过编程接口(见下图)的TXD、RXD和GND脚可以作为升级卫星接收机使用,1脚TXD接到MCU的TX;3脚RXD接到MCU的RX,再接上5脚GND;无需再用MAX232转换;广泛应用于电台改装、手机刷机、

XBOX360刷机、GPS、汽车检测,DVD刷机升级、硬盘维修、刷写路由器固件、机顶盒升级等功能。 7.具备USB转串口/TTL功能,通过上位机测试软件,且在单片机内写好通讯测试程序,即可使用此模块做MSP430应用系统和PC机之间的通讯实验(将编程器的1脚BSLTX,3脚BSLRX和5脚GND与MSP430的TXD,RXD 和GND相连即可); 8.无需IAR开发环境进行下载,从而使批量生产的效率更高;使用简单可靠,使批量生产成为现实;相比同功能产品体积更小,使用更方便。 9.带电源指示灯,数据收发指示灯,工作状态一目了然; 10.STC下载注意事项:单片机必须为最小系统,外部晶振选11.0592M,ISP下载界面第三步必须设置波特率为1200,外部VCC供电必须为独立供电。 STC单片机下载界面如下(软件可向卖家索要):

红头文件工资证明范本格式模板

××××××××××××公司 ××字【20××】×号 下面几种证明格式、挑选适合自己的、直接填好打印出来、让财务盖章即可! 员工工作及收入证明 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:年月日 ==================================================================

工资收入证明 ________________: 兹证明________是我公司员工,在________部门任________职务。至今为止,一年以来总收入约为__________元。特此证明。 本证明仅用于证明我公司员工的工作及在我公司的工资收入,不作为我公司对该员工任何形势的担保文件。 盖章: 日期:______年___月___日 ==================================================================

工资收入证明 兹证明___是我单位员工,身份证号码:___________,在我单位工作___年,岗位为____,年收入__万元(人民币)。 本证明仅限于该职工办理____信用卡使用,我公司不对该职工使用信用卡可能造成的一切后果承担任何责任。 特此证明 单位名称(盖章):_____ 日期:___年__月__日 公文排版样式 文头的字体:一号黑体字、加粗、红色、居中、字符间距为1.7磅 发文字号的字体:四号仿宋体、黑色 标题的字体:三号黑体字、加粗、黑色、居中 主送机关的字体:四号仿宋体、黑色

MSP430单片机应用实例

第九章 应用实例 在本章中,将前几章所学的内容进一步扩展,设计并完成几个完整的应用实例,巩固所学的知识。特别是提高程序设计和调试能力。 9.1 直流电动机的应用 直流电动机的基本知识 1)直流电动机工作原理 直流电动机就是将直流电能转换为机械能的转动装置。直流电动机具有良好的调速性能、较大的启动转矩和过载能力强等诸多优点,因此在许多行业中应用广泛。特别在全国大学生电子设计竞赛中,微型直流电机、电动小车多次作为控制类题目主要控制对象。 微型直流电机(包括玩具直流电机、小型直流减速电机等)一般为永磁式直流电动机。永磁式直流电动机由定子磁极、转子、换向器、电刷、机壳、轴承等构成。定子磁极采用永磁体(永久磁钢),定子的作用是产生主磁场。转子为进行能量转换的电枢,在磁场中产生感应电动势和电磁转矩。直流电机定子固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续旋转受到的磁场方向将改变,因此此时转子末端的电刷跟换向片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。要改变直流电机旋转方向,只需要改变转子线圈电压极性。 直流电机转速公式: Φ -= e a d C IR U n 式中,U d 为电机外加直流电压,R a 为电枢绕组电阻,C e Φ为电机常数,I 为电机电流,电机电流与负载大小有关。从直流电机转速公式可见,只要改变电枢电压就能实现直流电机的无极调速。 2)直流电机驱动电路 小功率直流电机驱动电路可以采用如图9_1所示的H 桥开关电路。这种驱动电路可以很方便地实现直流电机的四象限运行,即正转、正转制动、反转和反转制动。UA 和UB 是互补的TTL 驱动信号。由于大功率PNP 晶体管价格高,难实现,所以这个电路只在小功率电机驱动中使用。当四个功率开关全用NPN 晶体管时,需要解决两个上桥臂晶体管(BG1和BG3)的基极电平偏移问题。图(b)中H 桥开关电路利用两个晶体管实现了上桥臂晶体管的电平偏移。但电阻R 上的损耗较大,所以也只能在小功率电机驱动中使用。

红头文件40(情况说明)

路桥灵文(2015)040号签发人:邓宏 关于四川省重点工程公路建设从业单位信用评定公示我项目部存在异议的情况说明芦山县公路养护段: 根据四川省交通运输厅网站公示的四川省重点公路建设从业单 位信用评定公示内容,我公司按照《四川省重点公路建设从业单位信 用管理办法》中有关评分标准,本着实事求是,逐条逐项进行自我评

定,其自我评定结果与公示结果存在偏差,理由如下: 一、项目开工至2014年10月,项目所在地受极端天气影响及土地征用、房屋管线拆迁未及时跟进,导致工程无施工作业面,故项目经理、技术负责人前期在岗时间相对较少;2014年10月至今,项目经理、技术负责人均按合同相关条款约定按时到岗到位,正常开展施工作业; 二、施工机械设备、仪器完全按照合同要求按时到位,设备、仪器运行正常,完全满足施工需要,所有设备严格实行“三定”制度;进场设备、仪器均经业主单位及监理工程师认可; 三、项目管理机构、管理制度完善;原材料、成品、半成品、构配件均按有关规定进行检查检验同时提供了相应的证明材料; 四、所有隐蔽工程均按照相关规定,经报业主、监理工程师现场检验隐蔽工程,经检验合格后才进行隐蔽和进行下一道工序作业; 五、工程实体外观按照《公路工程质量检验评定标准》检验,外观无缺陷,并得到当地老百姓及当地政府的一致肯定; 六、所有项目管理资料均按相关规定完成各方签认并及时归档; 七、安全管理资料、管理制度完善,应急预案、措施已建立并经监理及业主批复。特殊作业人员均持证上岗; 八、本项目开工至今,未发生任何一起安全责任事故; 九、本项目开工至今,民工工资及时发放,未发生拖欠农民工工资事件,做到了民工工资按时发放。 综上所述,我项目部质量、安全管理制度建立健全,未发生安全

MSP430几种常用内置函数解释

几个重要的内联函数(内联函数定义在intrinsics.h中,但是这几个函数使用的时候不需要事先声明该文件头) ①__bic_SR_register(); 将CPU中SR寄存器中的某些位清零。即将括号内的位清零。 例:__bic_SR_register(GIE);//将GIE位清零,即关闭总中断 ②__bis_SR_register(); 将CPU中SR寄存器中的某些位置1。即将括号内的位置1。 ③__interrupt 放在函数前面,标志中断函数。下面这段程序是看门狗 WDT的中断服务函数。WDT_VECTOR为看门狗的中断向量。举例: #pragma vector=WDT_VECTOR __interrupt void WatchDog(void) {…} ④__monitor 放在函数前面,功能是声明当这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响 应。 ⑤__bic_SR_register_on_exit(); 功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位清0. ⑥__bis_SR_register_on_exit(); 功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中的某些位置1. ⑦__no_init 放在全局变量前面,功能是使程序启动时不为变量赋初值 ⑧__disable_interrupt 关闭总中断 另外一个相同作用的表达为:_DINT() ⑨__enable_interrupt 开启总中断 另外一个相同作用的表达为:_EINT() ⑩__even_in_range(,); 常被用在多源中断的查询中,如switch(__even_in_range(TAIV,1 0) 意思是:只有在TAIV的值是在0--10内的偶数时才会执行 switch函数内的语句。其作用是提高switch语句的效率 A._NOP() 空操作,等价于__no_operation指令 B.__get_SP_register(void) 功能:返回堆栈指针寄存器SP的值。

MSP430UIF使用说明

MSP430-UIF仿真器使用说明 一. 功能描述 0、USB接口的JTAG仿真器。USB口取电,不需要外接电源,并能给目标板或用户板提供3.3V(300mA)电源; 1、对MSP430 FLASH全系列单片机进行编程和在线仿真; 2、完全兼容德州仪器原厂MSP-FET430UIF开发工具; 3、可在线升级,烧熔丝加密。 4、采用德州仪器标准的2×7 PIN(IDC-14)标准连接器; 5、支持IAR430、AQ430、HI-TECH、GCC以及TI一些第三方编译器集成开发环境下的实时仿真、调试、单步执行、断点设置、存储器内容查看修改等; 6、支持程序烧写读取和熔丝烧断功能; 7、支持JTAG、SBW(2 Wire JTAG)接口; 8、支持固件升级功能。 二. JTAG连接 与目标板相连的14PIN的连接头定义见仿真器外壳(注意第一脚的方向)。仿真器与目标板连接方法如图所示:(详细请参考文件IAR FET Users Guide slau138d.pdf) 图1 Signal Connections for 4-Wire JTAG Communication

图2 Signal Connections for 2-Wire JTAG Communication (Spy-Bi-Wire) 三. 硬件安装 1.插上仿真器,计算机就会发现新硬件如图3 图3 安装第一步 2.选择“从列表或指定位置安装”,点击下一步,如图4找到驱动存放位置

图4 查找驱动3.安装驱动 图5 安装驱动

4.安装完成就可以使用了,在您的电脑里就会多一个串口如图6,不一定都是COM4。 图6 设备管理器位置 四. IAR设置 图7 打开在工程选项如上图

相关主题
文本预览
相关文档 最新文档