msp49头文件中文解释.docx
《msp49头文件中文解释.docx》由会员分享,可在线阅读,更多相关《msp49头文件中文解释.docx(43页珍藏版)》请在冰豆网上搜索。
![msp49头文件中文解释.docx](https://file1.bdocx.com/fileroot1/2023-4/25/f1fef017-446c-49e0-964a-122cfd493f2b/f1fef017-446c-49e0-964a-122cfd493f2b1.gif)
msp49头文件中文解释
VCC:
C=circuit表示电路的意思,即接入电路的电压;
VDD:
D=device表示器件的意思,即器件内部的工作电压;
VSS:
S=series表示公共连接的意思,通常指电路公共接地端电压。
对于数字电路来说,VCC是电路的供电电压,VDD是芯片的工作电压(通常Vcc>Vdd),VSS是接地点。
通常在采用正电压的电路上的表示:
AVDD--功率(模拟)
AVCC—正模拟电源电压
AVSS—模拟电路地
DVCC—正数字电源电压
DVSS—数字电路地
AVCC/AVSS一般为模拟部分提供电源,DVCC/DVSS一般为数字部分和内部I/O提供电源,为了避免引入电源干扰,通常需要把AVCC/AVSS和DVCC/DVSS隔离开
是这个意思,PxREN的作用是使能上拉或者下拉电阻,因为MSP430F5438这个单片机IO口内部集成了上拉或者下拉电阻,通过PxREN去使能这两个电阻。
另外,IO口有输入和输出两种状态,当IO口是输出状态时,IO口电平高低由单片机控制;当IO口是输入状态时,IO口电平高低由外部电路决定。
IO口输入和输出状态的选择由PxDIR决定,当PxDIR=0时对应IO口的输入状态,PxDIR=1对应IO口的输出状态。
PxOUT的作用是当IO口配置成输出状态时,决定输出电平高低,当IO口配置成输入状态时,并且使能上拉下拉电阻的时候,决定到底是上拉起作用还是下拉电阻起作用。
关于寄存器的配置,你可以看datasheet,或者再有不懂,可以问我。
现在这样理解哈:
1.MSP430其实根本没有位操作能力,它为了操作某一位,只能通过操作整个端口来实现;2.位或的时候被0异或的位保持不变,因为有0^0=0;0^1=1;而与1异或的位取反了,因为0^1=1;1^1=0;
#ifndef__msp430x14x
#define__msp430x14x
/************************************************************
*STANDARDBITS
************************************************************/
#defineBIT00x0001
#defineBIT10x0002
#defineBIT20x0004
#defineBIT30x0008
#defineBIT40x0010
#defineBIT50x0020
#defineBIT60x0040
#defineBIT70x0080
#defineBIT80x0100
#defineBIT90x0200
#defineBITA0x0400
#defineBITB0x0800
#defineBITC0x1000
#defineBITD0x2000
#defineBITE0x4000
#defineBITF0x8000
/************************************************************
*STATUSREGISTERBITS
************************************************************/
#defineC0x0001
#defineZ0x0002
#defineN0x0004
#defineV0x0100
#defineGIE0x0008
#defineCPUOFF0x0010
#defineOSCOFF0x0020
#defineSCG00x0040
#defineSCG10x0080
/*LowPowerModescodedwithBits4-7inSR*/
#ifndef__IAR_SYSTEMS_ICC/*Begin#definesforassembler*/
#defineLPM0CPUOFF
#defineLPM1SCG0+CPUOFF
#defineLPM2SCG1+CPUOFF
#defineLPM3SCG1+SCG0+CPUOFF
#defineLPM4SCG1+SCG0+OSCOFF+CPUOFF
/*End#definesforassembler*/
#else/*Begin#definesforC*/
#defineLPM0_bitsCPUOFF
#defineLPM1_bitsSCG0+CPUOFF
#defineLPM2_bitsSCG1+CPUOFF
#defineLPM3_bitsSCG1+SCG0+CPUOFF
#defineLPM4_bitsSCG1+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
sfrbIE1=IE1_;
#defineWDTIE0x01/*看门狗中断使能*/
#defineOFIE0x02/*外部晶振故障中断使能*/
#defineNMIIE0x10/*非屏蔽中断使能*/
#defineACCVIE0x20/*可屏蔽中断使能/flash写中断错误*/
#defineURXIE00x40/*串口0接收中断使能*/
#defineUTXIE00x80/*串口0发送中断使能*/
/*中断标志1*/
#defineIFG1_0x0002
sfrbIFG1=IFG1_;
#defineWDTIFG0x01/*看门狗中断标志*/
#defineOFIFG0x02/*外部晶振故障中断标志*/
#defineNMIIFG0x10/*非屏蔽中断标志*/
#defineURXIFG00x40/*串口0接收中断标志*/
#defineUTXIFG00x80/*串口0发送中断标志*/
/*中断模式使能1*/
#defineME1_0x0004
sfrbME1=ME1_;
#defineURXE00x40/*串口0接收中断模式使能*/
#defineUSPIE00x40/*同步中断模式使能*/
#defineUTXE00x80/*串口0发送中断模式使能*/
/*中断使能2*/
#defineIE2_0x0001
sfrbIE2=IE2_;
#defineURXIE10x10/*串口1接收中断使能*/
#defineUTXIE10x20/*串口1发送中断使能*/
/*中断标志2*/
#defineIFG2_0x0003
sfrbIFG2=IFG2_;
#defineURXIFG10x10/*串口1接收中断标志*/
#defineUTXIFG10x20/*串口1发送中断标志*/
/*中断模式使能2*/
#defineME2_0x0005
sfrbME2=ME2_;
#defineURXE10x10/*串口1接收中断模式使能*/
#defineUSPIE10x10/*同步中断模式使能*/
#defineUTXE10x20/*串口1发送中断模式使能*/
/************************************************************
*看门狗定时器的寄存器定义
************************************************************/
#defineWDTCTL_0x0120
sfrwWDTCTL=WDTCTL_;
#defineWDTIS00x0001/*选择WDTCNT的四个输出端之一*/
#defineWDTIS10x0002/*选择WDTCNT的四个输出端之一*/
#defineWDTSSEL0x0004/*选择WDTCNT的时钟源*/
#defineWDTCNTCL0x0008/*清除WDTCNT端:
为1时从0开始计数*/
#defineWDTTMSEL0x0010/*选择模式0:
看门狗模式;1:
定时器模式*/
#defineWDTNMI0x0020/*选择NMI/RST引脚功能0:
为RST;1:
为NMI*/
#defineWDTNMIES0x0040/*WDTNMI=1时.选择触发延0:
为上升延1:
为下降延*/
#defineWDTHOLD0x0080/*停止看门狗定时器工作0:
启动;1:
停止*/
#defineWDTPW0x5A00/*写密码:
高八位*/
/*SMCLK=1MHz定时器模式*/
#defineWDT_MDLY_32WDTPW+WDTTMSEL+WDTCNTCL/*TSMCLK*2POWER15=32ms复位状态*/
#defineWDT_MDLY_8WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0/*TSMCLK*2POWER13=8.192ms"*/
#defineWDT_MDLY_0_5WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1/*TSMCLK*2POWER9=0.512ms"*/
#defineWDT_MDLY_0_064WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0/*TSMCLK*2POWER6=0.512ms"*/
/*ACLK=32.768KHz定时器模式*/
#defineWDT_ADLY_1000WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL/*TACLK*2POWER15=1000ms"*/
#defineWDT_ADLY_250WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0/*TACLK*2POWER13=250ms"*/
#defineWDT_ADLY_16WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/*TACLK*2POWER9=16ms"*/
#defineWDT_ADLY_1_9WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/*TACLK*2POWER6=1.9ms"*/
/*SMCLK=1MHz看门狗模式*/
#defineWDT_MRST_32WDTPW+WDTCNTCL/*TSMCLK*2POWER15=32ms复位状态*/
#defineWDT_MRST_8WDTPW+WDTCNTCL+WDTIS0/*TSMCLK*2POWER13=8.192ms"*/
#defineWDT_MRST_0_5WDTPW+WDTCNTCL+WDTIS1/*TSMCLK*2POWER9=0.512ms"*/
#defineWDT_MRST_0_064WDTPW+WDTCNTCL+WDTIS1+WDTIS0/*TSMCLK*2POWER6=0.512ms"*/
/*ACLK=32KHz看门狗模式*/
#defineWDT_ARST_1000WDTPW+WDTCNTCL+WDTSSEL/*TACLK*2POWER15=1000ms"*/
#defineWDT_ARST_250WDTPW+WDTCNTCL+WDTSSEL+WDTIS0/*TACLK*2POWER13=250ms"*/
#defineWDT_ARST_16WDTPW+WDTCNTCL+WDTSSEL+WDTIS1/*TACLK*2POWER9=16ms"*/
#defineWDT_ARST_1_9WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/*TACLK*2POWER6=1.9ms"*/
/************************************************************
硬件乘法器的寄存器定义
************************************************************/
#defineMPY_0x0130/*无符号乘法*/
sfrwMPY=MPY_;
#defineMPYS_0x0132/*有符号乘法*/
sfrwMPYS=MPYS_;
#defineMAC_0x0134/*无符号乘加*/
sfrwMAC=MAC_;
#defineMACS_0x0136/*有符号乘加*/
sfrwMACS=MACS_;
#defineOP2_0x0138/*第二乘数*/
sfrwOP2=OP2_;
#defineRESLO_0x013A/*低6位结果寄存器*/
sfrwRESLO=RESLO_;
#defineRESHI_0x013C/*高6位结果寄存器*/
sfrwRESHI=RESHI_;
#defineSUMEXT_0x013E/*结果扩展寄存器*/
constsfrwSUMEXT=SUMEXT_;
/************************************************************
*DIGITALI/OPort1/2寄存器定义有中断功能
************************************************************/
#defineP1IN_0x0020/*P1输入寄存器*/
constsfrbP1IN=P1IN_;
#defineP1OUT_0x0021/*P1输出寄存器*/
sfrbP1OUT=P1OUT_;
#defineP1DIR_0x0022/*P1方向选择寄存器*/
sfrbP1DIR=P1DIR_;
#defineP1IFG_0x0023/*P1中断标志寄存器*/
sfrbP1IFG=P1IFG_;
#defineP1IES_0x0024/*P1中断边沿选择寄存器*/
sfrbP1IES=P1IES_;
#defineP1IE_0x0025/*P1中断使能寄存器*/
sfrbP1IE=P1IE_;
#defineP1SEL_0x0026/*P1功能选择寄存器*/
sfrbP1SEL=P1SEL_;
#defineP2IN_0x0028/*P2输入寄存器*/
constsfrbP2IN=P2IN_;
#defineP2OUT_0x0029/*P2输出寄存器*/
sfrbP2OUT=P2OUT_;
#defineP2DIR_0x002A/*P2方向选择寄存器*/
sfrbP2DIR=P2DIR_;
#defineP2IFG_0x002B/*P2中断标志寄存器*/
sfrbP2IFG=P2IFG_;
#defineP2IES_0x002C/*P2中断边沿选择寄存器*/
sfrbP2IES=P2IES_;
#defineP2IE_0x002D/*P2中断使能寄存器*/
sfrbP2IE=P2IE_;
#defineP2SEL_0x002E/*P2功能选择寄存器*/
sfrbP2SEL=P2SEL_;
/************************************************************
*DIGITALI/OPort3/4寄存器定义无中断功能
************************************************************/
#defineP3IN_0x0018/*P3输入寄存器*/
constsfrbP3IN=P3IN_;
#defineP3OUT_0x0019/*P3输出寄存器*/
sfrbP3OUT=P3OUT_;
#defineP3DIR_0x001A/*P3方向选择寄存器*/
sfrbP3DIR=P3DIR_;
#defineP3SEL_0x001B/*P3功能选择寄存器*/
sfrbP3SEL=P3SEL_;
#defineP4IN_0x001C/*P4输入寄存器*/
constsfrbP4IN=P4IN_;
#defineP4OUT_0x001D/*P4输出寄存器*/
sfrbP4OUT=P4OUT_;
#defineP4DIR_0x001E/*P4方向选择寄存器*/
sfrbP4DIR=P4DIR_;
#defineP4SEL_0x001F/*P4功能选择寄存器*/
sfrbP4SEL=P4SEL_;
/************************************************************
*DIGITALI/OPort5/6I/O口寄存器定义PORT5和6无中断功能
************************************************************/
#defineP5IN_0x0030/*P5输入寄存器*/
constsfrbP5IN=P5IN_;
#defineP5OUT_0x0031/*P5输出寄存器*/
sfrbP5OUT=P5OUT_;
#defineP5DIR_0x0032/*P5方向选择寄存器*/
sfrbP5DIR=P5DIR_;
#defineP5SEL_0x0033/*P5功能选择寄存器*/
sfrbP5SEL=P5SEL_;
#defineP6IN_0x0034/*P6输入寄存器*/
constsfrbP6IN=P6IN_;
#defineP6OUT_0x0035/*P6输出寄存器*/
sfrbP6OUT=P6OUT_;
#defineP6DIR_0x0036/*P6方向选择寄存器*/
sfrbP6DIR=P6DIR_;
#defineP6SEL_0x0037/*P6功能选择寄存器*/
sfrbP6SEL=P6SEL_;
/************************************************************
*USART串口寄存器"UCTL","UTCTL","URCTL"定义的各个位可串口1串口2公用
************************************************************/
/*UCTL串口控制寄存器*/
#definePENA0x80/*校验允许位*/
#definePEV0x40/*偶校验为0时为奇校验*/
#defineSPB0x20/*停止位为2为0时停止位为1*/
#defineCHAR0x10/*数据位为8位为0时数据位为7位*/
#defineLISTEN0x08/*自环模式(发数据同时在把发的数据接收回来)*/
#defineSYNC0x04/*同步模式为0异步模式*/
#defineMM0x02/*为1时地址位多机协议(异步)主机模式(同步);为0时线路空闲多机协议(异步)从机模式(同步)*/
#defineSWRST0x01/*控制位*/
/*UTCTL串口发送控制寄存器*/
#defineCKPH0x80/*时钟相位控制位(只同步方式用)为1时时钟UCLK延时半个周期*/
#defineCKPL0x40/*时钟极性控制位为1时异步与UCLK相反;同步下降延有效*/
#defineSSEL10x20/*时钟源选择位:
与SSEL0组合为0,1,2,3四种方式*/
#defineSSEL00x10/*"0"选择外部时钟,"1"选择辅助时钟,"2","3"选择系统子时钟*/
#defineURXSE0x08/*接收触发延控制位(只在异步方式下用)*/
#defineTXWAKE0x04/*多处理器通信传送控制位(只在异步