找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6751|回复: 1
打印 上一主题 下一主题
收起左侧

M430f149头文件详解

[复制链接]
跳转到指定楼层
楼主
ID:98881 发表于 2016-4-18 23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
430f149头文件详解

  1. #ifndef __msp430x14x
  2. #define __msp430x14x

  3. /************************************************************
  4. * STANDARD BITS
  5. ************************************************************/

  6. #define BIT0                0x0001
  7. #define BIT1                0x0002
  8. #define BIT2                0x0004
  9. #define BIT3                0x0008
  10. #define BIT4                0x0010
  11. #define BIT5                0x0020
  12. #define BIT6                0x0040
  13. #define BIT7                0x0080
  14. #define BIT8                0x0100
  15. #define BIT9                0x0200
  16. #define BITA                0x0400
  17. #define BITB                0x0800
  18. #define BITC                0x1000
  19. #define BITD                0x2000
  20. #define BITE                0x4000
  21. #define BITF                0x8000

  22. /************************************************************
  23. * STATUS REGISTER BITS
  24. ************************************************************/

  25. #define C                   0x0001
  26. #define Z                   0x0002
  27. #define N                   0x0004
  28. #define V                   0x0100
  29. #define GIE                 0x0008
  30. #define CPUOFF              0x0010
  31. #define OSCOFF              0x0020
  32. #define SCG0                0x0040
  33. #define SCG1                0x0080

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

  35. #ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */
  36. #define LPM0                CPUOFF
  37. #define LPM1                SCG0+CPUOFF
  38. #define LPM2                SCG1+CPUOFF
  39. #define LPM3                SCG1+SCG0+CPUOFF
  40. #define LPM4                SCG1+SCG0+OSCOFF+CPUOFF
  41. /* End #defines for assembler */

  42. #else /* Begin #defines for C */
  43. #define LPM0_bits           CPUOFF
  44. #define LPM1_bits           SCG0+CPUOFF
  45. #define LPM2_bits           SCG1+CPUOFF
  46. #define LPM3_bits           SCG1+SCG0+CPUOFF
  47. #define LPM4_bits           SCG1+SCG0+OSCOFF+CPUOFF

  48. #include <In430.h>

  49. #define LPM0      _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */
  50. #define LPM0_EXIT _BIC_SR(LPM0_bits) /* Exit Low Power Mode 0 */
  51. #define LPM1      _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */
  52. #define LPM1_EXIT _BIC_SR(LPM1_bits) /* Exit Low Power Mode 1 */
  53. #define LPM2      _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */
  54. #define LPM2_EXIT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */
  55. #define LPM3      _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */
  56. #define LPM3_EXIT _BIC_SR(LPM3_bits) /* Exit Low Power Mode 3 */
  57. #define LPM4      _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */
  58. #define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */
  59. #endif /* End #defines for C */

  60. /************************************************************
  61. * PERIPHERAL FILE MAP
  62. ************************************************************/

  63. /************************************************************
  64. * 特殊功能寄存器地址和控制位
  65. ************************************************************/
  66. /*中断使能1*/
  67. #define IE1_                0x0000  
  68. sfrb    IE1               = IE1_;
  69. #define WDTIE               0x01     /*看门狗中断使能*/      
  70. #define OFIE                0x02     /*外部晶振故障中断使能*/
  71. #define NMIIE               0x10     /*非屏蔽中断使能*/
  72. #define ACCVIE              0x20     /*可屏蔽中断使能/flash写中断错误*/
  73. #define URXIE0              0x40     /*串口0接收中断使能*/
  74. #define UTXIE0              0x80     /*串口0发送中断使能*/
  75. /*中断标志1*/
  76. #define IFG1_               0x0002  
  77. sfrb    IFG1              = IFG1_;
  78. #define WDTIFG              0x01     /*看门狗中断标志*/
  79. #define OFIFG               0x02     /*外部晶振故障中断标志*/
  80. #define NMIIFG              0x10     /*非屏蔽中断标志*/
  81. #define URXIFG0             0x40     /*串口0接收中断标志*/
  82. #define UTXIFG0             0x80     /*串口0发送中断标志*/
  83. /* 中断模式使能1 */
  84. #define ME1_                0x0004
  85. sfrb    ME1               = ME1_;
  86. #define URXE0               0x40        /* 串口0接收中断模式使能 */
  87. #define USPIE0              0x40        /* 同步中断模式使能 */
  88. #define UTXE0               0x80        /* 串口0发送中断模式使能 */
  89. /* 中断使能2 */
  90. #define IE2_                0x0001  
  91. sfrb    IE2               = IE2_;
  92. #define URXIE1              0x10       /* 串口1接收中断使能 */
  93. #define UTXIE1              0x20       /* 串口1发送中断使能 */
  94. /* 中断标志2 */
  95. #define IFG2_               0x0003  
  96. sfrb    IFG2              = IFG2_;
  97. #define URXIFG1             0x10         /* 串口1接收中断标志 */
  98. #define UTXIFG1             0x20         /* 串口1发送中断标志 */
  99. /* 中断模式使能2 */
  100. #define ME2_                0x0005  
  101. sfrb    ME2               = ME2_;
  102. #define URXE1               0x10         /* 串口1接收中断模式使能 */
  103. #define USPIE1              0x10         /* 同步中断模式使能 */
  104. #define UTXE1               0x20         /* 串口1发送中断模式使能 */

  105. /************************************************************
  106. *           看门狗定时器的寄存器定义
  107. ************************************************************/

  108. #define WDTCTL_             0x0120
  109. sfrw    WDTCTL            = WDTCTL_;
  110. #define WDTIS0              0x0001          /*选择WDTCNT的四个输出端之一*/
  111. #define WDTIS1              0x0002          /*选择WDTCNT的四个输出端之一*/
  112. #define WDTSSEL             0x0004          /*选择WDTCNT的时钟源*/
  113. #define WDTCNTCL            0x0008          /*清除WDTCNT端: 为1时 从0开始计数*/   
  114. #define WDTTMSEL            0x0010          /*选择模式  0: 看门狗模式; 1: 定时器模式*/
  115. #define WDTNMI              0x0020          /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/
  116. #define WDTNMIES            0x0040          /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/
  117. #define WDTHOLD             0x0080          /*停止看门狗定时器工作 0:启动;1:停止*/

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


  119. /* SMCLK= 1MHz定时器模式 */
  120. #define WDT_MDLY_32         WDTPW+WDTTMSEL+WDTCNTCL                         /* TSMCLK*2POWER15=32ms 复位状态 */
  121. #define WDT_MDLY_8          WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0                  /* TSMCLK*2POWER13=8.192ms     " */
  122. #define WDT_MDLY_0_5        WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1                  /* TSMCLK*2POWER9=0.512ms   " */
  123. #define WDT_MDLY_0_064      WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0           /* TSMCLK*2POWER6=0.512ms " */
  124. /* ACLK=32.768KHz 定时器模式*/
  125. #define WDT_ADLY_1000       WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL                 /* TACLK*2POWER15=1000ms  " */
  126. #define WDT_ADLY_250        WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0          /* TACLK*2POWER13=250ms   " */
  127. #define WDT_ADLY_16         WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1          /* TACLK*2POWER9=16ms    " */
  128. #define WDT_ADLY_1_9        WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0   /* TACLK*2POWER6=1.9ms   " */
  129. /* SMCLK=1MHz看门狗模式 */
  130. #define WDT_MRST_32         WDTPW+WDTCNTCL                                  /* TSMCLK*2POWER15=32ms 复位状态  */
  131. #define WDT_MRST_8          WDTPW+WDTCNTCL+WDTIS0                           /* TSMCLK*2POWER13=8.192ms   " */
  132. #define WDT_MRST_0_5        WDTPW+WDTCNTCL+WDTIS1                           /* TSMCLK*2POWER9=0.512ms  " */
  133. #define WDT_MRST_0_064      WDTPW+WDTCNTCL+WDTIS1+WDTIS0                    /* TSMCLK*2POWER6=0.512ms " */
  134. /* ACLK=32KHz看门狗模式 */
  135. #define WDT_ARST_1000       WDTPW+WDTCNTCL+WDTSSEL                          /* TACLK*2POWER15=1000ms  " */
  136. #define WDT_ARST_250        WDTPW+WDTCNTCL+WDTSSEL+WDTIS0                   /* TACLK*2POWER13=250ms   " */
  137. #define WDT_ARST_16         WDTPW+WDTCNTCL+WDTSSEL+WDTIS1                   /* TACLK*2POWER9=16ms    " */
  138. #define WDT_ARST_1_9        WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0            /* TACLK*2POWER6=1.9ms   " */



  139. /************************************************************
  140.              硬件乘法器的寄存器定义
  141. ************************************************************/

  142. #define MPY_                0x0130  /* 无符号乘法 */
  143. sfrw    MPY               = MPY_;
  144. #define MPYS_               0x0132  /* 有符号乘法*/
  145. sfrw    MPYS              = MPYS_;
  146. #define MAC_                0x0134  /* 无符号乘加 */
  147. sfrw    MAC               = MAC_;
  148. #define MACS_               0x0136  /* 有符号乘加 */
  149. sfrw    MACS              = MACS_;
  150. #define OP2_                0x0138  /* 第二乘数 */
  151. sfrw    OP2               = OP2_;
  152. #define RESLO_              0x013A  /* 低6位结果寄存器 */
  153. sfrw    RESLO             = RESLO_;
  154. #define RESHI_              0x013C  /* 高6位结果寄存器 */
  155. sfrw    RESHI             = RESHI_;
  156. #define SUMEXT_             0x013E  /*结果扩展寄存器  */
  157. const sfrw SUMEXT         = SUMEXT_;

  158. /************************************************************
  159. * DIGITAL I/O Port1/2 寄存器定义 有中断功能
  160. ************************************************************/

  161. #define P1IN_               0x0020  /* P1 输入寄存器 */
  162. const sfrb P1IN           = P1IN_;
  163. #define P1OUT_              0x0021  /* P1 输出寄存器 */
  164. sfrb    P1OUT             = P1OUT_;
  165. #define P1DIR_              0x0022  /* P1 方向选择寄存器 */
  166. sfrb    P1DIR             = P1DIR_;
  167. #define P1IFG_              0x0023  /* P1 中断标志寄存器*/
  168. sfrb    P1IFG             = P1IFG_;
  169. #define P1IES_              0x0024  /* P1 中断边沿选择寄存器*/
  170. sfrb    P1IES             = P1IES_;
  171. #define P1IE_               0x0025  /* P1 中断使能寄存器 */
  172. sfrb    P1IE              = P1IE_;
  173. #define P1SEL_              0x0026  /* P1 功能选择寄存器*/
  174. sfrb    P1SEL             = P1SEL_;

  175. #define P2IN_               0x0028  /* P2 输入寄存器 */
  176. const sfrb P2IN           = P2IN_;
  177. #define P2OUT_              0x0029  /* P2 输出寄存器  */
  178. sfrb    P2OUT             = P2OUT_;
  179. #define P2DIR_              0x002A  /* P2 方向选择寄存器  */
  180. sfrb    P2DIR             = P2DIR_;
  181. #define P2IFG_              0x002B  /* P2 中断标志寄存器 */
  182. sfrb    P2IFG             = P2IFG_;
  183. #define P2IES_              0x002C  /* P2 中断边沿选择寄存器 */
  184. sfrb    P2IES             = P2IES_;
  185. #define P2IE_               0x002D  /* P2 中断使能寄存器 */
  186. sfrb    P2IE              = P2IE_;
  187. #define P2SEL_              0x002E  /* P2 功能选择寄存器 */
  188. sfrb    P2SEL             = P2SEL_;

  189. /************************************************************
  190. * DIGITAL I/O Port3/4寄存器定义 无中断功能
  191. ************************************************************/

  192. #define P3IN_               0x0018  /* P3 输入寄存器 */
  193. const sfrb P3IN           = P3IN_;
  194. #define P3OUT_              0x0019  /* P3 输出寄存器 */
  195. sfrb    P3OUT             = P3OUT_;
  196. #define P3DIR_              0x001A  /* P3 方向选择寄存器 */
  197. sfrb    P3DIR             = P3DIR_;
  198. #define P3SEL_              0x001B  /* P3 功能选择寄存器*/
  199. sfrb    P3SEL             = P3SEL_;

  200. #define P4IN_               0x001C  /* P4 输入寄存器 */
  201. const sfrb P4IN           = P4IN_;
  202. #define P4OUT_              0x001D  /* P4 输出寄存器 */
  203. sfrb    P4OUT             = P4OUT_;
  204. #define P4DIR_              0x001E  /* P4 方向选择寄存器 */
  205. sfrb    P4DIR             = P4DIR_;
  206. #define P4SEL_              0x001F  /* P4 功能选择寄存器 */
  207. sfrb    P4SEL             = P4SEL_;

  208. /************************************************************
  209. * DIGITAL I/O Port5/6       I/O口寄存器定义PORT5和6  无中断功能

  210. ************************************************************/

  211. #define P5IN_               0x0030  /* P5 输入寄存器 */
  212. const sfrb P5IN           = P5IN_;
  213. #define P5OUT_              0x0031  /* P5 输出寄存器*/
  214. sfrb    P5OUT             = P5OUT_;
  215. #define P5DIR_              0x0032  /* P5 方向选择寄存器*/
  216. sfrb    P5DIR             = P5DIR_;
  217. #define P5SEL_              0x0033  /* P5 功能选择寄存器*/
  218. sfrb    P5SEL             = P5SEL_;

  219. #define P6IN_               0x0034  /* P6 输入寄存器 */
  220. const sfrb P6IN           = P6IN_;
  221. #define P6OUT_              0x0035  /* P6 输出寄存器*/
  222. sfrb    P6OUT             = P6OUT_;
  223. #define P6DIR_              0x0036  /* P6 方向选择寄存器*/
  224. sfrb    P6DIR             = P6DIR_;
  225. #define P6SEL_              0x0037  /* P6 功能选择寄存器*/
  226. sfrb    P6SEL             = P6SEL_;

  227. /************************************************************
  228. * USART   串口寄存器"UCTL","UTCTL","URCTL"定义的各个位 可串口1 串口2公用
  229. ************************************************************/
  230. /* UCTL  串口控制寄存器*/  
  231. #define PENA                0x80        /*校验允许位*/
  232. #define PEV                 0x40        /*偶校验   为0时为奇校验*/
  233. #define SPB                 0x20        /*停止位为2 为0时停止位为1*/
  234. #define CHAR                0x10        /*数据位为8位 为0时数据位为7位*/
  235. #define LISTEN              0x08        /*自环模式(发数据同时在把发的数据接收回来)*/
  236. #define SYNC                0x04        /*同步模式  为0异步模式*/
  237. #define MM                  0x02        /*为1时地址位多机协议(异步) 主机模式(同步);为0时线路空闲多机协议(异步) 从机模式(同步)*/
  238. #define SWRST               0x01        /*控制位*/

  239. /* UTCTL 串口发送控制寄存器*/
  240. #define CKPH                0x80        /*时钟相位控制位(只同步方式用)为1时时钟UCLK延时半个周期*/   
  241. #define CKPL                0x40        /*时钟极性控制位 为1时异步与UCLK相反;同步下降延有效*/
  242. #define SSEL1               0x20        /*时钟源选择位:与SSEL0组合为0,1,2,3四种方式*/
  243. #define SSEL0               0x10        /*"0"选择外部时钟,"1"选择辅助时钟,"2","3"选择系统子时钟 */
  244. #define URXSE               0x08        /*接收触发延控制位(只在异步方式下用)*/
  245. #define TXWAKE              0x04        /*多处理器通信传送控制位(只在异步方式下用)*/
  246. #define STC                 0x02        /*外部引脚STE选择位 为0时为4线模式 为1时为3线模式*/
  247. #define TXEPT               0x01        /*发送器空标志*/

  248. /* URCTL 串口接收控制寄存器                同步模式下只用两位:FE和OE*/
  249. #define FE                  0x80         /*帧错标志*/           
  250. #define PE                  0x40         /*校验错标志位*/
  251. #define OE                  0x20         /*溢出标志位*/
  252. #define BRK                 0x10         /*打断检测位*/
  253. #define URXEIE              0x08         /*接收出错中断允许位*/
  254. #define URXWIE              0x04         /*接收唤醒中断允许位*/
  255. #define RXWAKE              0x02         /*接收唤醒检测位*/
  256. #define RXERR               0x01         /*接收错误标志位*/

  257. /************************************************************
  258. * USART 0           串口0寄存器定义
  259. ************************************************************/

  260. #define U0CTL_              0x0070  /*  串口0基本控制寄存器 */
  261. sfrb    U0CTL             = U0CTL_;
  262. #define U0TCTL_             0x0071  /* 串口0发送控制寄存器 */
  263. sfrb    U0TCTL            = U0TCTL_;
  264. #define U0RCTL_             0x0072  /* 串口0接收控制寄存器 */
  265. sfrb    U0RCTL            = U0RCTL_;
  266. #define U0MCTL_             0x0073  /* 波特率调整寄存器 */
  267. sfrb    U0MCTL            = U0MCTL_;
  268. #define U0BR0_              0x0074  /* 波特率选择寄存器0 */
  269. sfrb    U0BR0             = U0BR0_;
  270. #define U0BR1_              0x0075  /* 波特率选择寄存器1 */
  271. sfrb    U0BR1             = U0BR1_;
  272. #define U0RXBUF_            0x0076  /* 接收缓存寄存器 */
  273. const sfrb U0RXBUF        = U0RXBUF_;
  274. #define U0TXBUF_            0x0077  /* 发送缓存寄存器 */
  275. sfrb    U0TXBUF           = U0TXBUF_;

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

  277. #define UCTL0_              0x0070  /* UART 0 Control */
  278. sfrb    UCTL0             = UCTL0_;
  279. #define UTCTL0_             0x0071  /* UART 0 Transmit Control */
  280. sfrb    UTCTL0            = UTCTL0_;
  281. #define URCTL0_             0x0072  /* UART 0 Receive Control */
  282. sfrb    URCTL0            = URCTL0_;
  283. #define UMCTL0_             0x0073  /* UART 0 Modulation Control */
  284. sfrb    UMCTL0            = UMCTL0_;
  285. #define UBR00_              0x0074  /* UART 0 Baud Rate 0 */
  286. sfrb    UBR00             = UBR00_;
  287. #define UBR10_              0x0075  /* UART 0 Baud Rate 1 */
  288. sfrb    UBR10             = UBR10_;
  289. #define RXBUF0_             0x0076  /* UART 0 Receive Buffer */
  290. const sfrb RXBUF0         = RXBUF0_;
  291. #define TXBUF0_             0x0077  /* UART 0 Transmit Buffer */
  292. sfrb    TXBUF0            = TXBUF0_;

  293. #define UCTL_0_             0x0070  /* UART 0 Control */
  294. sfrb    UCTL_0            = UCTL_0_;
  295. #define UTCTL_0_            0x0071  /* UART 0 Transmit Control */
  296. sfrb    UTCTL_0           = UTCTL_0_;
  297. #define URCTL_0_            0x0072  /* UART 0 Receive Control */
  298. sfrb    URCTL_0           = URCTL_0_;
  299. #define UMCTL_0_            0x0073  /* UART 0 Modulation Control */
  300. sfrb    UMCTL_0           = UMCTL_0_;
  301. #define UBR0_0_             0x0074  /* UART 0 Baud Rate 0 */
  302. sfrb    UBR0_0            = UBR0_0_;
  303. #define UBR1_0_             0x0075  /* UART 0 Baud Rate 1 */
  304. sfrb    UBR1_0            = UBR1_0_;
  305. #define RXBUF_0_            0x0076  /* UART 0 Receive Buffer */
  306. const sfrb RXBUF_0        = RXBUF_0_;
  307. #define TXBUF_0_            0x0077  /* UART 0 Transmit Buffer */
  308. sfrb    TXBUF_0           = TXBUF_0_;

  309. /************************************************************
  310. * USART 1         串口1寄存器定义
  311. ************************************************************/

  312. #define U1CTL_              0x0078  /* 串口1基本控制寄存器 */
  313. sfrb    U1CTL             = U1CTL_;
  314. #define U1TCTL_             0x0079  /* 串口1发送控制寄存器 */
  315. sfrb    U1TCTL            = U1TCTL_;
  316. #define U1RCTL_             0x007A  /* 串口1接收控制寄存器 */
  317. sfrb    U1RCTL            = U1RCTL_;
  318. #define U1MCTL_             0x007B  /* 波特率调整控制寄存器 */
  319. sfrb    U1MCTL            = U1MCTL_;
  320. #define U1BR0_              0x007C  /* 波特率选择寄存器0 */
  321. sfrb    U1BR0             = U1BR0_;
  322. #define U1BR1_              0x007D  /* 波特率选择寄存器1 */
  323. sfrb    U1BR1             = U1BR1_;
  324. #define U1RXBUF_            0x007E  /* 接收缓存 */
  325. const sfrb U1RXBUF        = U1RXBUF_;
  326. #define U1TXBUF_            0x007F  /* 发送缓存 */
  327. sfrb    U1TXBUF           = U1TXBUF_;

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

  329. #define UCTL1_              0x0078  /* UART 1 Control */
  330. sfrb    UCTL1             = UCTL1_;
  331. #define UTCTL1_             0x0079  /* UART 1 Transmit Control */
  332. sfrb    UTCTL1            = UTCTL1_;
  333. #define URCTL1_             0x007A  /* UART 1 Receive Control */
  334. sfrb    URCTL1            = URCTL1_;
  335. #define UMCTL1_             0x007B  /* UART 1 Modulation Control */
  336. sfrb    UMCTL1            = UMCTL1_;
  337. #define UBR01_               0x007C  /* UART 1 Baud Rate 0 */
  338. sfrb    UBR01             = UBR01_;
  339. #define UBR11_              0x007D  /* UART 1 Baud Rate 1 */
  340. sfrb    UBR11             = UBR11_;
  341. #define RXBUF1_             0x007E  /* UART 1 Receive Buffer */
  342. const sfrb RXBUF1         = RXBUF1_;
  343. #define TXBUF1_             0x007F  /* UART 1 Transmit Buffer */
  344. sfrb    TXBUF1            = TXBUF1_;

  345. #define UCTL_1_             0x0078  /* UART 1 Control */
  346. sfrb    UCTL_1            = UCTL_1_;
  347. #define UTCTL_1_            0x0079  /* UART 1 Transmit Control */
  348. sfrb    UTCTL_1           = UTCTL_1_;
  349. #define URCTL_1_            0x007A  /* UART 1 Receive Control */
  350. sfrb    URCTL_1           = URCTL_1_;
  351. #define UMCTL_1_            0x007B  /* UART 1 Modulation Control */
  352. sfrb    UMCTL_1           = UMCTL_1_;
  353. #define UBR0_1_             0x007C  /* UART 1 Baud Rate 0 */
  354. sfrb    UBR0_1            = UBR0_1_;
  355. #define UBR1_1_             0x007D  /* UART 1 Baud Rate 1 */
  356. sfrb    UBR1_1            = UBR1_1_;
  357. #define RXBUF_1_            0x007E  /* UART 1 Receive Buffer */
  358. const sfrb RXBUF_1        = RXBUF_1_;
  359. #define TXBUF_1_            0x007F  /* UART 1 Transmit Buffer */
  360. sfrb    TXBUF_1           = TXBUF_1_;

  361. /************************************************************
  362. * Timer A             定时器A寄存器定义
  363. ************************************************************/

  364. #define TAIV_               0x012E  /* Timer A 中断向量寄存器 */
  365. sfrw    TAIV              = TAIV_;
  366. #define TACTL_              0x0160  /* Timer A 控制寄存器 */
  367. sfrw    TACTL             = TACTL_;
  368. #define TACCTL0_            0x0162  /* Timer A 捕获/比较控制寄存器0 */
  369. sfrw    TACCTL0           = TACCTL0_;
  370. #define TACCTL1_            0x0164  /* Timer A 捕获/比较控制寄存器1 */
  371. sfrw    TACCTL1           = TACCTL1_;
  372. #define TACCTL2_            0x0166  /* Timer A 捕获/比较控制寄存器2 */
  373. sfrw    TACCTL2           = TACCTL2_;
  374. #define TAR_                0x0170  /* Timer A 16位计数器内容*/
  375. sfrw    TAR               = TAR_;
  376. #define TACCR0_             0x0172  /* Timer A 捕获/比较寄存器0 */
  377. sfrw    TACCR0            = TACCR0_;
  378. #define TACCR1_             0x0174  /* Timer A 捕获/比较寄存器1 */
  379. sfrw    TACCR1            = TACCR1_;
  380. #define TACCR2_             0x0176  /* Timer A 捕获/比较寄存器2 */
  381. sfrw    TACCR2            = TACCR2_;

  382. /* 改变的寄存器名定义 */
  383. #define CCTL0_              0x0162  /* Timer A Capture/Compare Control 0 */
  384. sfrw    CCTL0             = CCTL0_;
  385. #define CCTL1_              0x0164  /* Timer A Capture/Compare Control 1 */
  386. sfrw    CCTL1             = CCTL1_;
  387. #define CCTL2_              0x0166  /* Timer A Capture/Compare Control 2 */
  388. sfrw    CCTL2             = CCTL2_;
  389. #define CCR0_               0x0172  /* Timer A Capture/Compare 0 */
  390. sfrw    CCR0              = CCR0_;
  391. #define CCR1_               0x0174  /* Timer A Capture/Compare 1 */
  392. sfrw    CCR1              = CCR1_;
  393. #define CCR2_               0x0176  /* Timer A Capture/Compare 2 */
  394. sfrw    CCR2              = CCR2_;

  395. /*TACTL 控制寄存器 16个位寄存器定义*/
  396. #define TASSEL2             0x0400  /* 未用 */
  397. #define TASSEL1             0x0200  /* 时钟输入源控制位1 */
  398. #define TASSEL0             0x0100  /* 时钟输入源控制位0 */
  399. #define ID1                 0x0080  /* 分频系数选择位1 */
  400. #define ID0                 0x0040  /* 分频系数选择位0 */
  401. #define MC1                 0x0020  /* 计数模式控制位1 */
  402. #define MC0                 0x0010  /* 计数模式控制位0 */
  403. #define TACLR               0x0004  /* 置1位清除定时器 */
  404. #define TAIE                0x0002  /* 定时器中断允许 */
  405. #define TAIFG               0x0001  /* 定时器中断标志 */

  406. #define MC_0                00*0x10  /* 停止模式 */
  407. #define MC_1                01*0x10  /* 增计数模式 */
  408. #define MC_2                02*0x10  /* 连续计数模式 */
  409. #define MC_3                03*0x10  /* 增/减计数模式 */
  410. #define ID_0                00*0x40  /* 直通 */
  411. #define ID_1                01*0x40  /* 2分频 */
  412. #define ID_2                02*0x40  /* 4分频 */
  413. #define ID_3                03*0x40  /* 8分频 */
  414. #define TASSEL_0            00*0x100  /* 时钟源为 TACLK */
  415. #define TASSEL_1            01*0x100  /* 时钟源为ACLK  */
  416. #define TASSEL_2            02*0x100  /* 时钟源为SMCLK */
  417. #define TASSEL_3            03*0x100  /* 时钟源为INCLK */

  418. /* Timer A ,Timer B 可公用 捕获/比较控制寄存器X */
  419. #define CM1                 0x8000  /* 捕获模式选择位1 */
  420. #define CM0                 0x4000  /* 捕获模式选择位0 */
  421. #define CCIS1               0x2000  /* 捕获输入信号源选择位1 */
  422. #define CCIS0               0x1000  /* 捕获输入信号源选择位0 */
  423. #define SCS                 0x0800  /* 信号同步位 0:异步捕获;1:同步捕获 */
  424. #define SCCI                0x0400  /* 锁存输入信号 */
  425. #define CAP                 0x0100  /* 模式选择: 0:比较模式;1:捕获模式 */
  426. #define OUTMOD2             0x0080  /* 输出模式选择位2 */
  427. #define OUTMOD1             0x0040  /* 输出模式选择位1 */
  428. #define OUTMOD0             0x0020  /* 输出模式选择位0 */
  429. #define CCIE                0x0010  /* 中断允许位 */
  430. #define CCI                 0x0008  /* 读出输入信号源位ccis0\1 */
  431. #define OUT                 0x0004  /* 输出信号(选择输出模式0) */
  432. #define COV                 0x0002  /* 捕获溢出标志 */
  433. #define CCIFG               0x0001  /* 中断标志 */

  434. #define OUTMOD_0             0*0x20  /* 输出模式 */
  435. #define OUTMOD_1             1*0x20  /* 置位模式 */
  436. #define OUTMOD_2             2*0x20  /* 翻转/复位模式 */
  437. #define OUTMOD_3             3*0x20  /* 置位/复位模式 */
  438. #define OUTMOD_4             4*0x20  /* 翻转模式 */
  439. #define OUTMOD_5             5*0x20  /* 复位模式 */
  440. #define OUTMOD_6             6*0x20  /* 翻转/置位模式 */
  441. #define OUTMOD_7             7*0x20  /* 复位/置位模式*/
  442. #define CCIS_0               0*0x1000  /* 选择CCIXA为捕获事件的输入信号源 */
  443. #define CCIS_1               1*0x1000  /* 选择CCIXB为捕获事件的输入信号源 */
  444. #define CCIS_2               2*0x1000  /* 选择GND为捕获事件的输入信号源 */
  445. #define CCIS_3               3*0x1000  /* 选择VCC为捕获事件的输入信号源 */
  446. #define CM_0                 0*0x4000  /* 禁止捕获模式 */
  447. #define CM_1                 1*0x4000  /* 上升延捕获模式 */
  448. #define CM_2                 2*0x4000  /* 下降沿捕获模式 */
  449. #define CM_3                 3*0x4000  /* 上升沿和下降沿都捕获模式 */

  450. /************************************************************
  451. * Timer B         定时器B寄存器定义
  452. ************************************************************/

  453. #define TBIV_               0x011E  /* 中断向量寄存器:BIT1-BIT3有效 */
  454. sfrw    TBIV              = TBIV_;
  455. #define TBCTL_              0x0180  /* 定时器B控制寄存器:全部控制都集中在这 */
  456. sfrw    TBCTL             = TBCTL_;
  457. #define TBCCTL0_            0x0182  /* 定时器B捕获/比较控制寄存器0*/
  458. sfrw    TBCCTL0           = TBCCTL0_;
  459. #define TBCCTL1_            0x0184  /* 定时器B捕获/比较控制寄存器1 */
  460. sfrw    TBCCTL1           = TBCCTL1_;
  461. #define TBCCTL2_            0x0186  /* 定时器B捕获/比较控制寄存器2 */
  462. sfrw    TBCCTL2           = TBCCTL2_;
  463. #define TBCCTL3_            0x0188  /* 定时器B捕获/比较控制寄存器3 */
  464. sfrw    TBCCTL3           = TBCCTL3_;
  465. #define TBCCTL4_            0x018A  /* 定时器B捕获/比较控制寄存器4 */
  466. sfrw    TBCCTL4           = TBCCTL4_;
  467. #define TBCCTL5_            0x018C  /* 定时器B捕获/比较控制寄存器5 */
  468. sfrw    TBCCTL5           = TBCCTL5_;
  469. #define TBCCTL6_            0x018E  /* 定时器B捕获/比较控制寄存器6 */
  470. sfrw    TBCCTL6           = TBCCTL6_;
  471. #define TBR_                0x0190  /* 计数器 */
  472. sfrw    TBR               = TBR_;
  473. #define TBCCR0_             0x0192  /* 定时器B捕获/比较寄存器0 */
  474. sfrw    TBCCR0            = TBCCR0_;
  475. #define TBCCR1_             0x0194  /* 定时器B捕获/比较寄存器1 */
  476. sfrw    TBCCR1            = TBCCR1_;
  477. #define TBCCR2_             0x0196  /* 定时器B捕获/比较寄存器2 */
  478. sfrw    TBCCR2            = TBCCR2_;
  479. #define TBCCR3_             0x0198  /* 定时器B捕获/比较寄存器3 */
  480. sfrw    TBCCR3            = TBCCR3_;
  481. #define TBCCR4_             0x019A  /* 定时器B捕获/比较寄存器4 */
  482. sfrw    TBCCR4            = TBCCR4_;
  483. #define TBCCR5_             0x019C  /* 定时器B捕获/比较寄存器5 */
  484. sfrw    TBCCR5            = TBCCR5_;
  485. #define TBCCR6_             0x019E  /* 定时器B捕获/比较寄存器6 */
  486. sfrw    TBCCR6            = TBCCR6_;
  487. /* 定时器B控制寄存器:全部控制都集中在这 */
  488. #define SHR1                0x4000  /* 装载比较锁存器控制位1 :受TBCCTLx中的CCLDx位控制 */
  489. #define SHR0                0x2000  /* 装载比较锁存器控制位0 :受TBCCTLx中的CCLDx位控制*/
  490. #define TBCLGRP1            0x4000  /* 装载比较锁存器控制位1 :受TBCCTLx中的CCLDx位控制*/
  491. #define TBCLGRP0            0x2000  /* 装载比较锁存器控制位0 :受TBCCTLx中的CCLDx位控制*/
  492. #define CNTL1               0x1000  /* 定时器位数长度控制位1 */
  493. #define CNTL0               0x0800  /* 定时器位数长度控制位0 */
  494. #define TBSSEL2             0x0400  /* 未用 */
  495. #define TBSSEL1             0x0200  /* 时钟输入源控制位1 */
  496. #define TBSSEL0             0x0100  /* 时钟输入源控制位0 */
  497. #define TBCLR               0x0004  /* 置1清除定时器 */
  498. #define TBIE                0x0002  /* 中断允许 */
  499. #define TBIFG               0x0001  /* 中断标志 */

  500. #define TBSSEL_0             0*0x0100  /* 时钟源为:TBCLK */
  501. #define TBSSEL_1             1*0x0100  /* 时钟源为: ACLK  */
  502. #define TBSSEL_2             2*0x0100  /* 时钟源为:SMCLK */
  503. #define TBSSEL_3             3*0x0100  /* 时钟源为:INCLK */
  504. #define CNTL_0               0*0x0800  /* 16 位计数模式*/
  505. #define CNTL_1               1*0x0800  /* 12 位计数模式*/
  506. #define CNTL_2               2*0x0800  /* 10 位计数模式 */
  507. #define CNTL_3               3*0x0800  /* 8  位计数模式 */
  508. #define SHR_0                0*0x2000  /* 单独装载(初始值) */
  509. #define SHR_1                1*0x2000  /* 分三组装载: 1 - 3 groups (1-2, 3-4, 5-6) */
  510. #define SHR_2                2*0x2000  /* 分二组装载: 2 - 2 groups (1-3, 4-6)*/
  511. #define SHR_3                3*0x2000  /* 不分组装载: 3 - 1 group (all) */
  512. #define TBCLGRP_0            0*0x2000  /* 单独装载(初始值) */
  513. #define TBCLGRP_1            1*0x2000  /* 分三组装载: 1 - 3 groups (1-2, 3-4, 5-6) */
  514. #define TBCLGRP_2            2*0x2000  /* 分二组装载: 2 - 2 groups (1-3, 4-6)*/
  515. #define TBCLGRP_3            3*0x2000  /* 不分组装载: 3 - 1 group (all) */

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

  517. #define SLSHR1              0x0400  /* Compare latch load source 1 */
  518. #define SLSHR0              0x0200  /* Compare latch load source 0 */
  519. #define CLLD1               0x0400  /* 定义比较锁存器TBCLx的装载方式控制位1 */
  520. #define CLLD0               0x0200  /* 定义比较锁存器TBCLx的装载方式控制位0 */

  521. #define SLSHR_0              0*0x0200  /* 立即装载 */
  522. #define SLSHR_1              1*0x0200  /* TBR 计数到0时装载 */
  523. #define SLSHR_2              2*0x0200  /* 在增减模式下,计数到TBCLx或0时装载; 在连续计数模式下,计数到0时装载 */
  524. #define SLSHR_3              3*0x0200  /* 当计数到TBCL0时装载*/

  525. #define CLLD_0               0*0x0200  /* 立即装载  */
  526. #define CLLD_1               1*0x0200  /* TBR 计数到0时装载 */
  527. #define CLLD_2               2*0x0200  /* 在增减模式下,计数到TBCLx或0时装载; 在连续计数模式下,计数到0时装载 */
  528. #define CLLD_3               3*0x0200  /* 当计数到TBCL0时装载 */

  529. /************************************************************
  530. * Basic Clock Module
  531. ************************************************************/

  532. #define DCOCTL_             0x0056  /* DCO 时钟频率控制寄存器 :复位后的值位060h*/
  533. sfrb    DCOCTL            = DCOCTL_;
  534. #define BCSCTL1_            0x0057  /* 系统时钟控制寄存器1 :复位后的值位084h*/
  535. sfrb    BCSCTL1           = BCSCTL1_;
  536. #define BCSCTL2_            0x0058  /* 系统时钟控制寄存器2 :复位后的值位000h*/
  537. sfrb    BCSCTL2           = BCSCTL2_;
  538. /* DCO 时钟频率控制寄存器 */
  539. #define MOD0                0x01   /* DCO插入周期控制位0 */
  540. #define MOD1                0x02   /* DCO插入周期控制位1 */
  541. #define MOD2                0x04   /* DCO插入周期控制位2 */
  542. #define MOD3                0x08   /* DCO插入周期控制位3 */
  543. #define MOD4                0x10   /* DCO插入周期控制位4 */
  544. #define DCO0                0x20   /* 8种频率控制位0 */
  545. #define DCO1                0x40   /* 8种频率控制位1 */
  546. #define DCO2                0x80   /* 8种频率控制位2 */
  547. /* 系统时钟控制寄存器1 :复位后的值位084h*/
  548. #define RSEL0               0x01   /* 选择内部电阻控制位0 */
  549. #define RSEL1               0x02   /* 选择内部电阻控制位1 */
  550. #define RSEL2               0x04   /* 选择内部电阻控制位2 */
  551. #define XT5V                0x08   /* 必须为0*/
  552. #define DIVA0               0x10   /* ACLK分频系数控制位0*/
  553. #define DIVA1               0x20   /* ACLK分频系数控制位1 */
  554. #define XTS                 0x40   /* LFXT1工作模式控制位 0:低频模式. / 1: 高频模式. */
  555. #define XT2OFF              0x80   /* XT2CLK 使能控制位  0:开启; 1:关闭 */

  556. #define DIVA_0              0x00   /* ACLK分频系数为: 1 */
  557. #define DIVA_1              0x10   /* ACLK分频系数为: 2 */
  558. #define DIVA_2              0x20   /* ACLK分频系数为: 4 */
  559. #define DIVA_3              0x30   /* ACLK分频系数为: 8 */
  560. /* 系统时钟控制寄存器2 :复位后的值位000h*/
  561. #define DCOR                0x01   /*  内外电阻选择控制位 */
  562. #define DIVS0               0x02   /* SMCLK分频控制位0*/
  563. #define DIVS1               0x04   /* SMCLK分频控制位1 */
  564. #define SELS                0x08   /* SMCLK 时钟源选择位t 0:DCOCLK / 1:XT2CLK/LFXTCLK */
  565. #define DIVM0               0x10   /* MCLK分频控制位0  */
  566. #define DIVM1               0x20   /* MCLK分频控制位1 */
  567. #define SELM0               0x40   /* MCLK 时钟输入源选择位0 */
  568. #define SELM1               0x80   /* MCLK 时钟输入源选择位1 */

  569. #define DIVS_0              0x00   /* SMCLK 分频系数为: 1 */
  570. #define DIVS_1              0x02   /* SMCLK 分频系数为: 2 */
  571. #define DIVS_2              0x04   /* SMCLK 分频系数为: 4 */
  572. #define DIVS_3              0x06   /* SMCLK 分频系数为: 8 */

  573. #define DIVM_0              0x00   /* MCLK 分频系数为: 1 */
  574. #define DIVM_1              0x10   /* MCLK 分频系数为: 2 */
  575. #define DIVM_2              0x20   /* MCLK 分频系数为: 4 */
  576. #define DIVM_3              0x30   /* MCLK 分频系数为: 8 */

  577. #define SELM_0              0x00   /* MCLK 时钟输入源: DCOCLK */
  578. #define SELM_1              0x40   /* MCLK 时钟输入源: DCOCLK */
  579. #define SELM_2              0x80   /* MCLK 时钟输入源: XT2CLK/LFXTCLK */
  580. #define SELM_3              0xC0   /* MCLK 时钟输入源: LFXTCLK */

  581. /*************************************************************
  582. * Flash Memory      FLASH操作寄存器定义
  583. *************************************************************/

  584. #define FCTL1_              0x0128  /* FLASH控制寄存器1:控制编程、擦除 */
  585. sfrw    FCTL1             = FCTL1_;
  586. #define FCTL2_              0x012A  /* FLASH 控制寄存器2 :控制时钟分频*/
  587. sfrw    FCTL2             = FCTL2_;
  588. #define FCTL3_              0x012C  /* FLASH 控制寄存器3: 状态标志 */
  589. sfrw    FCTL3             = FCTL3_;

  590. #define FRKEY               0x9600  /* 读FLASH 密码 */
  591. #define FWKEY               0xA500  /* 写FLASH 密码 */
  592. #define FXKEY               0x3300  /* for use with XOR instruction */
  593. /* FLASH控制寄存器1:控制编程、擦除 */
  594. #define ERASE               0x0002  /* 擦除段使能 */
  595. #define MERAS               0x0004  /* 主存擦除使能 */
  596. #define WRT                 0x0040  /* 编程使能 */
  597. #define BLKWRT              0x0080  /* 段编程使能 */
  598. /* FLASH 控制寄存器2 :控制时钟分频*/
  599. #define FN_0                 0x0000  /*直通 */
  600. #define FN_1                 0x0001  /*2分频  */
  601. #define FN_2                 0x0002  /*3分频*/
  602. #define FN_3                 0x0003  /*4分频 */
  603. #define FN_4                 0x0004  /*5分频 */
  604. #define FN_5                 0x0005  /*6分频*/
  605. #define FN_6                 0x0006  /*7分频  */
  606. #define FN_7                 0x0007  /*8分频*/
  607. #define FN_8                 0x0008  /*9分频 */
  608. #define FN_9                 0x0009  /*10分频 */
  609. #define FN_10                0x000A  /*11分频*/
  610. #define FN_11                0x000B  /*12分频  */
  611. #define FN_12                0x000C  /*13分频*/
  612. #define FN_13                0x000D  /*14分频 */
  613. #define FN_14                0x000E  /*15分频 */
  614. #define FN_15                0x000F  /*16分频*/
  615. #define FN_16                0x0010  /*17分频  */
  616. #define FN_17                0x0011  /*18分频*/
  617. #define FN_18                0x0012  /*19分频 */
  618. #define FN_19                0x0013  /*20分频 */
  619. #define FN_20                0x0014  /*21分频*/
  620. #define FN_21                0x0015  /*22分频  */
  621. #define FN_22                0x0016  /*23分频*/
  622. #define FN_23                0x0017  /*24分频 */
  623. #define FN_24                0x0018  /*25分频 */
  624. #define FN_25                0x0019  /*26分频*/
  625. #define FN_26                0x001A  /*27分频  */
  626. #define FN_27                0x001B  /*28分频*/
  627. #define FN_28                0x001C  /*29分频 */
  628. #define FN_29                0x001D  /*30分频 */
  629. #define FN_30                0x001E  /*31分频*/
  630. #define FN_31                0x001F  /*32分频  */
  631. #define FN_32                0x0020  /*33分频*/
  632. #define FN_33                0x0021  /*34分频 */
  633. #define FN_34                0x0022  /*35分频 */
  634. #define FN_35                0x0023  /*36分频*/
  635. #define FN_36                0x0024  /*37分频  */
  636. #define FN_37                0x0025  /*38分频*/
  637. #define FN_38                0x0026  /*39分频 */
  638. #define FN_39                0x0027  /*40分频 */
  639. #define FN_40                0x0028  /*41分频*/
  640. #define FN_41                0x0029  /*42分频  */
  641. #define FN_42                0x002A  /*43分频*/
  642. #define FN_43                0x002B  /*44分频 */
  643. #define FN_44                0x002C  /*45分频 */
  644. #define FN_45                0x002D  /*46分频*/
  645. #define FN_46                0x002E  /*47分频  */
  646. #define FN_47                0x002F  /*48分频*/
  647. #define FN_48                0x0030  /*49分频 */
  648. #define FN_49                0x0031  /*50分频 */
  649. #define FN_50                0x0032  /*51分频*/
  650. #define FN_51                0x0033  /*52分频  */
  651. #define FN_52                0x0034  /*53分频*/
  652. #define FN_53                0x0035  /*54分频 */
  653. #define FN_54                0x0036  /*55分频 */
  654. #define FN_55                0x0037  /*56分频*/
  655. #define FN_56                0x0038  /*57分频  */
  656. #define FN_57                0x0039  /*58分频*/
  657. #define FN_58                0x003A  /*59分频 */
  658. #define FN_59                0x003B  /*60分频 */
  659. #define FN_60                0x003C  /*61分频*/
  660. #define FN_61                0x003D  /*62分频  */
  661. #define FN_62                0x003E  /*63分频*/
  662. #define FN_63                0x003F  /*64分频 */
  663. #define FSSEL_0             0x0000  /* Flash时钟选择: ACLK */
  664. #define FSSEL_1             0x0040  /* Flash时钟选择: MCLK */
  665. #define FSSEL_2             0x0080  /* Flash时钟选择: SMCLK */
  666. #define FSSEL_3             0x00C0  /* Flash时钟选择: SMCLK */
  667. /* FLASH 控制寄存器3: 状态标志 */
  668. #define BUSY                0x0001  /* Flash忙标志*/
  669. #define KEYV                0x0002  /* Flash安全键值出错标志 */
  670. #define ACCVIFG             0x0004  /* Flash非法访问中断标志*/
  671. #define WAIT                0x0008  /* 等待指示信号位*/
  672. #define LOCK                0x0010  /* 锁定位 */
  673. #define EMEX                0x0020  /* 紧急退出位 */

  674. /************************************************************
  675. * Comparator A            比较器A寄存器定义
  676. ************************************************************/

  677. #define CACTL1_             0x0059  /* 比较器A控制寄存器1 */
  678. sfrb    CACTL1            = CACTL1_;
  679. #define CACTL2_             0x005A  /* 比较器A控制寄存器2 */
  680. sfrb    CACTL2            = CACTL2_;
  681. #define CAPD_               0x005B  /*比较器A端口禁止寄存器*/
  682. sfrb    CAPD              = CAPD_;
  683. /* 比较器A控制寄存器1 */
  684. #define CAIFG               0x01    /*比较器A中断标志*/
  685. #define CAIE                0x02    /* 比较器A中断使能 */
  686. #define CAIES               0x04    /* 比较器A中断边沿触发选择 0:上升延 1:下降延 */
  687. #define CAON                0x08    /* 比较器电源开关*/
  688. #define CAREF0              0x10    /* 选择参考源位0 */
  689. #define CAREF1              0x20    /* 选择参考源位1 */
  690. #define CARSEL              0x40    /* 选择内部参考源加到比较器的正端或负端 */
  691. #define CAEX                0x80    /* 交换比较器的输入端 */

  692. #define CAREF_0             0x00    /* 选择参考源0 : Off 使用外部参考源*/
  693. #define CAREF_1             0x10    /* 选择参考源1 : 0.25*Vcc为参考源 */
  694. #define CAREF_2             0x20    /* 选择参考源2 : 0.5*Vcc为参考源 */
  695. #define CAREF_3             0x30    /* 选择参考源3 : Vt*/
  696. /* 比较器A控制寄存器2 */
  697. #define CAOUT               0x01    /* 比较器输出 */
  698. #define CAF                 0x02    /* 选择比较器是否经过RC低通滤波器 */
  699. #define P2CA0               0x04    /* 外部引脚信号连接到比较器A的CA0 */
  700. #define P2CA1               0x08    /* 外部引脚信号连接到比较器A的CA1 */
  701. #define CACTL24             0x10
  702. #define CACTL25             0x20
  703. #define CACTL26             0x40
  704. #define CACTL27             0x80

  705. #define CAPD0               0x01    /* Comp. A Disable Input Buffer of Port Register .0 */
  706. #define CAPD1               0x02    /* Comp. A Disable Input Buffer of Port Register .1 */
  707. #define CAPD2               0x04    /* Comp. A Disable Input Buffer of Port Register .2 */
  708. #define CAPD3               0x08    /* Comp. A Disable Input Buffer of Port Register .3 */
  709. #define CAPD4               0x10    /* Comp. A Disable Input Buffer of Port Register .4 */
  710. #define CAPD5               0x20    /* Comp. A Disable Input Buffer of Port Register .5 */
  711. #define CAPD6               0x40    /* Comp. A Disable Input Buffer of Port Register .6 */
  712. #define CAPD7               0x80    /* Comp. A Disable Input Buffer of Port Register .7 */

  713. /************************************************************
  714. * ADC12   A/D采样寄存器定义
  715. ************************************************************/
  716. /*ADC12转换控制类寄存器*/
  717. #define ADC12CTL0_          0x0;' /* ADC12 Control 0 */
  718. sfrw    ADC12CTL0         = ADC12CTL0_;
  719. #define ADC12CTL1_          0x01A2  /* ADC12 Control 1 */
  720. sfrw    ADC12CTL1         = ADC12CTL1_;

  721. /*ADC12中断控制类寄存器*/
  722. #define ADC12IFG_           0x01A4  /* ADC12 Interrupt Flag */
  723. sfrw    ADC12IFG          = ADC12IFG_;
  724. #define ADC12IE_            0x01A6  /* ADC12 Interrupt Enable */
  725. sfrw    ADC12IE           = ADC12IE_;
  726. #define ADC12IV_            0x01A8  /* ADC12 Interrupt Vector Word */
  727. sfrw    ADC12IV           = ADC12IV_;

  728. /*ADC12存贮器类寄存器*/
  729. #define ADC12MEM_           0x0140  /* ADC12 Conversion Memory */
  730. #ifndef __IAR_SYSTEMS_ICC
  731. #define ADC12MEM            ADC12MEM_ /* ADC12 Conversion Memory (for assembler) */
  732. #else
  733. #define ADC12MEM            ((int*) ADC12MEM_) /* ADC12 Conversion Memory (for C) */
  734. #endif
  735. #define ADC12MEM0_          ADC12MEM_ /* ADC12 Conversion Memory 0 */
  736. sfrw    ADC12MEM0         = ADC12MEM0_;
  737. #define ADC12MEM1_          0x0142  /* ADC12 Conversion Memory 1 */
  738. sfrw    ADC12MEM1         = ADC12MEM1_;
  739. #define ADC12MEM2_          0x0144  /* ADC12 Conversion Memory 2 */
  740. sfrw    ADC12MEM2         = ADC12MEM2_;
  741. #define ADC12MEM3_          0x0146  /* ADC12 Conversion Memory 3 */
  742. sfrw    ADC12MEM3         = ADC12MEM3_;
  743. #define ADC12MEM4_          0x0148  /* ADC12 Conversion Memory 4 */
  744. sfrw    ADC12MEM4         = ADC12MEM4_;
  745. #define ADC12MEM5_          0x014A  /* ADC12 Conversion Memory 5 */
  746. sfrw    ADC12MEM5         = ADC12MEM5_;
  747. #define ADC12MEM6_          0x014C  /* ADC12 Conversion Memory 6 */
  748. sfrw    ADC12MEM6         = ADC12MEM6_;
  749. #define ADC12MEM7_          0x014E  /* ADC12 Conversion Memory 7 */
  750. sfrw    ADC12MEM7         = ADC12MEM7_;
  751. #define ADC12MEM8_          0x0150  /* ADC12 Conversion Memory 8 */
  752. sfrw    ADC12MEM8         = ADC12MEM8_;
  753. #define ADC12MEM9_          0x0152  /* ADC12 Conversion Memory 9 */
  754. sfrw    ADC12MEM9         = ADC12MEM9_;
  755. #define ADC12MEM10_         0x0154  /* ADC12 Conversion Memory 10 */
  756. sfrw    ADC12MEM10        = ADC12MEM10_;
  757. #define ADC12MEM11_         0x0156  /* ADC12 Conversion Memory 11 */
  758. sfrw    ADC12MEM11        = ADC12MEM11_;
  759. #define ADC12MEM12_         0x0158  /* ADC12 Conversion Memory 12 */
  760. sfrw    ADC12MEM12        = ADC12MEM12_;
  761. #define ADC12MEM13_         0x015A  /* ADC12 Conversion Memory 13 */
  762. sfrw    ADC12MEM13        = ADC12MEM13_;
  763. #define ADC12MEM14_         0x015C  /* ADC12 Conversion Memory 14 */
  764. sfrw    ADC12MEM14        = ADC12MEM14_;
  765. #define ADC12MEM15_         0x015E  /* ADC12 Conversion Memory 15 */
  766. sfrw    ADC12MEM15        = ADC12MEM15_;

  767. /*ADC12存贮控制类寄存器*/
  768. #define ADC12MCTL_          0x0080  /* ADC12 Memory Control */
  769. #ifndef __IAR_SYSTEMS_ICC
  770. #define ADC12MCTL           ADC12MCTL_ /* ADC12 Memory Control (for assembler) */
  771. #else
  772. #define ADC12MCTL           ((char*) ADC12MCTL_) /* ADC12 Memory Control (for C) */
  773. #endif
  774. #define ADC12MCTL0_         ADC12MCTL_ /* ADC12 Memory Control 0 */
  775. sfrb    ADC12MCTL0        = ADC12MCTL0_;
  776. #define ADC12MCTL1_         0x0081  /* ADC12 Memory Control 1 */
  777. sfrb    ADC12MCTL1        = ADC12MCTL1_;
  778. #define ADC12MCTL2_         0x0082  /* ADC12 Memory Control 2 */
  779. sfrb    ADC12MCTL2        = ADC12MCTL2_;
  780. #define ADC12MCTL3_         0x0083  /* ADC12 Memory Control 3 */
  781. sfrb    ADC12MCTL3        = ADC12MCTL3_;
  782. #define ADC12MCTL4_         0x0084  /* ADC12 Memory Control 4 */
  783. sfrb    ADC12MCTL4        = ADC12MCTL4_;
  784. #define ADC12MCTL5_         0x0085  /* ADC12 Memory Control 5 */
  785. sfrb    ADC12MCTL5        = ADC12MCTL5_;
  786. #define ADC12MCTL6_         0x0086  /* ADC12 Memory Control 6 */
  787. sfrb    ADC12MCTL6        = ADC12MCTL6_;
  788. #define ADC12MCTL7_         0x0087  /* ADC12 Memory Control 7 */
  789. sfrb    ADC12MCTL7        = ADC12MCTL7_;
  790. #define ADC12MCTL8_         0x0088  /* ADC12 Memory Control 8 */
  791. sfrb    ADC12MCTL8        = ADC12MCTL8_;
  792. #define ADC12MCTL9_         0x0089  /* ADC12 Memory Control 9 */
  793. sfrb    ADC12MCTL9        = ADC12MCTL9_;
  794. #define ADC12MCTL10_        0x008A  /* ADC12 Memory Control 10 */
  795. sfrb    ADC12MCTL10       = ADC12MCTL10_;
  796. #define ADC12MCTL11_        0x008B  /* ADC12 Memory Control 11 */
  797. sfrb    ADC12MCTL11       = ADC12MCTL11_;
  798. #define ADC12MCTL12_        0x008C  /* ADC12 Memory Control 12 */
  799. sfrb    ADC12MCTL12       = ADC12MCTL12_;
  800. #define ADC12MCTL13_        0x008D  /* ADC12 Memory Control 13 */
  801. sfrb    ADC12MCTL13       = ADC12MCTL13_;
  802. #define ADC12MCTL14_        0x008E  /* ADC12 Memory Control 14 */
  803. sfrb    ADC12MCTL14       = ADC12MCTL14_;
  804. #define ADC12MCTL15_        0x008F  /* ADC12 Memory Control 15 */
  805. sfrb    ADC12MCTL15       = ADC12MCTL15_;

  806. /* ADC12CTL0 内16位控制寄存器位*/
  807. #define ADC12SC             0x001         /*采样/转换控制位*/   
  808. #define ENC                 0x002         /* 转换允许位*/
  809. #define ADC12TOVIE          0x004         /*转换时间溢出中断允许位*/
  810. #define ADC12OVIE           0x008         /*溢出中断允许位*/
  811. #define ADC12ON             0x010         /*ADC12内核控制位*/
  812. #define REFON               0x020         /*参考电压控制位*/
  813. #define REF2_5V             0x040         /*内部参考电压的电压值选择位 '0'为1.5V; '1'为2.5V*/
  814. #define MSH                 0x080         /*多次采样/转换位*/
  815. #define MSC                 0x080         /*多次采样/转换位*/
  816. /*SHT0 采样保持定时器0 控制ADC12的结果存贮器MEM0~MEM7的采样周期*/
  817. #define SHT0_0               0*0x100       /*采样周期=TADC12CLK*4 */
  818. #define SHT0_1               1*0x100       /*采样周期=TADC12CLK*8 */
  819. #define SHT0_2               2*0x100       /*采样周期=TADC12CLK*16 */
  820. #define SHT0_3               3*0x100       /*采样周期=TADC12CLK*32 */
  821. #define SHT0_4               4*0x100       /*采样周期=TADC12CLK*64 */
  822. #define SHT0_5               5*0x100       /*采样周期=TADC12CLK*96 */
  823. #define SHT0_6               6*0x100       /*采样周期=TADC12CLK*128 */
  824. #define SHT0_7               7*0x100       /*采样周期=TADC12CLK*192 */
  825. #define SHT0_8               8*0x100       /*采样周期=TADC12CLK*256 */
  826. #define SHT0_9               9*0x100       /*采样周期=TADC12CLK*384 */
  827. #define SHT0_10             10*0x100       /*采样周期=TADC12CLK*512 */  
  828. #define SHT0_11             11*0x100       /*采样周期=TADC12CLK*768 */
  829. #define SHT0_12             12*0x100       /*采样周期=TADC12CLK*1024 */
  830. #define SHT0_13             13*0x100       /*采样周期=TADC12CLK*1024 */
  831. #define SHT0_14             14*0x100       /*采样周期=TADC12CLK*1024 */
  832. #define SHT0_15             15*0x100       /*采样周期=TADC12CLK*1024 */
  833. /*SHT1 采样保持定时器1 控制ADC12的结果存贮器MEM8~MEM15的采样周期*/
  834. #define SHT1_0               0*0x100       /*采样周期=TADC12CLK*4 */
  835. #define SHT1_1               1*0x100       /*采样周期=TADC12CLK*8 */
  836. #define SHT1_2               2*0x100       /*采样周期=TADC12CLK*16 */
  837. #define SHT1_3               3*0x100       /*采样周期=TADC12CLK*32 */
  838. #define SHT1_4               4*0x100       /*采样周期=TADC12CLK*64 */
  839. #define SHT1_5               5*0x100       /*采样周期=TADC12CLK*96 */
  840. #define SHT1_6               6*0x100       /*采样周期=TADC12CLK*128 */
  841. #define SHT1_7               7*0x100       /*采样周期=TADC12CLK*192 */
  842. #define SHT1_8               8*0x100       /*采样周期=TADC12CLK*256 */
  843. #define SHT1_9               9*0x100       /*采样周期=TADC12CLK*384 */
  844. #define SHT1_10             10*0x100       /*采样周期=TADC12CLK*512 */  
  845. #define SHT1_11             11*0x100       /*采样周期=TADC12CLK*768 */
  846. #define SHT1_12             12*0x100       /*采样周期=TADC12CLK*1024 */
  847. #define SHT1_13             13*0x100       /*采样周期=TADC12CLK*1024 */
  848. #define SHT1_14             14*0x100       /*采样周期=TADC12CLK*1024 */
  849. #define SHT1_15             15*0x100       /*采样周期=TADC12CLK*1024 */


  850. /* ADC12CTL1 内16位控制寄存器位*/
  851. #define ADC12BUSY           0x0001         /*ADC12忙标志位*/
  852. #define CONSEQ_0             0*2           /*单通道单次转换*/
  853. #define CONSEQ_1             1*2           /*序列通道单次转换*/
  854. #define CONSEQ_2             2*2           /*单通道多次转换*/
  855. #define CONSEQ_3             3*2           /*序列通道多次转换*/
  856. #define ADC12SSEL_0          0*8           /*ADC12内部时钟源*/
  857. #define ADC12SSEL_1          1*8           /*ACLK*/
  858. #define ADC12SSEL_2          2*8           /*MCLK*/
  859. #define ADC12SSEL_3          3*8           /*SCLK*/
  860. #define ADC12DIV_0           0*0x20        /*1分频*/
  861. #define ADC12DIV_1           1*0x20        /*2分频*/
  862. #define ADC12DIV_2           2*0x20        /*3分频*/
  863. #define ADC12DIV_3           3*0x20        /*4分频*/
  864. #define ADC12DIV_4           4*0x20        /*5分频*/
  865. #define ADC12DIV_5           5*0x20        /*6分频*/
  866. #define ADC12DIV_6           6*0x20        /*7分频*/
  867. #define ADC12DIV_7           7*0x20        /*8分频*/
  868. #define ISSH                 0x0100        /*采样输入信号反向与否控制位*/
  869. #define SHP                  0x0200        /*采样信号(SAMPCON)选择控制位*/
  870. #define SHS_0                0*0x400       /*采样信号输入源选择控制位 ADC12SC*/
  871. #define SHS_1                1*0x400       /*采样信号输入源选择控制位 TIMER_A.OUT1*/
  872. #define SHS_2                2*0x400       /*采样信号输入源选择控制位 TIMER_B.OUT0*/
  873. #define SHS_3                3*0x400       /*采样信号输入源选择控制位 TIMER_B.OUT1*/
  874. /*转换存贮器地址定义位*/
  875. #define CSTARTADD_0          0*0x1000      /*选择MEM0首地址*/
  876. #define CSTARTADD_1          1*0x1000      /*选择MEM1首地址*/
  877. #define CSTARTADD_2          2*0x1000      /*选择MEM2首地址*/
  878. #define CSTARTADD_3          3*0x1000      /*选择MEM3首地址*/
  879. #define CSTARTADD_4          4*0x1000      /*选择MEM4首地址*/
  880. #define CSTARTADD_5          5*0x1000      /*选择MEM5首地址*/
  881. #define CSTARTADD_6          6*0x1000      /*选择MEM6首地址*/
  882. #define CSTARTADD_7          7*0x1000      /*选择MEM7首地址*/
  883. #define CSTARTADD_8          8*0x1000      /*选择MEM8首地址*/
  884. #define CSTARTADD_9          9*0x1000      /*选择MEM9首地址*/
  885. #define CSTARTADD_10        10*0x1000      /*选择MEM10首地址*/
  886. #define CSTARTADD_11        11*0x1000      /*选择MEM11首地址*/
  887. #define CSTARTADD_12        12*0x1000      /*选择MEM12首地址*/
  888. #define CSTARTADD_13        13*0x1000      /*选择MEM13首地址*/      
  889. #define CSTARTADD_14        14*0x1000      /*选择MEM14首地址*/   
  890. #define CSTARTADD_15        15*0x1000      /*选择MEM15首地址*/
  891.   
  892. /* ADC12MCTLx */
  893. #define INCH_0               0                 /*选择模拟量通道0 A0 */
  894. #define INCH_1               1                 /*选择模拟量通道0 A1*/
  895. #define INCH_2               2                 /*选择模拟量通道0 A2*/
  896. #define INCH_3               3                 /*选择模拟量通道0 A3*/
  897. #define INCH_4               4                 /*选择模拟量通道0 A4*/
  898. #define INCH_5               5                 /*选择模拟量通道0 A5*/
  899. #define INCH_6               6                 /*选择模拟量通道0 A6*/
  900. #define INCH_7               7                 /*选择模拟量通道0 A7*/
  901. #define INCH_8               8                 /*VEREF+*/
  902. #define INCH_9               9                 /*VEREF-*/
  903. #define INCH_10             10                 /*片内温度传感器的输出*/
  904. #define INCH_11             11                 /*(AVCC-AVSS)/2*/
  905. #define INCH_12             12                 /*(AVCC-AVSS)/2*/
  906. #define INCH_13             13                 /*(AVCC-AVSS)/2*/
  907. #define INCH_14             14                 /*(AVCC-AVSS)/2*/
  908. #define INCH_15             15                 /*(AVCC-AVSS)/2*/
  909. /*参考电压源选择位*/
  910. #define SREF_0               0*0x10            /*VR+ = AVCC; VR- = AVSS*/
  911. #define SREF_1               1*0x10            /*VR+ = VREF+; VR- = AVSS*/
  912. #define SREF_2               2*0x10            /*VR+ = VEREF+; VR- = AVSS*/
  913. #define SREF_3               3*0x10            /*VR+ = VEREF+; VR- = AVSS*/
  914. #define SREF_4               4*0x10            /*VR+ = AVCC; VR- = VREF-*/
  915. #define SREF_5               5*0x10            /*VR+ = VREF+; VR- = VREF-*/
  916. #define SREF_6               6*0x10            /*VR+ = VEREF+; VR- = VREF-*/
  917. #define SREF_7               7*0x10            /*VR+ = VEREF+; VR- = VREF-*/
  918. #define EOS                 0x80               /*序列结束选择位*/

  919. /************************************************************
  920. * Interrupt Vectors (offset from 0xFFE0) 16个中断矢量定义
  921. ************************************************************/

  922. //#define BASICTIMER_VECTOR   0 * 2  /* 0xFFE0 Basic Timer MSP430F149 没有*/
  923. #define PORT2_VECTOR        1 * 2  /* 0xFFE2 Port 2 */
  924. #define UART1TX_VECTOR      2 * 2  /* 0xFFE4 UART 1 Transmit */
  925. #define UART1RX_VECTOR      3 * 2  /* 0xFFE6 UART 1 Receive */
  926. #define PORT1_VECTOR        4 * 2  /* 0xFFE8 Port 1 */
  927. #define TIMERA1_VECTOR      5 * 2  /* 0xFFEA Timer A CC1-2, TA */
  928. #define TIMERA0_VECTOR      6 * 2  /* 0xFFEC Timer A CC0 */
  929. #define ADC_VECTOR          7 * 2  /* 0xFFEE ADC */
  930. #define UART0TX_VECTOR      8 * 2  /* 0xFFF0 UART 0 Transmit */
  931. #define UART0RX_VECTOR      9 * 2  /* 0xFFF2 UART 0 Receive */
  932. #define WDT_VECTOR          10 * 2 /* 0xFFF4 Watchdog Timer */
  933. #define COMPARATORA_VECTOR  11 * 2 /* 0xFFF6 Comparator A */
  934. #define TIMERB1_VECTOR      12 * 2 /* 0xFFF8 Timer B 1-6 */
  935. #define TIMERB0_VECTOR      13 * 2 /* 0xFFFA Timer B 0 */
  936. #define NMI_VECTOR          14 * 2 /* 0xFFFC Non-maskable */
  937. #define RESET_VECTOR        15 * 2 /* 0xFFFE Reset [Highest Priority] */

  938. /************************************************************
  939. * End of Modules
  940. ************************************************************/

  941. #endif /* #ifndef __msp430x44x */

复制代码


430f149头文件详解.zip

10.47 KB, 下载次数: 19, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩1
回复

使用道具 举报

沙发
ID:82376 发表于 2016-6-26 16:08 | 只看该作者
新手正需要学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表