msp430寄存器.docx
《msp430寄存器.docx》由会员分享,可在线阅读,更多相关《msp430寄存器.docx(16页珍藏版)》请在冰豆网上搜索。
![msp430寄存器.docx](https://file1.bdocx.com/fileroot1/2022-12/7/a8c0389d-4f75-4af2-9eb9-a802e05ff4b5/a8c0389d-4f75-4af2-9eb9-a802e05ff4b51.gif)
msp430寄存器
MSP430F149祥解
对头文件做了比较详细的注释,记不清寄存器的人可以看看
#ifndef__msp430x14x
#define__msp430x14x
/************************************************************
*STANDARDBITS
************************************************************/
#defineBIT0 0x0001
#defineBIT1 0x0002
#defineBIT2 0x0004
#defineBIT3 0x0008
#defineBIT4 0x0010
#defineBIT5 0x0020
#defineBIT6 0x0040
#defineBIT7 0x0080
#defineBIT8 0x0100
#defineBIT9 0x0200
#defineBITA 0x0400
#defineBITB 0x0800
#defineBITC 0x1000
#defineBITD 0x2000
#defineBITE 0x4000
#defineBITF 0x8000
/************************************************************
*STATUSREGISTERBITS
************************************************************/
#defineC 0x0001
#defineZ 0x0002
#defineN 0x0004
#defineV 0x0100
#defineGIE 0x0008
#defineCPUOFF 0x0010
#defineOSCOFF 0x0020
#defineSCG0 0x0040
#defineSCG1 0x0080
低功耗模式
/*LowPowerModescodedwithBits4-7inSR*/
#ifndef__IAR_SYSTEMS_ICC/*Begin#definesforassembler*/
#defineLPM0 CPUOFF
#defineLPM1 SCG0+CPUOFF
#defineLPM2 SCG1+CPUOFF
#defineLPM3 SCG1+SCG0+CPUOFF
#defineLPM4 SCG1+SCG0+OSCOFF+CPUOFF
/*End#definesforassembler*/
#else/*Begin#definesforC*/
#defineLPM0_bits CPUOFF
#defineLPM1_bits SCG0+CPUOFF
#defineLPM2_bits SCG1+CPUOFF
#defineLPM3_bits SCG1+SCG0+CPUOFF
#defineLPM4_bits SCG1+SCG0+OSCOFF+CPUOFF
进入低功耗和退出低功耗模
#include
#defineLPM0 _BIS_SR(LPM0_bits)/*EnterLowPowerMode0*/
#defineLPM0_EXIT_BIC_SR(LPM0_bits)/*ExitLowPowerMode0*/
#defineLPM1 _BIS_SR(LPM1_bits)/*EnterLowPowerMode1*/
#defineLPM1_EXIT_BIC_SR(LPM1_bits)/*ExitLowPowerMode1*/
#defineLPM2 _BIS_SR(LPM2_bits)/*EnterLowPowerMode2*/
#defineLPM2_EXIT_BIC_SR(LPM2_bits)/*ExitLowPowerMode2*/
#defineLPM3 _BIS_SR(LPM3_bits)/*EnterLowPowerMode3*/
#defineLPM3_EXIT_BIC_SR(LPM3_bits)/*ExitLowPowerMode3*/
#defineLPM4 _BIS_SR(LPM4_bits)/*EnterLowPowerMode4*/
#defineLPM4_EXIT_BIC_SR(LPM4_bits)/*ExitLowPowerMode4*/
#endif/*End#definesforC*/
/************************************************************
*PERIPHERALFILEMAP
************************************************************/
/************************************************************
*特殊功能寄存器地址和控制位
************************************************************/
/*中断使能1*/
#defineIE1_ 0x0000
sfrb IE1 =IE1_;
#defineWDTIE 0x01 /*看门狗中断使能*/
#defineOFIE 0x02 /*外部晶振故障中断使能*/
#defineNMIIE 0x10 /*非屏蔽中断使能*/
#defineACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/
#defineURXIE0 0x40 /*串口0接收中断使能*/
#defineUTXIE0 0x80 /*串口0发送中断使能*/
/*中断标志1*/
#defineIFG1_ 0x0002
sfrb IFG1 =IFG1_;
#defineWDTIFG 0x01 /*看门狗中断标志*/
#defineOFIFG 0x02 /*外部晶振故障中断标志*/
#defineNMIIFG 0x10 /*非屏蔽中断标志*/
#defineURXIFG0 0x40 /*串口0接收中断标志*/
#defineUTXIFG0 0x80 /*串口0发送中断标志*/
/*中断模式使能1*/
#defineME1_ 0x0004
sfrb ME1 =ME1_;
#defineURXE0 0x40 /*串口0接收中断模式使能*/
#defineUSPIE0 0x40 /*同步中断模式使能*/
#defineUTXE0 0x80 /*串口0发送中断模式使能*/
/*中断使能2*/
#defineIE2_ 0x0001
sfrb IE2 =IE2_;
#defineURXIE1 0x10 /*串口1接收中断使能*/
#defineUTXIE1 0x20 /*串口1发送中断使能*/
/*中断标志2*/
#defineIFG2_ 0x0003
sfrb IFG2 =IFG2_;
#defineURXIFG1 0x10 /*串口1接收中断标志*/
#defineUTXIFG1 0x20 /*串口1发送中断标志*/
/*中断模式使能2*/
#defineME2_ 0x0005
sfrb ME2 =ME2_;
#defineURXE1 0x10 /*串口1接收中断模式使能*/
#defineUSPIE1 0x10 /*同步中断模式使能*/
#defineUTXE1 0x20 /*串口1发送中断模式使能*/
/************************************************************
* 看门狗定时器的寄存器定义
************************************************************/
#defineWDTCTL_ 0x0120
sfrw WDTCTL =WDTCTL_;
#defineWDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/
#defineWDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/
#defineWDTSSEL 0x0004 /*选择WDTCNT的时钟源*/
#defineWDTCNTCL 0x0008 /*清除WDTCNT端:
为1时从0开始计数*/
#defineWDTTMSEL 0x0010 /*选择模式0:
看门狗模式;1:
定时器模式*/
#defineWDTNMI 0x0020 /*选择NMI/RST引脚功能0:
为RST;1:
为NMI*/
#defineWDTNMIES 0x0040 /*WDTNMI=1时.选择触发延0:
为上升延1:
为下降延*/
#defineWDTHOLD 0x0080 /*停止看门狗定时器工作0:
启动;1:
停止*/
#defineWDTPW 0x5A00 /*写密码:
高八位*/
/*SMCLK=1MHz定时器模式*/
#defineWDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL /*TSMCLK*2POWER15=32ms复位状态*/
#defineWDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /*TSMCLK*2POWER13=8.192ms "*/
#defineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /*TSMCLK*2POWER9=0.512ms"*/
#defineWDT_MDLY_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /*TSMCLK*2POWER6=0.512ms"*/
/*ACLK=32.768KHz定时器模式*/
#defineWDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /*TACLK*2POWER15=1000ms"*/
#defineWDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /*TACLK*2POWER13=250ms"*/
#defineWDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1 /*TACLK*2POWER9=16ms "*/
#defineWDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/*TACLK*2POWER6=1.9ms"*/
/*SMCLK=1MHz看门狗模式*/
#defineWDT_MRST_32 WDTPW+WDTCNTCL /*TSMCLK*2POWER15=32ms复位状态*/
#defineWDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0 /*TSMCLK*2POWER13=8.192ms"*/
#defineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1 /*TSMCLK*2POWER9=0.512ms"*/
#defineWDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /*TSMCLK*2POWER6=0.512ms"*/
/*ACLK=32KHz看门狗模式*/
#defineWDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL /*TACLK*2POWER15=1000ms"*/
#defineWDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0 /*TACLK*2POWER13=250ms"*/
#defineWDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /*TACLK*2POWER9=16ms "*/
#defineWDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /*TACLK*2POWER6=1.9ms"*/
/************************************************************
硬件乘法器的寄存器定义
************************************************************/
#defineMPY_ 0x0130/*无符号乘法*/
sfrw MPY =MPY_;
#defineMPYS_ 0x0132/*有符号乘法*/
sfrw MPYS =MPYS_;
#defineMAC_ 0x0134/*无符号乘加*/
sfrw MAC =MAC_;
#defineMACS_ 0x0136/*有符号乘加*/
sfrw MACS =MACS_;
#defineOP2_ 0x0138/*第二乘数*/
sfrw OP2 =OP2_;
#defineRESLO_ 0x013A/*低6位结果寄存器*/
sfrw RESLO =RESLO_;
#defineRESHI_ 0x013C/*高6位结果寄存器*/
sfrw RESHI =RESHI_;
#defineSUMEXT_ 0x013E/*结果扩展寄存器*/
constsfrwSUMEXT =SUMEXT_;
/************************************************************
*DIGITALI/OPort1/2寄存器定义有中断功能
************************************************************/
#defineP1IN_ 0x0020/*P1输入寄存器*/
constsfrbP1IN =P1IN_;
#defineP1OUT_ 0x0021/*P1输出寄存器*/
sfrb P1OUT =P1OUT_;
#defineP1DIR_ 0x0022/*P1方向选择寄存器*/
sfrb P1DIR =P1DIR_;
#defineP1IFG_ 0x0023/*P1中断标志寄存器*/
sfrb P1IFG =P1IFG_;
#defineP1IES_ 0x0024/*P1中断边沿选择寄存器*/
sfrb P1IES =P1IES_;
#defineP1IE_ 0x0025/*P1中断使能寄存器*/
sfrb P1IE =P1IE_;
#defineP1SEL_ 0x0026/*P1功能选择寄存器*/
sfrb P1SEL =P1SEL_;
#defineP2IN_ 0x0028/*P2输入寄存器*/
constsfrbP2IN =P2IN_;
#defineP2OUT_ 0x0029/*P2输出寄存器*/
sfrb P2OUT =P2OUT_;
#defineP2DIR_ 0x002A/*P2方向选择寄存器*/
sfrb P2DIR =P2DIR_;
#defineP2IFG_ 0x002B/*P2中断标志寄存器*/
sfrb P2IFG =P2IFG_;
#defineP2IES_ 0x002C/*P2中断边沿选择寄存器*/
sfrb P2IES =P2IES_;
#defineP2IE_ 0x002D/*P2中断使能寄存器*/
sfrb P2IE =P2IE_;
#defineP2SEL_ 0x002E/*P2功能选择寄存器*/
sfrb P2SEL =P2SEL_;
/************************************************************
*DIGITALI/OPort3/4寄存器定义无中断功能
************************************************************/
#defineP3IN_ 0x0018/*P3输入寄存器*/
constsfrbP3IN =P3IN_;
#defineP3OUT_ 0x0019/*P3输出寄存器*/
sfrb P3OUT =P3OUT_;
#defineP3DIR_ 0x001A/*P3方向选择寄存器*/
sfrb P3DIR =P3DIR_;
#defineP3SEL_ 0x001B/*P3功能选择寄存器*/
sfrb P3SEL =P3SEL_;
#defineP4IN_ 0x001C/*P4