msp430头文件解释说明

2019-07-23 15:32发布

msp430头文件解释说明,有中文注释
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
yiyigirl2014
2019-07-23 18:19
MSP430F149祥解
对头文件做了比较详细的注释,记不清寄存器的人可以看看

#ifndef __msp430x14x
#define __msp430x14x

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

#define BIT0                0x0001
#define BIT1                0x0002
#define BIT2                0x0004
#define BIT3                0x0008
#define BIT4                0x0010
#define BIT5                0x0020
#define BIT6                0x0040
#define BIT7                0x0080
#define BIT8                0x0100
#define BIT9                0x0200
#define BITA                0x0400
#define BITB                0x0800
#define BITC                0x1000
#define BITD                0x2000
#define BITE                0x4000
#define BITF                0x8000

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

#define C                  0x0001
#define Z                  0x0002
#define N                  0x0004
#define V                  0x0100
#define GIE                0x0008
#define CPUOFF              0x0010
#define OSCOFF              0x0020
#define SCG0                0x0040
#define SCG1                0x0080

/* Low Power Modes coded with Bits 4-7 in SR */

#ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */
#define LPM0                CPUOFF
#define LPM1                SCG0+CPUOFF
#define LPM2                SCG1+CPUOFF
#define LPM3                SCG1+SCG0+CPUOFF
#define LPM4                SCG1+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 <In430.h>

#define LPM0      _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */
#define LPM0_EXIT _BIC_SR(LPM0_bits) /* Exit Low Power Mode 0 */
#define LPM1      _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */
#define LPM1_EXIT _BIC_SR(LPM1_bits) /* Exit Low Power Mode 1 */
#define LPM2      _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */
#define LPM2_EXIT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */
#define LPM3      _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */
#define LPM3_EXIT _BIC_SR(LPM3_bits) /* Exit Low Power Mode 3 */
#define LPM4      _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */
#define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */
#endif /* End #defines for C */

/************************************************************
* PERIPHERAL FILE MAP
************************************************************/

/************************************************************
* 特殊功能寄存器地址和控制位
************************************************************/
/*中断使能1*/
#define IE1_                0x0000
sfrb    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_              0x0002
sfrb    IFG1              = IFG1_;
#define WDTIFG              0x01    /*看门狗中断标志*/
#define OFIFG              0x02    /*外部晶振故障中断标志*/
#define NMIIFG              0x10    /*非屏蔽中断标志*/
#define URXIFG0            0x40    /*串口0接收中断标志*/
#define UTXIFG0            0x80    /*串口0发送中断标志*/
/* 中断模式使能1 */
#define ME1_                0x0004
sfrb    ME1              = ME1_;
#define URXE0              0x40        /* 串口0接收中断模式使能 */
#define USPIE0              0x40        /* 同步中断模式使能 */
#define UTXE0              0x80        /* 串口0发送中断模式使能 */
/* 中断使能2 */
#define IE2_                0x0001
sfrb    IE2              = IE2_;
#define URXIE1              0x10      /* 串口1接收中断使能 */
#define UTXIE1              0x20      /* 串口1发送中断使能 */
/* 中断标志2 */
#define IFG2_              0x0003
sfrb    IFG2              = IFG2_;
#define URXIFG1            0x10        /* 串口1接收中断标志 */
#define UTXIFG1            0x20        /* 串口1发送中断标志 */
/* 中断模式使能2 */
#define ME2_                0x0005
sfrb    ME2              = ME2_;
#define URXE1              0x10        /* 串口1接收中断模式使能 */
#define USPIE1              0x10        /* 同步中断模式使能 */
#define UTXE1              0x20        /* 串口1发送中断模式使能 */

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

#define WDTCTL_            0x0120
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:停止*/

#define WDTPW              0x5A00          /* 写密码:高八位*/


/* SMCLK= 1MHz定时器模式 */
#define WDT_MDLY_32        WDTPW+WDTTMSEL+WDTCNTCL                        /* TSMCLK*2POWER15=32ms 复位状态 */
#define WDT_MDLY_8          WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0                  /* TSMCLK*2POWER13=8.192ms    " */
#define WDT_MDLY_0_5        WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1                  /* TSMCLK*2POWER9=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*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_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 " */


/************************************************************
            硬件乘法器的寄存器定义
************************************************************/

#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_;


//2
/************************************************************
* 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 /* 串口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 /* 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 /* 串口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 */
sfrb    U1BR0            = U1BR0_;
#define U1BR1_              0x007D /* 波特率选择寄存器1 */
sfrb    U1BR1            = U1BR1_;
#define U1RXBUF_            0x007E /* 接收缓存 */
const sfrb U1RXBUF        = U1RXBUF_;
#define U1TXBUF_            0x007F /* 发送缓存 */
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_;

一周热门 更多>