MSP430几种常用内置函数解释
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

#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单片机深入学习笔记

复位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串口接收中断#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指令系统

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复习资料

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寄存器的中文解释,熟知这些写起程序来很方便

#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

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时钟源分频。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的时钟周期。