MSP430几种常用内置函数解释

合集下载

msp430定时器a中文超级详解 (1)

msp430定时器a中文超级详解 (1)

文章转载自网络-----------------感谢原作者的辛勤奉献MSP430的定时器中有比较捕获比较模式:这是定时器的默认模式,当在比较模式下的时候,与捕获模式相关的硬件停止工作,如果这个时候开启定时器中断,然后设置定时器终值(将终值写入TACCRx),开启定时器,当TAR的值增到TACCRx的时候,中断标志位CCIFGx 置一,同时产生中断。

若中断允许未开启则只将中断标志位CCIFGx置一。

例子:比较模式就像51单片机一样,要能够软件设置定时间隔来产生中断处理一些事情,如键盘扫描,也可以结合信号输出产生时序脉冲发生器,PWM信号发生器。

如:不断装载TACCRx,启动定时器,TAR和TACCRx比较产生中断处理。

捕获模式:利用外部信号的上升沿、下降沿或上升下降沿触发来测量外部或内部事件,也可以由软件停止。

捕获源可以由CCISx选择CCIxA,CCIxB,GND,VCC。

完成捕获后相应的捕获标志位CCIFGx置一捕获模式的应用:利用捕获源的来触发捕获TAR的值,并将每次捕获的值都保存到TACCRx 中,可以随时读取TACCRx的值,TACCRx是个16位的寄存器,捕获模式用于事件的精确定位。

如测量时间、频率、速度等例子:利用两次捕获的值来测量脉冲的宽度。

或捕获选择任意沿,CCISx=”11“(输入选择VCC),这样即当VCC与GND发生切换时产生捕获条件结合利用:异步通讯同时应用比较模式和捕获模式来实现UART异步通信。

即利用定时器的比较模式来模拟通讯时序的波特率来发送数据,同时采用捕获模式来接收数据,并及时转换比较模式来选定调整通信的接受波特率,达到几首一个字节的目的----------------------------------------利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。

本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,同时结合简单的软件算法就能实现脉冲宽度的测量。

msp430x14xh中各函数中文翻译.docx

msp430x14xh中各函数中文翻译.docx

#define B1T0 0x0001#define BIT1 0x0002#define BIT2 0x0004ttdefine BTT3 0x0008#dcfine BIT4 0x0010#define B1T5 0x0020#define BIT6 0x0040#define BIT7 0x0080ttdefine BTT8 0x0100#dcfine BIT9 0x0200#define BITA 0x0400#define BITB 0x0800#define BITC 0x1000ttdefine BTTD 0x2000#dcfine BITE 0x4000^define BITE 0x8000// xT> zCx * STATUS REGISTER BITS/ ■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 /^define Cttdefine Z^define N#define V ttdefine GTE #dcfinc CPUOFF#define OSCOFF #define SCGO ttdefine SCG10x00010x00020x00040x0100 0x00080x00100x00200x00400x0080/* Low Power Modes coded with Bits 4-7 in SR */ttifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */ #definc LPMO CPUOFF^define LPM1 SCGO+CPUOFF#define LPM2 SCG1+CPUOFFttdefine LPM3ttdefine LPM4/* End #defines for assembler */ SCG1+SCG0+CPU0FFSCG1+SCGO+OSCOFF+CPUOFFSeise /* Begin #defines for C */#define LPM0_bits ttdefine LPMl bits #dcfinc LPM2 bits CPUOFF SCGO+CPUOFF SCG1+CPU0FFSCG1+SCG0+CPU0FF SCG1+SCGO+OSCOFF+CPUOFFWinclude <In430. h>ttdefine LPMO _BTS_SR(LPM0_bits) /* Enter Low Power Mode 0 */ #dcfinc LPMO_EXIT _BIC_SR(LPMO_bits) /* Exit Low Power Mode 0 */ #define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */ ^define LPM1_EXIT _BIC_SR(LPMl_bitsI /* Exit Low Power Mode 1 */#define LPM2 BIS SR(LPM2_bits) /* Enter Low Power Mode 2 */ ^define LPM2_EXTT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */ #dcfinc 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 */ ttendif /* End ttdefines for C */ / vxf* PERIPHERAL FILE MAP/ f*特殊功能寄存器地址和控制位 /*中断使能1*/^define 1E1_ 0x0000sfrb IE1 二 IE1_;^define WDTTE 0x01/*看门狗中断使能*/Wdefinc OFIE0x02/*外部晶振故障 中断使能*/^define NMIIE 0x10 /*非屏蔽中断使能*/ ttdefine ACCVTE0x20/*可屏蔽中断使能/flash 写屮断错误*/#define URXIEO0x40/*串口 0接收中断使 能*/#define UTXIEO0x80/*串口 0发送中断使能*//*屮断标志1*/#define IFG1 0x0002sfrb 1FG1 =1FG1_;^define WDTIFG0x01/*看门狗中断标志*/^define OFIFG0x02/*外部晶振故障屮断标志*/#define LPM3_bits ^define LPM4 bits^define NM11FG*/ttdefine URXIFGO*/#dcfinc UTXIFGO*//*中断模式使能1 */ #define ME1_ sfrb MEI #dcfinc URXEO 接收中断模式使能*/^define USPIEO 断模式使能*/^define UTXEO发送屮断模式使能*/ /*中断使能2 */^define IE2_ sfrb IE2 ^define URXTE1 屮断使能*/^define UTX1E1中断使能*/ /*中断标志2 */^define TFG2_ sfrbIFG2^define URX1FG1 中断标志*/ #defineUTXIFGl 中断标志*/ /*中断模式使能2 */^define ME2_ sfrb ME2 ttdefine URXE1 接收中断模式使能*/#dcfinc USPIE1 断模式使能*/^define UTXE1 发送中断模式使能*/0x10 /*非屏蔽中断标志0x40 /*串口0接收中断标志0x80 /*串口0发送屮断标志0x0004二ME1_;0x400x400x80/* 串口0/*同步中/* 串口00x0001二IE2_;0x100x200x0003=IFG20x100x200x0005=ME2_;0x100x100x20/*串口1接收/*串口1发送/*串口1接收/*串口1发送/* 串口 1/ *同步屮/* 串口 1//* 看门狗定时器的寄存器定义/ 吓、/^define WDTCTL_ sfrwWDTCTL#define WDTISO选择WDTCNT 的四个输岀端之一*/#dcfine WDTIS1选择WDTCNT 的四个输出端之一*/^define WDTSSEL WDTCNT 的时钟源*/ ^define WDTCNTCL除WDTCNT 端:为1时从0开始计数*/ ^define WDTTMSEL #define WDTNMI 选择NMT/RST 引脚功能0:为RST; 1:为NMI*/ #defineWDTNM1ES 0x0040选择触发延0:为上升延1:为下降延*/#define WDTHOLD0x0080看门狗定时器工作0:启动;1:停止*/^define WDTPW 写密码:高八位*/SMCLK 二1MHz 定时器模式*/ ttdefine WDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL/* TSMCLK*2P0WER15=32ms 复位状态 */ #define WDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTISO /* TSMCLK*2P0WER13二8. 192ms 〃 */#dcfineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDT1S1 /* TSMCLK*2P0WER9二0. 512ms ” */#defineWDT MDLY 0 064WDTPW+WDTTMSEL+WDTCNTCL+WDTTS1+WDTTSO/* TSMCLK*2P0WER6=0. 512ms 〃 *//* ACLK=32. 768KHz 定时器模式*/ #defineWDT_ADLY_1000WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2P0WER15=1000ms 〃 */#dcfineWDT_ADLY_250WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDT1S0/* TACLK*2P0WER13=250ms " */择模式0:看门狗模式;1:定时器模式*/0x0120 =WDTCTL_; 0x0001 0x0002 0x0004 0x0008 0x00100x0020/* /*选择 /*清 /*选 /*/*WDTNMI=1 时./*停止/*0x5A00WDT_ADLY_16/ WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2P0WER9二16ms 〃 */#defineWDT ADLY 1 9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDT ISO /* TACLK*2POWER6=1. 9ms ” */ /* SMCLK=lMHz看门狗模式*/#defineWDT_MRST_32 WDTPW+WDTCNTCL/* TSMCLK*2P0WER15二32ms 复位状态*/#defineWDT_MRST_8 WDTPW+WDTCNTCL+WDTISO/* TSMCLK*2P0WER13二8・ 192ms 〃 */#dcfineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDT1S1/* TSMCLK^2P0WER9=0. 512ms ” */#defineWDT_MRST_0_064 WDTPW+WDTCNTCL+WDTTS1+WDTTSO/* TSMCLK*2P0WER6=0. 512ms 〃 *//* ACLK=32KHz看门狗模式*/0x0130 /*无符号乘法*/ =MPY_;0x0132 /*有符号乘法*/=MPYS_;0x0134 /*无符号乘加*/ =MAC ;WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL/* TACLK*2P0WER15=1000ms 〃 */#dcfine WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDT1S0 /* TACLK*2P0WER13=250ms ” */ #define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2P0WER9二16ms〃 */#defineWDT_ARST_1_9WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0/* TACLK*2POWER6=1. 9ms 〃 *//{硬件乘法器的寄存器定义\L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz \L^ ^lz ^lz \L^ ^lz ^lz \L^ ^lz ^lz /吓、Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|%/^define MPY_ s f i*w MPY ^define MPYS_ s f rw MPYS #define MAC_ sfrw MAC^define MACS_ sfrw MACS #define 0P2_ s frw 0P2 #dcfinc RESLO_ sfrw RESLO ^define RESHI_ sfrw RESHI ttdefine SUMEXT_ const sfrw SUMEXT 0x0136 /*有符号乘加*/ =MACS_;0x0138 /* 第二乘数 */ 二 0P2_;0x013A /*低6位结果寄存器*/ =RESLO_;0x013C/*高6位结果寄存器*/ 二 RESHI_;0x013E /*结果扩展寄存器*/=SUMEXT ;/ s£z / * DIGITAL 1/0 Port 1/2寄存器定义 有中断功能 // ^define P1TN_ const sfrb P1IN ^define P10UT_ sfrb PlOUT ttdefine P1DIR_ */ sfrb P1DIR ^define P11FG_ sfrb P1IFG #define P1IES_ 器*/sfrbP1IES^define P11E_ sfrb P1IE #define P1SEL_ sfrb P1SEL#dcfinc P2IN_ const sfrb P21N ^define P2OUT_ sfrb P20UT ^define P2DTR */ sfrb P2D1R ^define P2IFG_ */ sfrb P2TFG #dcfinc P2IES_ 器*/sfrbP2IES0x0020 /* Pl 输入寄存器*/ =P1IN_; 0x0021 /* Pl 输出寄存器*/=P1OUT_; 0x0022 /* Pl 方向选择寄存器 =P1DIR_;0x0023 /* Pl 中断标志寄存器*/ =P1IFG_;0x0024 /* Pl 中断边沿选择寄存 =P1IES_;0x0025 /* Pl 中断使能寄存器*/ =P1IE_;0x0026 /* Pl 功能选择寄存器*/ =P1SEL_;0x0028 /* P2输入寄存器*/=P21N_;0x0029 /* P2输岀寄存器*/ 二 P20UT_;0x002A /* P2方向选择寄存器=P2D1R_;0x002B /* P2中断标志寄存器二 P2TFG_;0x002C/*P2屮断边沿选择寄存 =P2IES ;0x002D /* P2中断使能寄存器*/ =P2IE_;0x002E A P2功能选择寄存器 =P2SEL ;/^Jx s£z/* DIGITAL 1/0 Port3/4寄存器定义无中断功能K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L*//0x0018 /* P3输入寄存器*/=P3IN_;0x0019 /* P3输出寄存器*/ =P30UT_;OxOOlA /* P3方向选择寄存器 =P3DIR_; OxOOlB /* P3功能选择寄存器*/ =P3SEL_;J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" J" ^rx^rx ^rx ^rx ^rx ^rx ^rx ^rx ^rx ^rx ^rx^rx ^rx ^rx^rx^rx ^rx ^rx ^rx ^rx ^rx ^rx ^Tx ^Tx ^Tx ^rx ^rx ^rx ^rx ^rx^Txs£z s£z s£z s£z s£z s£zs£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£z s£zs£z s£z s£z s£z s£zs£z s£z s£z s£z s£z s£z s£z s£z s£z s£zs£z s£z s£z s£z s£z sJz /<1^ <1^<1^ <1^<1^ <1^ <1^ <1^ <1^ <1^ <T^ <1^ <1^ <1^ <Y^ <1^ <T^ <T^ <1^✓lx✓ix/0x0030 /* P5输入寄存器*/ =P5IN_; 0x0031 /* P5输出寄存器*/ 二 P50UT_; 0x0032 /* P5方向选择寄存器*/ =P5D1R_; 0x0033 /* P5功能选择寄存器*/^define P21E_ sfrb P2IE #define P2SEL_ */ sfrbP2SEL^define P3TN_const sfrb P3IN^define P30UT_sfrb P30UTttdefine P3DIR_ */sfrb P3DIR^define P3SEL_sfrb P3SEL#define P4IN_ const sfrb P4TN #dcfinc P40UT_ sfrb P40UT ^define P4DIR_ */ sfrb P4DTR #dcfinc P4SEL_ */ sfrbP4SELOxOOlC /* P4输入寄存器*/二 P4TN_;OxOOlD /* P4输岀寄存器*/ =P40UT_;OxOOlE /* P4方向选择寄存器二 P4DTR_;OxOOlF /* P4功能选择寄存器 =P4SEL_;* DIGITAL T/0 Port5/6T/0 口寄存器定义P0RT5和6无中断功能^define P51N_const sfrb P5IN #define P50UT_ sfrb P50UT #dcfinc P5DIR_ sfrb P5D1R ^define P5SEL_sfrb P5SEL二P5SEL_;0x0034 /* P6输入寄存器*/ =P6IN_; 0x0035 /* P6输出寄存器*/ 二 P60UT_; 0x0036 /* P6方向选择寄存器*/ =P6D1R_;0x0037 /* P6功能选择寄存器*/二 P6SEL_; #define BTTO 0x0001#define BIT1 0x0002 #definc BIT2 0x0004 ^define B1T3 0x0008 #define BIT4 0x0010 #define BTT5 0x0020 #define BIT6 0x0040 #definc BIT7 0x0080 ^define BITS 0x0100 #define BIT9 0x0200 #define BTTA 0x0400 #define BITB 0x0800 #definc BITC 0x1000 ^define B1TD 0x2000 #define BITE 0x4000 ttdefine BTTF 0x8000/ vxf* STATUS REGISTER BITS/ f#define C ttdefine Z #dcfinc N ttdefine V ^define GIE ttdefine CPUOFF ttdefine OSCOFF #dcfinc SCGO^define SCG1 /* Low Power Modes coded with Bits4-7 in SR */ttifndef _IAR_SYSTEMS_ICC /* Begin #defines for assembler */ ttdefine LPMOCPUOFF^define LPM1SCGO+CPUOFF^define P61N_const sfrb P6IN#define P60UT_ sfrb P60UT #dcfinc P6DIR_ sfrb P6D1R^define P6SEL_sfrb P6SEL0x0001 0x0002 0x0004 0x01000x0008 0x00100x0020 0x0040 0x0080ttinclude <ln430. h>#define LPMO_BIS_SR(LPMO bits) /* Enter Low Power Mode 0 */#define LPMO_EXIT _BIC_SR(LPMO_bits) /* Exit Low Power Mode 0 */ ttdefine LPM1 _BTS_SR(LPMlbits) /* Enter Low Power Mode 1 */ #dcfine LPM1_EXIT _BIC_SR(LPMl_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */ ^define LPM2_EXIT _BIC_SR(LPM2_bitsI /* Exit Low Power Mode 2 */ #define LPM3 BISSR(LPM3_bits) /* Enter Low Power Mode 3 */ ttdefine LPM3_EXTT _BTC_SR(LPM3_bits) /* Exit Low Power Mode 3 */ #dcfinc LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ ^define LPM4_EX1T _BlC_SR(LPM4_bits) /* Exit Low Power Mode 4 */ Wendif /* End #defines for C *//I* PERIPHERAL FILE MAPvz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz vz /{/ /吓、吓、*特殊功能寄存器地址和控制位K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L*K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* / /0x0000 =1E1_; 0x01/*看门狗中断使能 0x02/*外部晶振故障0x10 /*非屏蔽中断使能*/0x20/*可屏蔽中断使能^define LPM2 ^define LPM3 #define LPM4/* End #defines for assembler */ ttelse /* Beg in #def ines for C */ #define LPMO bits ^define LPMlbits #define LPM2_bits ttdefine LPM3_bits SCG1+CPUOFF SCG1+SCGO+CPUOFF SCG1+SCGO+OSCOFF+CPUOFFCPUOFFSCGO+CPUOFF SCG1+CPUOFF SCG1+SCGO+CPUOFF SCG1+SCGO+OSCOFF+CPUOFF/*中断使能1*/#dcfinc IE1_ sfrb 1E1 ^define WDTIE*/^define OFTE 中断使能*/ttdefine NM11E ^define ACCVIE /flash 写中断错误*/ ttdefine URXTEO0x40 /*串口0接收中断使^define UTX1E0 0x80 /*串口0发送中断使能*//*中断标志1*/^define TFG1_ 0x0002sfrb IFG1 =IFG1_ ■9ttdefine WDT1FG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#dcfinc NMIIFG 0x10 /*非屏蔽屮断标志*/^define URXIFGO 0x40 /*串口0接收中断标志*/ttdefine UTXTFGO 0x80 /*串口0发送中断标志*//*中断模式使能1 */^define ME1_ 0x0004sfrb ME1 二ME1_;ttdefine URXEO 0x40 /* 串口0 接收屮断模式使能*/ttdefine USP1EO 0x40 /*同步中断模式使能*/#define UTXEO 0x80 /* 串口0 发送中断模式使能*//*中断使能2 */ttdefine 1E2_ 0x0001sfrb IE2 =IE2_;ttdefine URXIE1 0x10 /*串口1接收中断使能*/#dcfinc UTXIE1 0x20 /*串口1发送中断使能*//*中断标志2 */#define IFG2_ 0x0003sfrb TFG2 二TFG2_ •#dcfinc URXIFG1 0x10 /*串口1接收中断标志*/^define UTXIFG1 0x20 /*串口1发送中断标志*//*中断模式使能2 */#dcfinc ME2_ 0x0005sfrb ME2 =ME2_;^define URXE1 0x10 /* 串口 1 接收中断模式使能*/ttdefine USPTE1 0x10 /*同步中断模式使能*/0x20 /* 串口 1 ^define UTXE1发送中断模式使能*///* 看门狗定时器的寄存器定义\L^ ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ ^lz ^lz ^lz ^lz ^lz \L^ \L^ /吓、Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% Z|% /^define WDTCTL_sfrw WDTCTL^define WDTTSO选择WDTCNT的四个输出端Z—*/^define WDT1S1选择WDTCNT的四个输岀端之一*/#define WDTSSELWDTCNT的吋钟源*/#dcfine WDTCNTCL除WDTCNT端:为1时从0开始计数*/ ^define WDTTMSEL 0x0120二WDTCTL_;0x00010x00020x00040x00080x0010择模式0:看门狗模式;1:定时器模式*/#define WDTNMT 0x0020/*/* /*选择/*清/*选/*选择NMI/RST引脚功能0:为RST; 1:为NMI*/ #defineWDTNMIES 0x0040选择触发延0:为上升延1:为下降延*/ ttdefine WDTHOLD 0x0080 看门狗定时器工作0:启动;1:停止*/ /*WDT\MI 二 1时.^define WDTPW 写密码:高八位*/0x5A00 /*#defineWDT MDLY 32 WDTPW+WDTTMSEL+WDTCNTCL/* TSMCLK*2P0WER15二32ms 复位状态 */#define WDT_MDLY_8WDTPW+WDTTMSEL+WDTCNTCL+WDTISO/* TSMCLK*2P0WER13=8. 192ms 〃*/#dcfineWDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1/* TSMCLK*2P0WER9=0. 512ms ” */#defineWDT MDLY 0 064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTISO /* SMCLK= 1MHz定时器模式*//* TSMCLK*2P0WER6=0. 512ms 〃 *//* ACLK=32. 768KHz 定时器模式*/#defineWDT_ADLY_1OOO WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL/* TACLK*2POWER15=1000ms 〃 */#dcfineWDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDT1S0/* TACLK*2P0WER13=250ms ” */#defineWDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1/* TACLK*2P0WER9二16ms 〃 */#defineWDT ADLY 1 9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTISO /* TACLK*2P0WER6=l. 9ms 〃 */ /* SMCLK二1MHz看门狗模式*/#dcfineWDT_MRST_32 WDTPW+WDTCNTCL/* TSMCLK*2P0WER15二32ms 复位状态*/ttdefineWDT_MRST_8 WDTPW+WDTCNTCL+WDTISO/* TSMCLK*2P0WER13=8・ 192ms ” */#defineWDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1/* TSMCLK*2P0WER9=0. 512ms 〃 */#dcfineWDT_MRST_0_064WDTPW+WDTCNTCL+WDT1S1+WDTISO /* TSMCLK*2P0WER6=0. 512ms " */ ACLK二32KHz看门狗模式*/ttdefineWDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL/* TACLK*2P0WER15=1000ms ” */#defineWDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTISO/* TACLK*2P0WER13=250ms 〃 */#dcfineWDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDT1S1/* TACLK*2P0WER9二16ms 〃 */#defineWDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTTS1+WDTTSO/* TACLK*2POWER6=1. 9ms 〃 *// ^Jx s£z/硕件乘法器的寄存器定义K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L* K L*//0x0130 /*无符号乘法*/=MPY_;0x0132 /*有符号乘法*/ 二 MPYS_;0x0134 /*无符号乘加*/ =MAC_; 0x0136 /*有符号乘加*/ 二 MACS_;0x0138 /* 第二乘数 */ =0P2_;0x013A A 低6位结果寄存器*/ =RESLO_;0x013C /*高6位结果寄存器*/ 二 RESHT_;0x013E /*结果扩展寄存器*/=SUMEXT_;//xT> zCx* DIGITAL I/O Port 1/2寄存器定义有中断功能/ ■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 /ftdefine MPY_ sfrw MPY #define MPYS_ sfrw MPYS #dcfine MAC_ sfrw MAC #define MACS_ sfrw MACS ttdefine 0P2_ sfrw 0P2 #define RESLO_ sfrw RESLO ttdefine RESHI_ sfrw RESHT #dcfine SUMEXT_ const sfrw SUMEXT^define P1IN_ const sfrb P11N ^define P10UT_ sfrb PlOUT ^define P1DTR_ */ sfrb P1D1R ^define P1IFG_ sfrb P1IFG ^define P1TES_ 器*/sfrb P11ES ^define P1IE_ sfrb P1IE ttdefine P1SEL_ sfrb P1SEL^define P21N_ const sfrb P2IN ttdefine P20UT sfrb P20UT #dcfinc P2DIR_ */ sfrbP2DIR0x0020 /* Pl 输入寄存器*/=P1IN_;0x0021 /* Pl 输岀寄存器*/ 二 P1OUT_;0x0022 /* Pl 方向选择寄存器=P1D1R_;0x0023 /* Pl 中断标志寄存器*/ 二 P1IFG_;0x0024 /* Pl 中断边沿选择寄存 =P11ES_;0x0025 /* Pl 中断使能寄存器*/ 二 P1IE_;0x0026 /* Pl 功能选择寄存器*/ =P1SEL ;0x0028 /* P2输入寄存器*/=P2IN_;0x0029 /* P2输出寄存器*/ 二 P20UT_;0x002A /* P2方向选择寄存器=P2DIR ;0x002B /* P2中断标志寄存器二 P2IFG_;0x002C /* P2中断边沿选择寄存 =P21ES_;0x002D /* P2中断使能寄存器*/二 P2IE_;0x002E A P2功能选择寄存器 =P2SEL_;//xT> zCx* DIGITAL I/O Port3/4寄存器定义无中断功能/ ■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 // 彳J X|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X Z|X ZTX /0x0030 /* P5输入寄存器*/ 二 P5IN_; 0x0031 /* P5输岀寄存器*/^define P3IN_ const sfrb P31N ^define P3OUT_ sfrb P3OUT ^define P3DTR */ sfrbP3D1R^define P3SEL_ sfrb P3SEL ^define P4TN_ const sfrb P4IN ^define P40UT_ sfrb P40UT ttdefine P4DIR_ */sfrb P4DIR ^define P4SEL_ */ sfrbP4SEL0x0018 /* P3输入寄存器*/=P3IN_;0x0019 /* P3输岀寄存器*/ 二 P30UT_;OxOOlA /* P3方向选择寄存器 =P3D1R_;OxOOlB /* P3功能选择寄存器*/二 P3SEL_;OxOOlC /* P4输入寄存器*/=P4IN_;OxOOlD /* P4输出寄存器*/ =P40UT_;OxOOlE /* P4方向选择寄存器 =P4DIR_;OxOOlF /* P4功能选择寄存器二 P4SEL_;* DIGITAL 1/0 Port5/61/0 口寄存器定义P0RT5和6无屮断功能^define P21FG_ */ sfrbP2IFGttdefine P2TES_ 器*/sfrb P21ES ^define P2IE_ sfrb P2IE ttdefine P2SEL_ */ sfrb P2SEL^define P5IN_ const sfrb P5IN ttdefine P50UT_sfrb P5OUT =P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/ sfrb P5DIR 二P5DIR_;ttdefine P5SEL_ 0x0033 /* P5 功能选择寄存器*/ sfrb P5SEL =P5SEL ;#definc P6IN_ 0x0034 /* P6 输入寄存器*/ const sfrb P61N =P61N_;^define P6OUT_ 0x0035 /* P6输出寄存器*/sfrb P6OUT 二P60UT_;ttdefine P6DIR_ 0x0036 /* P6方向选择寄存器*/ sfrb P6DIR =P6DIR ;ttdefine P6SEL_ 0x0037 /* P6功能选择寄存器*/ sfrb P6SEL 二P6SEL_;* Timer A , Timer B可公用捕获/比较控制寄存器X */^define CM1 0x8000 /*捕获模式选择位1 */ ^define CMO 0x4000 /*捕获模式选择位0 */ ^define CCIS1 0x2000 /*捕获输入信号源选择位1 */^define CCTSO 0x1000 /*捕获输入信号源选择位0 */ttdefine SCS 0x0800 /*信号同步位0:异步捕获;1:同步捕获*/#define SCCI 0x0400 /*锁存输入信号*/ ttdefine CAP 0x0100 /*模式选择:0:比较模式;1:捕获模式*/^define 0UTM0D2 0x0080 /*输出模式选择位2 */^define 0UTM0D1 0x0040 /*输岀模式选择位1 */#define OUTMODO 0x0020 /*输出模式选择位0 */ ttdefine CCTE 0x0010 /*中断允许位*/#define CCI 0x0008 /*读出输入信号源位ccis0\l */^define OUT 0x0004 /*输岀信号(选择输岀模式0) */ttdefine COV 0x0002 /*捕获溢出标志*/ ttdefine CCIFG 0x0001 /*中断标志*/^define OUTMOD_O 0*0x20 /*输出模式*/^define OUTMOD_1 1*0x20 /*置位模式*/#define OUTMOD_2 2*0x20 /*翻转/复位模式*/ ttdefine 0UTM0D_3 3*0x20 /*置位/复位模式*/#dcfinc 0UTM0D_4 4*0x20 /*翻转模式*/^define 0UTM0D_5 5*0x20 /*复位模式*/^define OUTMOD 6 6*0x20 /*翻转/置位模式*//■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、■}、"卜 /OxOllE /*中断向量寄存 =TBIV_;0x0180 A 定时器B 控制寄存器: =TBCTL_;0x0182 /*定时器B 捕获/比较控制二 TBCCTLO_;0x0184 /*定时器B 捕获/比较控制=TBCCTL1_;0x0186/*定时器B 捕获/比较控制二 TBCCTL2_;0x0188 /*定时器B 捕获/比较控制=TBCCTL3_;0x018A A 定时器B 捕获/比较控制 =TBCCTL4_;0x018C /*定时器B 捕获/比较控制^define 0UTM0D_7^define CCIS_O 事件的输入信号源*/ttdefine CCTS_1 事件的输入信号源*/^define CC1S_2 件的输入信号源*/ #define CCIS_3 件的输入信号源*/ #dcfinc CM_O ^define CM_1 */#define CM_2 */ #dcfinc CM_3 都捕获模式*/7*0x20 /*复位/置位模式*/ 0*0x1000 /*选择CCIXA 为捕获 1*0x1000 /*选择CCTXB 为捕获 2*0x1000 /*选择GND 为捕获事 3*0x1000 /*选择VCC 为捕获事 0*0x4000 /*禁止捕获模式*/ 1*0x4000 /*上升延捕获模式 2*0x4000 /*下降沿捕获模式 3*0x4000 /*上升沿和下降沿/ / xT> zCx* Timer B定时器B 寄存器定义^define TBIV_器:B1T1-B1T3 有效 */ sfrw TBIV #define TBCTL_全部控制都集审在这*/sfrw TBCTL^define TBCCTL0_ 寄存器0*/ sfrw TBCCTLO ttdefine TBCCTL1_ 寄存器1 */ sfrw TBCCTL1^define TBCCTL2_ 寄存器2 */ sfrw TBCCTL2#dcfinc TBCCTL3_ 寄存器3 */ sfrw TBCCTL3#define TBCCTL4_ 寄存器4 */ sfrw TBCCTL4^define TBCCTL5_ 寄存器5 */=TBCCTL5_;0x018E/*定时器B 捕获/比较控制二 TBCCTL6_;0x0190 /* 计数器 */=TBR_;0x0192 /*定时器B 捕获/比较寄存二 TBCCRO_;0x0194 /*定时器B 捕获/比较寄存 =TBCCR1_;0x0196 /*九时器B 捕获/比较寄存 =TBCCR2_;0x0198 /*定时器B 捕获/比较寄存二 TBCCR3_;0x019A /*定吋器B 捕获/比较寄存 =TBCCR4_;0x019C /*定时器B 捕获/比较寄存二 TBCCR5_;0x019E /*定时器B 捕获/比较寄存 sfrw TBCCR6/*定时器B 控制寄存器:全部控制都集中在这*/^define SHR1制位1 :受TBCCTLx 中的CCLDx 位控制*/^define SHRO制位0 :受TBCCTLx 中的CCLDx 位控制*/#define TBCLGRP11 :受TBCCTLx 中的CCLDx 位控制*/ #dcfine TBCLGRPO0 :受TBCCTLx 中的CCLDx 位控制*/ ^define CNTL1 1 */^define CNTLO 0 */^define TBSSEL2sfrw TBCCTL5^define TBCCTL6_ 寄存器6 */sfrw TBCCTL6 #dcfinc TBR_ sfrw TBR^define TBCCRO_ 器0 */ sfrw TBCCRO #dcfinc TBCCR1_ 器1 */ sfrw TBCCR1 #define TBCCR2_ 器2 */ sfrw TBCCR2 ^define TBCCR3_ 器3 */ sfrw TBCCR3 ttdefine TBCCR4_ 器4 */ sfrw TBCCR4 ^define TBCCR5_ 器5 */ sfrw TBCCR5 #dcfinc TBCCR6_ 器6 */=TBCCR6_;^define TBSSEL1#define TBSSELO^define TBCLR0x4000 /*装载比较锁存器控0x2000 /*装载比较锁存器控0x4000 /*装载比较锁存器控制位0x2000 /*装载比较锁存器控制位0x1000 /*定时器位数长度控制位0x0800 /*定时器位数长度控制位0x0400 /* 未用 */0x0200 /*时钟输入源控制位1 */0x0100 /*时钟输入源控制位0 */0x0004 /*置1清除定时器*/0x0002 /*中断允许*/ 0x0001 /*中断标志*/#define TBSSEL_0 ttdefine TBSSEL_1 ^define TBSSEL_2 #definc TBSSEL 3 ^define CNTL_0 #define CNTL_1 ttdefine CNTL_2 ^define CNTL_3 Wdefinc SHR 0值)*/^define SHR_13 groups (1-2, 3-4, 5-6) */ ttdefine SIIR_22 groups (1-3, 4-6)*/ ^define SHR_3 1 group (all) */ ^define TBCLGRP_0*/#define TBCLGRP 1groups (1-2, 3-4, 5-6) */#define TBCLGRP_2 groups (1~3, 4-6)*/^define TBCLGRP_3 时钟源为:TBCLK */ 吋钟源为:ACLK */ 时钟源为:SMCLK */ 时钟源为:INCLK */16位计数模式*/ 12位计数模式*/ 10位计数模式*/ 8位计数模式*/ /*单独装载(初始1*0x2000 /*分三组装载:1 - 2*0x2000 /* 分二组装载:2- 3*0x2000 /*不分组装载:3- 0*0x2000 /*单独装载(初始值) 1*0x2000 /*分三组装载:1 - 3 2*0x2000 /* 分二组装载:2-2 3*0x2000 /*不分组装载:3 - 1group (all) *//* Additional Timer BControl Register bits are defined in Timer A */#define SLSHR1 source 1 */ #dcfinc SLSI1R0 source 0 */ 0x0400 /* Compare latch load0x0200 /* Compare latch load ^define CLLD10x0400 /*定义比较锁存器TBCLx的装载方式控制位1 */^define CLLDO 0x0200 /*定义比较锁存器TBCLx的装载方式控制位0 */#definc SLSHR 0 ^define SLSHR_1 载*/ ttdefine SLSHR_2 数到TBCLx 或0时装载;0*0x0200 /*立即装载*/1*0x0200 /* TBR 计数到0时装 2*0x0200 /*在增减模式下,计在连续计数模式下,计数到0时装载*/^define TB1E ^define TBIFG0*0x0100 1*0x0100 2*0x0100 3*0x0100 /* /* /* /* 0*0x0800 1*0x0800 2*0x0800 3*0x0800 /* /* /* /* 0*0x2000^define SLSHR_33*0x0200 /* 当计数到 TBCLO时装载*/#define CLLD_O 0*0x0200 /* 立即装载 */ ttdef ine CLLD_11*0x0200 /* TBR 计数到 0 吋装 载*/#definc CLLD 22*0x0200 /*在增减模式下,计数到TBCLx 或0时装载;在连续计数模式下,计数到0时装载*/ #def ine CLLD_3 3*0x0200 /* 当计数到 TBCLO 时 装载*/点击查看:怎样获取“电子币”的详细说明-一漫步于开源世界Z 屮,一起与自 由同行!Posted: 2007-04-13 00:14 | [楼 主]式./ 1:高频模式.*/#define DC0CTL_ 值位060h*/ sfrb DCOCTL #define BCSCTL1值位084h*/sfrb BCSCTL1#define BCSCTL2 值位000h*/0x0056 /* DCO 时钟频率控制寄存器:复位后的=DC0CTI-;0x0057 /*系统时钟控制寄存器1 :复位后的=BCSCTL1_;0x0058 /*系统时钟控制寄存器2 :复位后的sfrb BCSCTL2 /* DCO 时钟频率控制寄存器*/ =BCSCTL2 ;#define M0D0 #define MODI #define M0D2 #define MOD3 #define M0D4 #define DCOO #define DC01 #define DC020x01 /* DCO 插入周期控制位0 */ 0x02 /* DCO 插入周期控制位1 */ 0x04 /* DCO 插入周期控制位2 */ 0x08 /* DCO 插入周期控制位3 */ 0x10 /* DCO 插入周期控制位4 */ 0x20 /* 8种频率控制位0 */ 0x40 /* 8种频率控制位1 */ 0x80 /* 8种频率控制位2 *//*系统时钟控制寄存器1 :复位后的值位084h*/^define RSELO #define RSEL1 #define RSEL2 #define XT5V #define DIVAO #define DIVAI #define XTS0x01 /*选择内部电阻控制位0 */ 0x02 /*选择内部电阻控制位1 */ 0x04 /*选择内部电阻控制位2 */0x08 /*必须为0*/0x10 /* ACLK 分频系数控制位0*/ 0x20 /* ACLK 分频系数控制位1 */0x40 /* LFXT1工作模式控制位0:低频模* Basic Clock Module0x80 /* XT2CLK 使能控制位0:开启;1 :关0x0128 /* FLASH 控制寄存器1:控制编程、=FCTL1_;0x012A /* FLASH 控制寄存器2 :控制时钟=FCTL2 ;0x012C /* FLASH 控制寄存器3:状态标志#define DIVA 00x00 /* ACLK 分频系数为:1 */ #define DIVA.1 0x10 /* ACLK 分频系数为:2 */ #define DIVA 2 #define DIVA.3 0x20 /* ACLK 分频系数为:4 */ 0x30 /* ACLK 分频系数为:8 */ /*系统时钟控制寄存器2 :复位后的值位OOOhV#define DCOR #define DTVSO #define DIVS1 #define SEES 0x01 /*内外电阻选择控制位*/ 0x02 /* SMCLK 分频控制位0*/ 0x04 /* SMCLK 分频控制位1 */0x08 /* SMCLK 时钟源选择位 t 0: DCOCLK / 1:XT2CLK/LFXTCLK */ #define DTVMO #define DTVM1 #defi ne SELMO ^define SELM1 0x10 /* MCLK 分频控制位0 */ 0x20 /* MCLK 分频控制位1 */ 0x40 /* MCLK 时钟输入源选择位0 */ 0x80 /* MCLK 时钟输入源选择位1 */ #dcfinc #define #define #define #define #dcfinc#define #defi ne #define #define #dcfinc */ #defineDIVS_O DIVS 1 DIVS_2 DIVS_3 DIVM 0 DIVM_1 DIVM 2DTVM_3SELNLO SELM 1 SELM_2 SELM 3 0x00 /* SMCLK 分频系数为:1 */ 0x02 /* SMCLK 分频系数为:2 */ 0x04 /* SMCLK 分频系数为:4 */ 0x06 /* SMCLK 分频系数为:8 */ 0x00 0x10 0x20 0x30 /* /* /* /* /* /* * Flash MemoryMCLK MCLK MCLK MCLK MCLK MCLK 分频系数为: 分频系数为: 分频系数为: 分频系数为: 时钟输入源: 时钟输入源: 1 2 4 8 */ */ */ */ DCOCLK */ DCOCLK */ 0x00 0x40 0x80 /* MCLK 时钟输入源:XT2CLK/LFXTCLK OxCO /* MCLK 时钟输入源:LFXTCLK */FLASH 操作寄存器定义#define XT20FF 闭*/#define FCTL1 擦除*/sfrwFCTL1#define FCTL2_ 分频*/sfrwFCTL2#define FCTL3*/sfrw FCTL3 二FCTL3 ;#define FRKEY#define FWKEY#define FXKEY/* FLASH控制寄存器1:控制编程、擦除*/#define ERASE#define MERAS#define WRTBLKWRT#define/* FLASH控制寄存器2 :控制时钟分频*/#define FN 0#define FN 1#define FN 2#define FN 3#define FN 4#dcfine FN 5#define FN 6#define FN 7#define FN 8#define FN 9#dcfine FN 10#define FN 11#define FN 12#define FN 13#define FN 14#define FN 15#define FN 16#define FN 17#define FN 18#define FN 19#define #define FN_20 FN 21#define #define #define #dcfine #define FN_22 FN_23 FN_24 FN_25 FN 26#define #define #define FN_27 FN_28 FN 29#dcfine #define FN_30FN 310x9600 /* 读FLASH 密码 */0xA500 /* 写FLASH 密码 */0x3300 /* for use with XOR instruction */0x0002 /*擦除段使能*/0x0004 /*主存擦除使能*/0x0040 /*编程使能*/0x0080 /*段编程使能*/0x0000 /*直通 */0x0001 /*2 分频 */0x0002 /*3 分频*/0x0003 /*4分频 */0x0004 /*5分频 */0x0005 /*6 分频*/0x0006 /*7分频 */0x0007 /*8 分频*/0x0008 /*9 分频 */0x0009 /*10 分频 */OxOOOA All 分频*/OxOOOB /*12 分频 */OxOOOC /*13 分频*/OxOOOD /*14 分频 */OxOOOE /*15 分频 */OxOOOE /*16 分频*/0x0010 /*17 分频 */0x0011 /*18 分频*/0x0012 /*19 分频 */0x0013 /*20 分频 */0x0014 /*21 分频*/0x0015 /*22分频 */0x0016 /*23 分频*/0x0017 /*24 分频 */0x0018 /*25 分频 */0x0019 /*26 分频*/OxOOlA /*27分频 */OxOOlB /*28 分频*/OxOOlC /*29 分频 */0x0010 /*30 分频 */OxOOlE /*31 分频*/OxOOlF /*32 分频 */。

MSP430单片机深入学习笔记

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)所示。

系统时钟振荡器:1.DCO 数控RC振荡器,位于芯片内部。

不用时可以关闭2.LFXT1 可以接低频振荡器,典型的如32.768kHz的钟表振荡器,此时振荡器不需要接负载电容。

msp430串口接收函数

msp430串口接收函数

msp430串口接收函数篇一:基于msp430串口接收中断#includevoid main{WDTCTL = WDTPW + WDTHOLD;BCSCTL1 = CALBC1_1MHZ;DCOCTL = CALDCO_1MHZ;P1SEL |= BIT1 + BIT2;P1SEL2 |= BIT1 + BIT2;//需要对照着手册来看UCA0CTL1 |= UCSSEL_2;//选择串口的校验位 UCA0BR0 = 104;//9600 波特率的计算一般都存在误差 UCA0BR1 = 0;UCA0MCTL = UCBRS0;//校准波特率用所以要使用校准UCA0CTL1 &= ~UCSWRST;//让串口进行复位IE2 |= UCA0RXIE;//开启接收中断__bis_SR_register;}#pragma vector = USCIAB0RX_VECTOR__interrupt void USART_RECEIVE{UCA0TXBUF = UCA0RXBUF+1;while);//等待发送完毕可加可不加 }篇二:MSP430串口收发程序MSP430 标准库printf函数实现20XX-08-02 21:22关键是增加一个putchar函数。

代码如下:#include#includevoid NOP10{_NOP ;_NOP ;_NOP ;_NOP ;_NOP ;_NOP ;_NOP ;_NOP ;_NOP ;_NOP ;}int putchar//注意不要改参数的类型和返回值的类型,否则printf调用是就有问题了。

{if{TXBUF1 = '\r';while==0);}TXBUF1 = c;while==0);return c;}void InitalUart1{P4SEL |= 0x03; // P4.0,1 = USART1 TXD/RXDME2 |= UTXE1 + URXE1;// Enable USART1 TXD/RXDUCTL1 |= CHAR; // 8-bit characterUTCTL1 |= SSEL1; // UCLK = SMCLK UBR01 = 0x36; // 1MHz 19200UBR11 = 0x00; // 1MHz 19200UMCTL1 = 0x6B; // ModulationUCTL1 &= ~SWRST; // Initalize USART state machine IE2 |= URXIE1; // Enable USART1 RX interrupt//IFG2 |= UTXIFG1;}void main{unsigned char i;i=0x10;WDTCTL = WDTPW + WDTHOLD; // Stop WDTFLL_CTL0 |= XCAP18PF;// Configure load capsInitalUart1 ;_EINT ;// LPM0;while{// while ); // USART1 TX buffer ready?// TXBUF1 = 'H';//putchar;//putchar;printf;NOP10 ;}}#pragma vector=USART1RX_VECTOR__interrupt void usart1_rx{while ); // USART1 TX buffer ready?TXBUF1 = RXBUF1; // RXBUF1 to TXBUF0//LPM0_EXIT;msp430各模块函数整合20XX-08-13 14:27/***************************************************程序功能:控制8个LED闪烁,用于测试下载功能是否正常测试说明:观察LED闪烁***************************************************/#include#include "EEPROM.c"#include "LCD1602.c"#include "DS18B20.c"void LED_delay;void KEY_delay;void EEPROM_delay;void sys_init;void LED_Init;void LED_Set;unsigned char LED_Read_Status;void LED_Test;void KEY_Init;unsigned char key;void KEY_Test;void SEG_Init;void SEG_Show;void EEPROM_Init;void Write_EEPROM;void Read_EEPROM;void LCD1602_Init;void LCD1602_Show;void DS18B20_Init;void TimerA_Delay_CFG;float get_DS18B20_temperature;unsigned char SEG_Table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0 xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//0-f 段选信号,共阳 uchar UART_Rev_String[20]="\0";uchar rev_string_count=0;uchar rev_string_xxplete=0; //为1代表串口接收了一行字符串// =================================================== ===============// 延时函数// =================================================== ===============//************************************************* // function :LED_delay// parameter:dly// description :用于LED花样显示延时//************************************************* void LED_delay{unsigned int i;whilefor;}//************************************************* // function :KEY_delay// parameter:// description :用于消抖的延时//************************************************* void KEY_delay{uint tmp;for;}//************************************************* // function :EEPROM_delay// parameter:ts// description :用于消抖的延时//************************************************* void EEPROM_delay{while;}// =================================================== =============== // 系统函数// =================================================== ===============//************************************************* // function :sys_init// parameter:// description :延时一段时间//************************************************* void sys_init{WDTCTL = WDTPW + WDTHOLD; //关闭看门狗BCSCTL2 &=0xc0; //XT2CLK+2分频}// =================================================== =============== // LED相关函数//=================================================== ===============//************************************************* // function :LED_Init// parameter:// description :LED初始化程序// 8个LED接在P2.0~P2.7上。

第3章MSP430指令系统

第3章MSP430指令系统

1
1 0 0 1 1 0 0 1 1 0
0
1 0 1 0 1 0 1 0 1 0
JEQ/JZ,JNE/JNZ,JC,JNC
JN,JGE,JL,JMP MOV ADD ADDC SUBC SUB CMP DADD BIT BIC
Double Operand Instruction
1
1 1
1
1 1
0
1 1
1
0 1
BIS
XOR AND
D15 D14 D13 D12
/Y0 /Y1 /Y2 /Y3 /Y4 /Y5 第1级 /Y6 指令 /Y7 译码器 /Y8 /Y9 /Y10 /Y11 /Y12 /Y13 /Y14 G /Y15
/Y0 /Y1 /Y2 /Y3 第2级 /Y4 指令 /Y5 译码器 /Y6 /G /Y7
Double Operand Instruction (12条指令)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
op-code
0 0 1 1 0 0 0 1
S-Reg
MOV(.B) ADD (.B)
Ad B/W
As
D-Reg
src , dst src , dst
0
0 1 1 1 1 1
子程1子程2子程中断的返回地址cpu自动完成需要保护的重要数据自动编程主要用于保存和恢复保护返回地址1保护返回地址2保护返回地址2主程序返回地址1返回地址2调用1保护返回地址1返回1恢复返回地址1先进后出调用2保护返回地址2返回2恢复返回地址2恢复返回地址2恢复返回地址1sppush返回地址1返回地址1返回地址2sppush初始态态pop返回地址1sp返回地址2popsp返回地址1sp正确使用堆栈堆栈是一重要的内存区应正确使用堆栈

msp430复习资料

msp430复习资料

1.寄存器R0~R3 :分别为程序计数器、堆栈指针、状态寄存器和常数发生器。

PC(程序计数器即R0)用来存放下一条将要从程序存储器中取出的指令地址。

SP(堆栈指针即R1) 指明堆栈顶。

SR(状态寄存器即R2)各位的含义:15~9 8 7 6 5 4 3 2 1 0 保留V SCG1 SCG00 OscOFF CPUOFF GIE N Z C 状态标志:C进位标志位,运算结果进位时C置位,否则C复位。

Z 零标志,运算结果0置位,否则复位。

N 负标志位,为负结果置位,否则复位。

V 溢出标志,运算结果超出符号位时置位,否则复位, 溢出情况如下:正数+正数=负数正数-负数=负数负数+负数=正数负数-正数=正数控制标志:GIE 中断标志位,控制可屏蔽中断,置位可响应可屏蔽中断。

CPUOFF cpu控制位,置位可是cpu进入关闭模式。

OscOFF 晶振控制位,置位使晶体振荡器处于停止状态。

SCG0,SCG1 时钟控制位,SGC1置位关闭SMCLK ,SGC0 置位关闭DCO发生器。

2.MSP430 单片机存储空间结构:该系列单片机采用的是同一结构,是物理上完全分开离的存储区域,ROM、FLASH、RAM、外围模块、特殊功能寄存器SFR 等,被安排在同一地址空间。

存储空间分布:1)中断向量被在相同的空间:0FFE0~0FFFFH;2)8位、16位外围模块占用相同范围的存储器地址;3)特殊功能寄存器占用相同范围的存储器地址;4)数据存储器都从0200H处开始;5)程序存储器的最高地址都是0FFFFH;3. 中断源:能够对cpu请求中断服务的功能模块。

中断标志:片内或片外在进行中断请求时置位的寄存器。

中断事件:系统在中断时,中断程序所要完成的任务。

中断向量:就是中断向量指针。

中断向量指针:存放中断程序入口地址的存储单元。

4. POR信号产生之后,系统状态为:RST/NMI 引脚被设置为复位模式;I/O引脚被转换成输入模式;状态寄存器复位;看门狗定时器进入看门狗模式;程序计数器PC 指向复位向量的地址(0FFEH) 上电复位(POR)与上电清除(PUC)上电复位(POR)与上电清除(PUC)信号可以使MSP430单片机系统复位。

MSP430寄存器的中文解释,熟知这些写起程序来很方便

MSP430寄存器的中文解释,熟知这些写起程序来很方便

#define P5DIR_ sfrb P5DIR
#define P5SEL_ sfrb P5SEL
#define P6IN_ const sfrb P6IN #define P6OUT_ sfrb P6OUT
0x0034 /* P6 输入寄存器 */ = P6IN_; 0x0035 /* P6 输出寄存器*/ = P6OUT_; 0x0036 /* P6 方向选择寄存器*/ = P6DIR_; 0x0037 /* P6 功能选择寄存器*/ = P6SEL_;
#define P4DIR_ sfrb P4DIR
#define P4SEL_ sfrb P4SEL
/************************************************************ * DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能
************************************************************/
#define P5IN_ const sfrb P5IN #define P5OUT_ sfrb P5OUT
0x0030 /* P5 输入寄存器 */ = P5IN_; 0x0031 /* P5 输出寄存器*/ = P5OUT_; 0x0032 /* P5 方向选择寄存器*/ = P5DIR_; 0x0033 /* P5 功能选择寄存器*/ = P5SEL_;
#define MPY_
0x0130 /* 无符号乘法 */
sfrw
MPY
= MPY_; 0x0132 /* 有符号乘法*/ = MPYS_; 0x0134 /* 无符号乘加 */ = MAC_; 0x0136 /* 有符号乘加 */ = MACS_; 0x0138 /* 第二乘数 */ = OP2_; 0x013A /* 低6位结果寄存器 */ = RESLO_; 0x013C /* 高6位结果寄存器 */ = RESHI_; 0x013E /*结果扩展寄存器 */ = SUMEXT_;

MSP430

MSP430

MSP430MSP430一、上电复位POR 和上电清除PUC二、低功耗控制但系统时钟发生器基本功能建立之后,CPU内的状态寄存器SR中的SCG1、SCG2、OscOff、CpuOff是低功耗的重要控制位;系统工作模式一共有6种,1种活动模式和5种低功耗模式;可以通过设置控制位使MSP430进入低功耗模式,由中断唤醒CPU,在执行完中断服务程序之后再回到低功耗模式,也可以在执行中断程序的时候间接访问堆栈修改状态寄存器的值,这样中断程序执行完之后就会进入另外一种低功耗模式或者处于活动模式。

三、时钟模块(一)、MSP430F149有三个时钟输入源:1、LFXT1CLK:如果LFXTCLK没有作用于SMCLK、MCLK信号,可以用OscOff置位以禁止LFXT1CLK工作;2、XT2CLK:若XT2CLK没有作用于SMCLK、MCLK信号,可以用控制位XT2OFF 关闭XT2;3、DCO振荡器:MSP430F149的两个外部振荡器产生的时钟信号都可以经过1、2、4、8分频后用作系统主时钟MCLK;当外部振荡器失效后,DCO 振荡器会自动被选作MCLK 的时钟源;(二)、MSP430F149提供3三种时钟信号:1、ACLK----辅助时钟,一般用于低速外设,由LFXT1CLK信号分频而得;2、MCLK----系统通过主时钟,一般用于CPU和系统,由以上三个时钟源任意一个分频而得;3、SMCLK---主要用于高速外设,由XT2CLK+XT2CLK 或LFXT1CLK+DCO分频而得。

(三)、如何控制MSP430的DCOCLK频率?——时钟模块的控制由5个寄存器来完成1、DCOCTL:定义8总频率之一2、BCSCTL1:控制XT2CLK的开启与关闭;控制LFXT1CLK的工作模式(低频或高频,高频下需要接高频时钟源);控制ACLK分频。

3、BCSCTL2选择MCLK时钟源;选择MCLK分频;选择SMCLK时钟源;选择SMCLK时钟源分频。

MSP430寄存器中文注释18页word文档

MSP430寄存器中文注释18页word文档

MSP430寄存器中文注释---P1/2口(带中断功能)/************************************************************* 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_;MSP430寄存器中文注释---P3/4口(无中断功能)/************************************************************* 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_;MSP430寄存器中文注释--- 硬件乘法器/************************************************************硬件乘法器的寄存器定义************************************************************/#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_;MSP430寄存器中文注释---看门狗和定时器/************************************************************* 看门狗定时器的寄存器定义************************************************************/#define WDTCTL_ 0x0120sfrw 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 /* TACL K*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 " */MSP430寄存器中文注释---A/D采样寄存器定义/************************************************************* ADC12 A/D采样寄存器定义************************************************************//*ADC12转换控制类寄存器*/#define ADC12CTL0_ 0x0;' /* ADC12 Control 0 */sfrw ADC12CTL0 = ADC12CTL0_;#define ADC12CTL1_ 0x01A2 /* ADC12 Control 1 */sfrw ADC12CTL1 = ADC12CTL1_;/*ADC12中断控制类寄存器*/#define ADC12IFG_ 0x01A4 /* ADC12 Interrupt Flag */sfrw ADC12IFG = ADC12IFG_;#define ADC12IE_ 0x01A6 /* ADC12 Interrupt Enable */sfrw ADC12IE = ADC12IE_;#define ADC12IV_ 0x01A8 /* ADC12 Interrupt Vector Word */sfrw ADC12IV = ADC12IV_;/*ADC12存贮器类寄存器*/#define ADC12MEM_ 0x0140 /* ADC12 Conversion Memory */#ifndef __IAR_SYSTEMS_ICC#define ADC12MEM ADC12MEM_ /* ADC12 Conversion Memory (for assembler) */#else#define ADC12MEM ((int*) ADC12MEM_) /* ADC12 Conversion Memory (for C) */#endif#define ADC12MEM0_ ADC12MEM_ /* ADC12 Conversion Memory 0 */sfrw ADC12MEM0 = ADC12MEM0_;#define ADC12MEM1_ 0x0142 /* ADC12 Conversion Memory 1 */sfrw ADC12MEM1 = ADC12MEM1_;#define ADC12MEM2_ 0x0144 /* ADC12 Conversion Memory 2 */sfrw ADC12MEM2 = ADC12MEM2_;#define ADC12MEM3_ 0x0146 /* ADC12 Conversion Memory 3 */sfrw ADC12MEM3 = ADC12MEM3_;#define ADC12MEM4_ 0x0148 /* ADC12 Conversion Memory 4 */sfrw ADC12MEM4 = ADC12MEM4_;#define ADC12MEM5_ 0x014A /* ADC12 Conversion Memory 5 */sfrw ADC12MEM5 = ADC12MEM5_;#define ADC12MEM6_ 0x014C /* ADC12 Conversion Memory 6 */sfrw ADC12MEM6 = ADC12MEM6_;#define ADC12MEM7_ 0x014E /* ADC12 Conversion Memory 7 */sfrw ADC12MEM7 = ADC12MEM7_;#define ADC12MEM8_ 0x0150 /* ADC12 Conversion Memory 8 */sfrw ADC12MEM8 = ADC12MEM8_;#define ADC12MEM9_ 0x0152 /* ADC12 Conversion Memory 9 */sfrw ADC12MEM9 = ADC12MEM9_;#define ADC12MEM10_ 0x0154 /* ADC12 Conversion Memory 10 */sfrw ADC12MEM10 = ADC12MEM10_;#define ADC12MEM11_ 0x0156 /* ADC12 Conversion Memory 11 */sfrw ADC12MEM11 = ADC12MEM11_;#define ADC12MEM12_ 0x0158 /* ADC12 Conversion Memory 12 */sfrw ADC12MEM12 = ADC12MEM12_;#define ADC12MEM13_ 0x015A /* ADC12 Conversion Memory 13 */sfrw ADC12MEM13 = ADC12MEM13_;#define ADC12MEM14_ 0x015C /* ADC12 Conversion Memory 14 */sfrw ADC12MEM14 = ADC12MEM14_;#define ADC12MEM15_ 0x015E /* ADC12 Conversion Memory 15 */sfrw ADC12MEM15 = ADC12MEM15_;/*ADC12存贮控制类寄存器*/#define ADC12MCTL_ 0x0080 /* ADC12 Memory Control */#ifndef __IAR_SYSTEMS_ICC#define ADC12MCTL ADC12MCTL_ /* ADC12 Memory Control (for assembler) */ #else#define ADC12MCTL ((char*) ADC12MCTL_) /* ADC12 Memory Control (for C) * /#endif#define ADC12MCTL0_ ADC12MCTL_ /* ADC12 Memory Control 0 */sfrb ADC12MCTL0 = ADC12MCTL0_;#define ADC12MCTL1_ 0x0081 /* ADC12 Memory Control 1 */sfrb ADC12MCTL1 = ADC12MCTL1_;#define ADC12MCTL2_ 0x0082 /* ADC12 Memory Control 2 */sfrb ADC12MCTL2 = ADC12MCTL2_;#define ADC12MCTL3_ 0x0083 /* ADC12 Memory Control 3 */sfrb ADC12MCTL3 = ADC12MCTL3_;#define ADC12MCTL4_ 0x0084 /* ADC12 Memory Control 4 */sfrb ADC12MCTL4 = ADC12MCTL4_;#define ADC12MCTL5_ 0x0085 /* ADC12 Memory Control 5 */sfrb ADC12MCTL5 = ADC12MCTL5_;#define ADC12MCTL6_ 0x0086 /* ADC12 Memory Control 6 */sfrb ADC12MCTL6 = ADC12MCTL6_;#define ADC12MCTL7_ 0x0087 /* ADC12 Memory Control 7 */sfrb ADC12MCTL7 = ADC12MCTL7_;#define ADC12MCTL8_ 0x0088 /* ADC12 Memory Control 8 */sfrb ADC12MCTL8 = ADC12MCTL8_;#define ADC12MCTL9_ 0x0089 /* ADC12 Memory Control 9 */sfrb ADC12MCTL9 = ADC12MCTL9_;#define ADC12MCTL10_ 0x008A /* ADC12 Memory Control 10 */sfrb ADC12MCTL10 = ADC12MCTL10_;#define ADC12MCTL11_ 0x008B /* ADC12 Memory Control 11 */sfrb ADC12MCTL11 = ADC12MCTL11_;#define ADC12MCTL12_ 0x008C /* ADC12 Memory Control 12 */sfrb ADC12MCTL12 = ADC12MCTL12_;#define ADC12MCTL13_ 0x008D /* ADC12 Memory Control 13 */sfrb ADC12MCTL13 = ADC12MCTL13_;#define ADC12MCTL14_ 0x008E /* ADC12 Memory Control 14 */sfrb ADC12MCTL14 = ADC12MCTL14_;#define ADC12MCTL15_ 0x008F /* ADC12 Memory Control 15 */sfrb ADC12MCTL15 = ADC12MCTL15_;/* ADC12CTL0 内8位控制寄存器位*/#define ADC12SC 0x001 /*采样/转换控制位*/#define ENC 0x002 /* 转换允许位*/#define ADC12TOVIE 0x004 /*转换时间溢出中断允许位*/#define ADC12OVIE 0x008 /*溢出中断允许位*/#define ADC12ON 0x010 /*ADC12内核控制位*/#define REFON 0x020 /*参考电压控制位*/#define REF2_5V 0x040 /*内部参考电压的电压值选择位 ' 0'为1.5V; '1'为2.5V*/#define MSH 0x080 /*多次采样/转换位*/#define MSC 0x080 /*多次采样/转换位*//*SHT0 采样保持定时器0 控制ADC12的结果存贮器MEM0~MEM7的采样周期*/#define SHT0_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT0_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT0_2 2*0x100 /*采样周期=TADC12CLK*16 */ #define SHT0_3 3*0x100 /*采样周期=TADC12CLK*32 */ #define SHT0_4 4*0x100 /*采样周期=TADC12CLK*64 */ #define SHT0_5 5*0x100 /*采样周期=TADC12CLK*96 */ #define SHT0_6 6*0x100 /*采样周期=TADC12CLK*128 */ #define SHT0_7 7*0x100 /*采样周期=TADC12CLK*192 */ #define SHT0_8 8*0x100 /*采样周期=TADC12CLK*256 */ #define SHT0_9 9*0x100 /*采样周期=TADC12CLK*384 */ #define SHT0_10 10*0x100 /*采样周期=TADC12CLK*512 */#define SHT0_11 11*0x100 /*采样周期=TADC12CLK*768 */#define SHT0_12 12*0x100 /*采样周期=TADC12CLK*1024 */ #define SHT0_13 13*0x100 /*采样周期=TADC12CLK*1024 */ #define SHT0_14 14*0x100 /*采样周期=TADC12CLK*1024 */ #define SHT0_15 15*0x100 /*采样周期=TADC12CLK*1024 */ /*SHT1 采样保持定时器1 控制ADC12的结果存贮器MEM8~MEM15的采样周期*/#define SHT1_0 0*0x100 /*采样周期=TADC12CLK*4 */#define SHT1_1 1*0x100 /*采样周期=TADC12CLK*8 */#define SHT1_2 2*0x100 /*采样周期=TADC12CLK*16 */ #define SHT1_3 3*0x100 /*采样周期=TADC12CLK*32 */ #define SHT1_4 4*0x100 /*采样周期=TADC12CLK*64 */#define SHT1_5 5*0x100 /*采样周期=TADC12CLK*96 */ #define SHT1_6 6*0x100 /*采样周期=TADC12CLK*128 */ #define SHT1_7 7*0x100 /*采样周期=TADC12CLK*192 */ #define SHT1_8 8*0x100 /*采样周期=TADC12CLK*256 */ #define SHT1_9 9*0x100 /*采样周期=TADC12CLK*384 */ #define SHT1_10 10*0x100 /*采样周期=TADC12CLK*512 */ #define SHT1_11 11*0x100 /*采样周期=TADC12CLK*768 */ #define SHT1_12 12*0x100 /*采样周期=TADC12CLK*1024 */ #define SHT1_13 13*0x100 /*采样周期=TADC12CLK*1024 */ #define SHT1_14 14*0x100 /*采样周期=TADC12CLK*1024 */ #define SHT1_15 15*0x100 /*采样周期=TADC12CLK*1024 *//* ADC12CTL1 内8位控制寄存器位*/#define ADC12BUSY 0x0001 /*ADC12忙标志位*/#define CONSEQ_0 0*2 /*单通道单次转换*/#define CONSEQ_1 1*2 /*序列通道单次转换*/#define CONSEQ_2 2*2 /*单通道多次转换*/#define CONSEQ_3 3*2 /*序列通道多次转换*/#define ADC12SSEL_0 0*8 /*ADC12内部时钟源*/#define ADC12SSEL_1 1*8 /*ACLK*/#define ADC12SSEL_2 2*8 /*MCLK*/#define ADC12SSEL_3 3*8 /*SCLK*/#define ADC12DIV_0 0*0x20 /*1分频*/#define ADC12DIV_1 1*0x20 /*2分频*/#define ADC12DIV_2 2*0x20 /*3分频*/#define ADC12DIV_3 3*0x20 /*4分频*/#define ADC12DIV_4 4*0x20 /*5分频*/#define ADC12DIV_5 5*0x20 /*6分频*/#define ADC12DIV_6 6*0x20 /*7分频*/#define ADC12DIV_7 7*0x20 /*8分频*/#define ISSH 0x0100 /*采样输入信号反向与否控制位*/#define SHP 0x0200 /*采样信号(SAMPCON)选择控制位*/#define SHS_0 0*0x400 /*采样信号输入源选择控制位 A DC12SC*/#define SHS_1 1*0x400 /*采样信号输入源选择控制位 T IMER_A.OUT1*/#define SHS_2 2*0x400 /*采样信号输入源选择控制位 T IMER_B.OUT0*/#define SHS_3 3*0x400 /*采样信号输入源选择控制位 T IMER_B.OUT1*//*转换存贮器地址定义位*/#define CSTARTADD_0 0*0x1000 /*选择MEM0首地址*/#define CSTARTADD_1 1*0x1000 /*选择MEM1首地址*/#define CSTARTADD_2 2*0x1000 /*选择MEM2首地址*/#define CSTARTADD_3 3*0x1000 /*选择MEM3首地址*/#define CSTARTADD_4 4*0x1000 /*选择MEM4首地址*/#define CSTARTADD_5 5*0x1000 /*选择MEM5首地址*/#define CSTARTADD_6 6*0x1000 /*选择MEM6首地址*/#define CSTARTADD_7 7*0x1000 /*选择MEM7首地址*/#define CSTARTADD_8 8*0x1000 /*选择MEM8首地址*/#define CSTARTADD_9 9*0x1000 /*选择MEM9首地址*/#define CSTARTADD_10 10*0x1000 /*选择MEM10首地址*/#define CSTARTADD_11 11*0x1000 /*选择MEM11首地址*/#define CSTARTADD_12 12*0x1000 /*选择MEM12首地址*/#define CSTARTADD_13 13*0x1000 /*选择MEM13首地址*/#define CSTARTADD_14 14*0x1000 /*选择MEM14首地址*/#define CSTARTADD_15 15*0x1000 /*选择MEM15首地址*//* ADC12MCTLx */#define INCH_0 0 /*选择模拟量通道0 A0 */#define INCH_1 1 /*选择模拟量通道0 A1*/#define INCH_2 2 /*选择模拟量通道0 A2*/#define INCH_3 3 /*选择模拟量通道0 A3*/#define INCH_4 4 /*选择模拟量通道0 A4*/#define INCH_5 5 /*选择模拟量通道0 A5*/#define INCH_6 6 /*选择模拟量通道0 A6*/#define INCH_7 7 /*选择模拟量通道0 A7*/#define INCH_8 8 /*VEREF+*/#define INCH_9 9 /*VEREF-*/#define INCH_10 10 /*片内温度传感器的输出*/#define INCH_11 11 /*(AVCC-AVSS)/2*/ #define INCH_12 12 /*(AVCC-AVSS)/2*/ #define INCH_13 13 /*(AVCC-AVSS)/2*/ #define INCH_14 14 /*(AVCC-AVSS)/2*/ #define INCH_15 15 /*(AVCC-AVSS)/2*/ /*参考电压源选择位*/#define SREF_0 0*0x10 /*VR+ = AVCC; VR- = AVSS*/#define SREF_1 1*0x10 /*VR+ = VREF+; VR- = AVSS*/#define SREF_2 2*0x10 /*VR+ = VEREF+; VR- = AVSS*/#define SREF_3 3*0x10 /*VR+ = VEREF+; VR- = AVSS*/#define SREF_4 4*0x10 /*VR+ = AVCC; VR- = VREF-*/#define SREF_5 5*0x10 /*VR+ = VREF+; VR- = VREF-*/#define SREF_6 6*0x10 /*VR+ = VEREF+; VR- = VREF-*/#define SREF_7 7*0x10 /*VR+ = VEREF+; VR- = VREF-*/#define EOS 0x80 /*序列结束选择位*/MSP430寄存器中文注释----串口寄存器/************************************************************* 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时异步与U CLK相反;同步下降延有效*/#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 /* UART 0 Control */sfrb U0CTL = U0CTL_;#define U0TCTL_ 0x0071 /* UART 0 Transmit Control */sfrb U0TCTL = U0TCTL_;#define U0RCTL_ 0x0072 /* UART 0 Receive Control */sfrb U0RCTL = U0RCTL_;#define U0MCTL_ 0x0073 /* UART 0 Modulation Control */sfrb U0MCTL = U0MCTL_;#define U0BR0_ 0x0074 /* UART 0 Baud Rate 0 */sfrb U0BR0 = U0BR0_;#define U0BR1_ 0x0075 /* UART 0 Baud Rate 1 */sfrb U0BR1 = U0BR1_;#define U0RXBUF_ 0x0076 /* UART 0 Receive Buffer */const sfrb U0RXBUF = U0RXBUF_;#define U0TXBUF_ 0x0077 /* UART 0 Transmit Buffer */sfrb U0TXBUF = U0TXBUF_;/* Alternate register names */#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 /* UART 1 Control */sfrb U1CTL = U1CTL_;#define U1TCTL_ 0x0079 /* UART 1 Transmit Control */ sfrb U1TCTL = U1TCTL_;#define U1RCTL_ 0x007A /* UART 1 Receive Control */ sfrb U1RCTL = U1RCTL_;#define U1MCTL_ 0x007B /* UART 1 Modulation Control */ sfrb U1MCTL = U1MCTL_;#define U1BR0_ 0x007C /* UART 1 Baud Rate 0 */sfrb U1BR0 = U1BR0_;#define U1BR1_ 0x007D /* UART 1 Baud Rate 1 */sfrb U1BR1 = U1BR1_;#define U1RXBUF_ 0x007E /* UART 1 Receive Buffer */ const sfrb U1RXBUF = U1RXBUF_;#define U1TXBUF_ 0x007F /* UART 1 Transmit Buffer */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_;#define UCTL_1_ 0x0078 /* UART 1 Control */sfrb UCTL_1 = UCTL_1_;#define UTCTL_1_ 0x0079 /* UART 1 Transmit Control */ sfrb UTCTL_1 = UTCTL_1_;#define URCTL_1_ 0x007A /* UART 1 Receive Control */ sfrb URCTL_1 = URCTL_1_;#define UMCTL_1_ 0x007B /* UART 1 Modulation Control */ sfrb UMCTL_1 = UMCTL_1_;#define UBR0_1_ 0x007C /* UART 1 Baud Rate 0 */sfrb UBR0_1 = UBR0_1_;#define UBR1_1_ 0x007D /* UART 1 Baud Rate 1 */sfrb UBR1_1 = UBR1_1_;#define RXBUF_1_ 0x007E /* UART 1 Receive Buffer */ const sfrb RXBUF_1 = RXBUF_1_;#define TXBUF_1_ 0x007F /* UART 1 Transmit Buffer */ sfrb TXBUF_1 = TXBUF_1_;。

MSP430f5529中文手册

MSP430f5529中文手册
MSP430F552X 中文手册及例程
一、先写一篇开个头:这样快速闯入 MSP430学习过程
进入各个电子产品公司的网站,招聘里面嵌入式:传统的什么51单片机、 MSP430称做嵌入式微控制器; ARM 是嵌入式微处理器;当然还有 DSP;FPGA。我们现在就不说别的,就说 MSP430单片机,多数想学 MSP430的童鞋,对89C51内核系列的单片机是很熟 悉的,为了加深对 MSP430 系列单片机的认识吗,迅速闯入 MSP430学习过程, 就必须彻底了解 MSP430单片机, 我们不妨将51单片机和 MSP430两者进行一下 比较。

以下几部分模块硬件资源是作为初学者必须要了解学习的。
①WDT 看门狗定时器: 新手们会看到很多编程实例中, 开头都有“WDTCTL = WDTPW + WDTHOLD;”语句。这是 CUP 执行关闭定时器的意思。在刚开始, 我们没必要关心这个, 可以跳过这章节, 只要大概地知道他的作用就好了。 看门狗定时器一般是用于防止程序失效而存在的, 一般是用于完整的程序 中使用。主程序中可不断地清除看门狗定时器的计数值,以防定时器的值 自动计满后使 CPU 复位而重新开始工作。当程序发生错误时,无法正常清 除看门狗的定时值时,则看门狗定时器计数溢出而产生 CPU 复位。

作为430新手, 首先看我们是否准备好以下几样硬件: 电脑(带有并口)1
台,MSP430FET 仿真器1套,MSP430开发实验板1套,和一些 MSP430教程或 电子教程资料等。

选用 MSP430仿真器。购买现成的 MSP430JTAG 仿真器如 TI-MSP430JTAG 选用 MSP430开发板或目标板是学习一个重要的工具,建议购买一个开
⑵.DCO,SMCLK,MCLK,ACLK 各个时钟有什么优点和点。 ⑶.4个时钟信号中,每个时钟的通常频率范围是多少。 ⑷.常规的时基控制寄存器设置和时钟如何从引脚输出等等。 ④TimaA 模块:⑴.初学者需要搞清 TimerA 的三个不同工作模式中 TA、 CCR1、CCR2与 CCR0之间的关系。⑵.搞清楚 TA、CCR1、CCR2与 CCR0之间的 中断向量关系。⑶.综合上面的理解,我们可以结合 TimerA 的例程来进行 相关验证, 只有通过亲自的操作才能有效地记住。 ⑷.利用 TimerA 实现 PWM 信号输出、利用捕获/比较功能实现捕获信号等等。

MSP430入门详细讲解不错的入手机会

MSP430入门详细讲解不错的入手机会

引脚使用举例
控制连接在P5.1口线的发光二极管的亮与熄: 首先、 P51为输出 亮 输出1 熄灭 输出0 ---P5DIR =0x0 2; ---P5OUT = 2 ; ---P5OUT = 0 ;
南京航空航天大学电子中心&TI南航430联合实验室
如何让发光二级管闪烁?
1、亮 2、延时1秒钟 3 3、熄灭 4、延时1秒钟 5、跳转到 步骤1 (演示)
串行密码锁设计
按照顺序:KEY0-KEY1-KEY2 ; KEY1-KEY0-KEY2 ; K0-K0-K0-K1-K2-K0-K2 ; K2-K2-K0-K1-K2 ; 错误状态的清除 很重要!!
南京航空航天大学电子中心&TI南航430联合实验室
如何让单片机发声?
声音是什么? ——声音是震动产生的; 扬声器发声的原理:处在磁场中的有电 流的线圈产生震动,继而发声。 不同的频率产生不同的声音; MSP430的端口可以输出不同的频率; 继而可以推动扬声器产生不同的声音。 下页的程序将发出什么声音呢?
指针类型 18E-38— 39E+38 18E-38— 39E+38 浮点类型
表达式语句(结构) 表达式语句(结构)
条件语句 开关语句 循环语句 返回语句
南京航空航天大学电子中心&TI南航430联合实验室
条件语句
语句表达形式有3种(a、b、c): a if(条件表达式) 语句 b if(条件表达式) 语句1 else 语句2 c if(条件表达式) 语句1 else if(条件表达式) 语句2 else if(条件表达式) 语句3 ……
第二段程序
void s1(void) { for(ff=30;ff<500;ff++) { P6OUT ^= BIT0; // 对输出置反 for(tmp=0;tmp<ff;tmp++); // 延时 } }

msp430标准c语言库函数

msp430标准c语言库函数

ctype.h 字符处理类isalnum int isalnum(int c) 字母还是数字isalpha int isalpha(int c) 是否字母iscntrl int iscntrl(int c) 是否控制码isdigit int isdigit(int c) 是否数字isgraph int isgraph(int c) 是否为可打印的非空字符islower int islower(int c) 是否小写字母isprint int isprint(int c) 是否为可打印字符ispunct int ispunct(int c) 是否为表示标点符号的字符isspace int isspace(int c) 是否为空白字符isupper int isupper(int c) 是否为大写字符isxdigit int isxdigit(int c) 是否为十六进制数tolower int tolower(int c) 转换为小写字符toupper int toupper(int c) 转换为大写字符math.h 数字类acos double acos(double arg) 反余弦函数asin double asin(double arg) 反正弦函数atan double atan(double arg) 反正切函数atan2 double atan2(double arg1,double arg2) 带象限的反正切函数ceil double ceil(double arg) 大于或等于arg的最小正整数cos double cos(double arg) 余弦函数cosh double cosh(double arg) 双余弦函数exp double exp(double arg) 指数函数arg) 双精度的浮点绝对值fabs(doublefabsdoublefloor double floor(double arg) 大于或等于arg的最大正整数fmod double fmod(double arg1,double arg2) 浮点数的余数frexp double frexp(double arg1,int *arg2) 将浮点数分为两部分ldexp(double arg1,int arg2) 乘以2的幂log double log(double arg) 自然对数函数log10 double log10(double arg) 以10为底的对数函数modf double modf(double value,double *iptr) 拆开为整数部分和小数部分pow double pow(double arg1,double arg2) 求幂函数sin double sin(double arg) 正弦函数sinh double sinh(double arg) 双曲正弦sqrt double sqrt(double arg) 平方根函数tan double tan(double arg) 正切函数tanh double tanh(double arg) 双曲正切函数setjmp.h 非局部跳转longjmp void longjmp(jmp_buf env,int val) 长跳转setjmp int setjmp(jmp_buf env) 设置返回点跳转stdio.h 输入和输出类函数intgetchar(void) 获得字符getchar*s) 读字符串*gets(charchargetsprintf int printf(const char *format,…) 写格式化数据putcharvalue) 写字符函数putchar(intint*s) 写字符串函数charputsintputs(constscanf int scanf(const char *format, …) 读格式化数据sprintf int sprintf(char *s,const char *format,) 将格式化数据写入字符串sscanf int sscanf(const char *s,const char *format,…)从字符串中读取格式化数据stdlib.h 通用子程序类abort void abort(void) 非正常结束程序abs int abs(int j) 绝对值函数charatof(const*nptr) 转换ASCII为双精度atofdoubleatoi int atoi(const char *nptr) 转换ASCII为整数atol long atol(const char *nptr) 转换ASCII为长整形*bsearch(constvoid 在数组中搜索voidbsearch*base,void*key,constsize,nmemb,size_tsize_tvoid(*compare)(constint*_base));void*_key,constcalloc void *calloc(size_t nelem,size_t elsize) 为目标数组分配存储器单元div div_t div(int numer,int denom) 除法运算函数status) 结束程序exit(intexitvoid*ptr) 释放存储器单元free(voidvoidfreej) 整形数取绝对值labs long int labs(longintldiv ldiv_t ldiv(long int numer,long int denom) 长整形除法size) 分配存储器*malloc(size_tvoidmallocqsort void qsort(const void *base, 数组排序size_t nmemb,size_t size,int (*compare)(const void*_key,const void *_base));rand(void) 随机数生成函数intrandrealloc void *realloc(void *ptr,size_t,size) 重新分配存储器单元函数srand void srand(unsigned int seed) 设置随机数(的种子)strtod double strtod(const char 将字符串转换为双精度数**endptr)*nptr,charstrtol long int strtol(constchar 将字符串转换为长整形数**endptr,intase)*nptr,charstrtoul unsigned long int strtoul 字符串转换为无符号整形数char*nptr,charconstint)**endptr,basestring.h 字符串处理类memchr void *memchr(const void *s,int c,size_t n) 在存储器中搜索字符memcmp int memcmp(const void *s1,const void *s2,size_t n)比较存储器内容memcpy void *memcpy(void *s1,const void *s2,size_t n) 拷贝存储器内容memmove void *memmove(void *s1,const void *s2,size_t n)移动存储器内容memset void *memset(void *s,int c,size_t n) 置存储器strcat char *strcat(char *s1,const char *s2) 逻辑字符串strchr char *strchr(const char*s,int c) 在字符串中找某一个字符strcmp int strcmp(const char *s1,const char *s2) 比较两个字符串strcoll int strcoll(const char *s1,const char *s2) 比较字符串strcpy char *strcpy(char *s1,const char *s2) 拷贝字符串strcspn size_t strcspn(const char *s1,const char *s2)在字符串中跨过被排除的字符strerror char *strerror(interrnum) 给出一个错误信息字符串char*s) 计算字符串长度函数size_tstrlen(conststrlenstrncat char *strncat(char *s1,const char *s2, size_t n)将指定数量的字符与字符串连接起来strncmp int strncmp(const char *s1,const char *s2, size_t n) 将指定数量的字符与字符串相比较strncpy har *strncpy(char *s1,const char *s2, size_t n)在字符串中复制指定的字符strpbrk char *strpbrk(const char *s1,const char *s2)在字符串中寻找任何指定的字符strrchr char *strrchr(const char *s,int c) 从字符串的右端开始寻找字符strspn size_t strspn(const char *s1,const char *s2) 在字符串中统计和分析字符strstr char *strstr(const char *s1,const char *s2) 在字符串中搜索子字符串strtok char *strtok(char *s1,const char *s2) 将标志前的字符剪掉strxfrm size_t strxfrm(char *s1,const char *s2,size_t n) 转换字符串并返回其长度。

MSP430单片机实用C语言程序基础

MSP430单片机实用C语言程序基础

MSP430系列单片机实用C语言程序设计——March 2, 2011扩展的关键字1.asm也可以写成__asm。

功能是在C程序中直接嵌入汇编语言。

语法:asm(“string”);其中string必须是有效的汇编语句。

2.__interrupt放在函数前面,标志中断函数。

下面这段程序是异步串行口UART0的接收中断函数。

UART0RX_VECTOR为异步串行口UART0的接收中断向量。

举例:#pragma vector=UART0RX_VECTOR__interrupt void UART0_R(void) //UART0接收中断{TXBUF0=RXBUF0;}3.__monitor放在函数前面,功能是但这一函数执行的时候自动关闭中断。

应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应。

4.__no_init放在全局变量前面,功能是使程序启动时不为变量赋初值。

5.__raw编译中断函数时,编译器会自动生成一段代码,首先保存当时所用到CPU内寄存器的内容,退出中断程序时再进行恢复。

将__raw放在中断函数前可以禁止保存CPU内寄存器的过程,当然退出时也不会恢复。

是否为中断函数使用此关键字要根据需要而定。

6.__regvar放在变量前面,作用是声明变量为寄存器变量。

可以用于整数、指针、32位浮点数以及只含有一个元素的结构和联合。

寄存器变量的地址只能为R4或者R5,也不能用指针指向这个寄存器变量,而且必须用__no_init禁止初始化。

如:__regvar __no_init unsigned char q0 @ __R4;其他不常用的关键字还有:__data16、__intrinsic、__noreturn、__root、__task、__word16。

内部函数本节将介绍内部函数的原型和功能。

1.__bcd_add_shortunsigned short __bcd_add_short(unsigned short, unsigned short);功能:两个16位BCD格式的数相加,返回和。

MSP430G2553寄存器资料讲解

MSP430G2553寄存器资料讲解

MSP430G2553学习笔记常用赋值运算符:清除:&=~ ,置位:|= ,测试:&= ,取反:^= ,看门狗模块:WDT(看门狗)WDTCTL 看门狗定时器控制寄存器15--8 7 6 5 4 3 2 1 0口令HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0IS1,IS0 选择看门狗定时器的定时输出,T是WDTCNT的输入时钟源周期0 T x 2(15)1 T x 2(13)2 T x 2(9)3 T x 2(6)SSEL 选择WDTCNT的时钟源0 SMCLK1 ACLKIS0、IS1、SSEL可确定WDT定时时间,WDT只能定时8种和时钟源相关的时间WDT可选的定时时间(晶体为32768HZ,SMCLK=1MHZ)SSEL IS1 IS0 定时时间/ms0 1 1 0.056 Tsmclk x 2(6)0 1 0 0.5 Tsmclk x 2(9)1 1 1 1.9 Taclk x 2(6)0 0 1 8 Tsmclk x 2(13)1 1 0 16 Taclk x 2(9)0 0 0 32 Tsmclk x 2(15)(PUC复位后的值)1 0 1 250 Taclk x 2(13)1 0 0 1000 Taclk x 2(15)CNTCL当该位为1时,清除WDTCNTTMSEL 工作模式选择0 看门狗模式1 定时器模式NMI 选择RST/NMI引脚功能,在PUC后被复位0 RST/NMI引脚为复位端1 RST/NMI引脚为边沿触发的非屏蔽中断输入NMIES 选择中断的边沿触发方式0 上升沿触发NMI中断1 下降沿触发NMI中断HOLD 停止看门狗定时器工作,降低功耗0 WDT功能激活1 时钟禁止输入,计数停止WDT(看门狗)配置语句WDTCTL=WDTPW+WDTHOLD;//将WDTPW+WDTHOLD赋值给WDTCTL,关闭看门狗定时器控制寄存器(Stop watchdogtimer)IE1 |= WDTIE;//使能WDT中断WDTCTL = WDT_ADL Y_1000;//WDT 1 s / 4间隔计时器WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES;//WDTCTL 由高8位口令和低8位控制命令组成,要写入操作WDT的控制命令,出于安全原因必须先正确写入高字节看门狗口令。

msp430基础知识

msp430基础知识
4:可以实现串行通信
5:完善的中断服务功能。
6:4种计数功能的选择
7:8种输出计数功能的选择。
8:支持多种时序控制
9:DMA使能
TAR 16位计数器
1:修改Timer _A:当计数时钟不是MLCK时,写入应该计数器在计数器停止计数时,因为它与CPU不同步,可能引起时间的竞争。
2:增计数模式
捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器。因为CCR0为16位寄存器,所以该模式适用于定时周期小于65536的连续计数情况。计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。
LFXT1CLK:低频时钟源
XT2CLK:高频时钟源
DCOCLK:数字控制RC振荡器
时钟发生器的原理说明
问题的提出:
1: 高频,以便对系统硬件请求和事件作出快速的响应。
2:低频 以便将电流消耗降至最小
{
;
}
基本定时器
MSP430具有基本定时器(Basic Timer1),Basic Timer1经常用在低功耗应用中,它的工作目的就是支持软件和外围模块工作在低频率、低功耗条件下。Basic Timer1通过对SMCLK 和ACLK进行分频,向其他外围模块提供低频率控制信号。Basic Timer1非常适合于周期性地产生中断
。(F14系列没有该定时器)
Timer_A 的特性
1:输入时钟可以有多种选择,可以是慢始终、快时钟以及外部时钟。
2:没有自动重装时间常数功能,但产生的定时脉冲或PWM(脉宽调制)信号没有软件带来的误差。
3:不仅能捕获外部事件发生的时间还可以锁定其发生时的高低电平。

MSP430学习总结

MSP430学习总结

MSP430学习总结MSP430学习总结前言这次主要看的资料是MSP430F425型号的,与MSP430F169有点区别,但由于MSP430单片机采用模块化结构,在不同型号的单片机中,同一种模块的使用方法和寄存器都是相同的。

下面会对它们的功能和区别加以说明。

一、MSP430单片机的特点1、我觉得MSP430最大的特点就是超低功耗,430之所以能够在低功耗的条件下运行,主要是由于引入了“时钟系统”的概念,和采用模块化结构。

让CPU可以间歇性的工作,节省功耗。

在MSP430单片机中,通过时钟配置可以产生3种时钟:MCLK:主时钟,MCLK是专门为CPU运行提供的时钟,MCLK配置的越高,CPU执行的速度就越快。

一旦关闭MCLKE,CPU 就停止工作,所以在超低功耗中通过间接开启MCLK的方式降低功耗。

SMCLK:子系统时钟,为单片机内部某些高速设备提供时钟,并且SMCLK是独立于MCLK的,关闭MCLK让CPU停止工作,子系统SMCLK开启,仍然可以使外设继续工作。

ACLK:活动时钟;ACLK一般是由32.768KHz晶振直接产生的低频时钟,在单片机运行时一般不关闭,和定时器使用间接唤醒CPU。

时钟系统对于3种时钟不同程度的关闭,就可以进入不同的低功耗模式(低功耗在下面讨论)。

2、MSP430单片机采用模块化结构,每一种模块都具有独立而完整的结构,这样就可以单独开启或者关闭某些模块,只需要激活某些使用的模块,以节省电力。

3、MSP430单片机的内核是16位RISC处理器,其运算能力和速度都具有一定的优势。

MSP430还有其它的一些优势在这里就不一一列举了。

二、MSP430单片机的内部资源1、I/O口寄存器PxIN: Px口输入寄存器PxOUT: Px口输出寄存器PxDIR : Px口方向寄存器 0=输入 1=输出PxSET: Px口第二功能选择寄存器 0=普通I/O 1=第二功能使用总结:以上的4个寄存器是所有I/O都具有的,在使用I/O 口之前首先要设置PxDIR,对于要使用第二功能的还要设置PxSET 下面介绍的是430中P1,P2口引发中断需要设置的寄存器(MSP430单片机只有P1、P2口能引发中断)PxIE : Px口中断允许寄存器 0=不允许 1=允许PxIES : Px口中断沿选择寄存器0=上升沿1=下降沿PxIFG :Px口中断标志位寄存器 0=中断条件不成立1=中断条件曾经成立(说明:无论中断是否被允许,也不论是否正在执行中断服务程序,只要I/O满足中断条件,PxIFG的相应位就会置1,只能通过软件清除,这个可以用来判断哪一位I/O发生了中断,也不会漏掉每一次中断。

msp430各功能模块的介绍

msp430各功能模块的介绍

各个时钟信号源介绍如下:1、LFXT1CLK:低频/高频时钟源。

可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器。

2、XT2CLK:高频时钟源。

需要外接两个震荡电容器。

可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器和外部时钟输入。

较常用的晶体是8MHz的。

3、DCOCLK:内部数字可控制的RC振荡器。

MSP430单片机时钟模块提供3个时钟信号以供给片内各部分电路使用,这3个时钟信号分别是:(1)ACLK:辅助时钟信号。

ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后得到的。

由BCSCTL1寄存器设置DIV A相应位来决定分频因子。

ACLK可提供给CPU外围功能模块做时钟信号使用。

(2)MCLK:主时钟信号。

MCLK是由3个时钟源所提供的。

它们分别是:LFXT1CLK、XT2CLK、和DCO时钟源信号。

MCLK主要用于MCU和相关模块做时钟。

同样可设置相关寄存器来决定分频因子及相关设置。

(3)SMCLK:子系统时钟。

SMCLK由2个时钟源信号提供,他们分别是XT2CLK 和DCO。

如果是F11或F11X1系列单片机,则由LFXT1CLK代替XT2CLK。

同样可设置相关寄存器来决定分频因子及相关的设置。

低频振荡器LFXT1:LFXT1支持超低功耗,它在低频模式下使用一个32768Hz的晶体。

不需要任何电容因为在低频模式下内部集成了电容。

低频振荡器也支持高频模式和高速晶体,但连接时每端必须加电容。

电容的大小根据所接晶体频率的高低来选择。

低频振荡器在低频和高频模式下都可以选择从XIN引脚接入一个外部输入时钟信号,但所接频率必须根据所设定的工作模式来选择,并且OSCOFF位必须复位。

高频振荡器LFXT2:LFXT2作为MSP430的第二晶体振荡器。

与低频相比,其功耗更大。

高频晶体真大气外接在XIN2和XOUT2两个引脚,并且必须外接电容。

MSP430各个控制寄存器

MSP430各个控制寄存器

时钟位清除:&=~,BIC;位设置:|=,BIS;位测试:&=,BIT1.DCOCTLMODx:调制选择。

控制在DCOx选择的频率和下一个更高频率之间的转换;混合f dco 和f dco+1;2.BCSCTL1XT2OFF:控制XT2振荡器的开/关(1/0);XTS:选择低速振荡器的低频模式(0)、高频模式(1);DIVAx:选择ACLK的分频系数,值0,1,2,3:分频系数/1,/2,/4,/8;RSELx:电阻选择。

值为0,频率最低,值为7,频率最高。

选择DCO 16个频率中的一个。

DCOR=0时,RSEL3无效;3.BCSCTL2高速晶体振荡器(XT2),低速晶体振荡器。

DIVMx:MCLK分频因子。

值为0,1,2,3,分频因子:1,2,4,8.;SELS:选择SMCLK的时钟源。

0/1:DCOCLK/高速晶体振荡器;DIVSx:分频因子;DCOR:选择DCO寄存器,内部寄存器/外部寄存器:0/1;4.BCSCTL3XT2Sx XT2范围选择,选择XT2的频率范围,00/01/10/11:0.4~1MHZ/1~3MHZ/3~16MHZ/0.4~16MHZ外部数字时钟源;LFXT1Sx,低频时钟选择和LFXT1范围选择。

XTS=0时,在LFXT1和VLO之间选择;XTS=1,选择LFXT1的频率范围。

XTS=0时,00/01/10/11:LFXT1上的32768hz晶体/保留/VLOCLK/外部数字时钟源;1pf/6pf/10pf/12.5pf;XT2OF,XT2振荡器失效,0/1:不存在失效条件/存在失效条件;LFXT1OF,LFXT1振荡器失效,0/1 :不存在失效条件/存在失效条件;中断使能IE1-OFIE;中断标志IFG1-OFIFG;2.看门狗WDTCTL(高8位为口令WDTPW=0x5A00u)HOLD:用于停止看门狗工作,0/1 工作/时钟输入禁止;NMIES:看门狗定时器的NMI中断触发沿,0/1 上升沿/下降沿;NMI: RST/NMI管脚的选择,0/1 RST/NMI;TMSEL:看门狗工作模式的选择,0/1 看门狗/定时器;CNTCL:清除看门狗定时器(wdtcnt),0/1 无影响/清除;SEL:看门狗时钟源的选择,0/1 SMCLK/ACLK;IS0,IS1:看门狗时间间隔的选择,00/01/10/11:/32768 /512 /8192 /64;3.TIMER_A(1)TACTL(10~15未用)ID1,ID0:选择输入时钟的分频系数,00/01/10/11:不分频/0.5/0.25/0.125;MC1,MC0:选择Timer_A的工作模式,00/01/10/11:停止/增计数/连续计数/增减计数;CLR:定时器A的清除控制,1 :TAR里内容、计数方向清除;TAIE:中断使能,0/1 禁止/允许中断;TAIFG:中断标志;(2)TAIV寄存器中断向量寄存器,用于判断是CCR1、CCR2、TAIFG中哪个中断标志请求;(3)CCTLnCAPMOD1~0,选择捕获模式,00/01/10/11 :禁止捕获/上升沿/下降沿/上升沿和下降沿;CCIS1~0,捕获/比较输入信号选择,00/01/10/11 :CCIXA/CCIXB/GND/VCC;SCCI:同步捕获/比较输入,读出~;CAP:捕获模式选择,0/1 :比较模式/捕获模式;OUTMOD2~0:输出模式!CCIE:捕获比较的中断使能位,0/1 禁止中断/允许中断;CCI:捕获/比较输入信号,选择的输入信号通过该位读出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几个重要的内联函数(内联函数定义在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的值。

C.__get_SR_register_on_exit(void)
功能:用于一个中断函数或者不可中断函数
(标志为__monitor)返回时,返回状态寄存器SR的值。

D.__bcd_add_short(unsigned short,unsigned short);
功能:两个16为BCD格式的数字相加,返回和。

E.__bcd_add_long(unsigned long,unsigned long);
功能:两个32位BCD格式的数字相加,返回和。

F.__delay_cycles(x);
系统自带的精确延时。

x必须是常量或则是常量表达式,如果是变量则编译报错!延时的时间为x乘以MCLK的时钟周期。

相关文档
最新文档