msp430f5529寄存器怎麼配置
『壹』 msp430單片機到底有哪些寄存器,分別幹嘛用
寄存器實在太多了。。我有個文檔給你看看吧、、
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_ 0x0120
sfrw WDTCTL = WDTCTL_;
#define WDTIS0 0x0001 /*選擇WDTCNT的四個輸出端之一*/
#define WDTIS1 0x0002 /*選擇WDTCNT的四個輸出端之一*/
#define WDTSSEL 0x0004 /*選擇WDTCNT的時鍾源*/
#define WDTCNTCL 0x0008 /*清除WDTCNT端: 為1時 從0開始計數*/
#define WDTTMSEL 0x0010 /*選擇模式 0: 看門狗模式; 1: 定時器模式*/
#define WDTNMI 0x0020 /*選擇NMI/RST 引腳功能 0:為 RST; 1:為NMI*/
#define WDTNMIES 0x0040 /*WDTNMI=1時.選擇觸發延 0:為上升延 1:為下降延*/
#define WDTHOLD 0x0080 /*停止看門狗定時器工作 0:啟動;1:停止*/
#define WDTPW 0x5A00 /* 寫密碼:高八位*/
/* SMCLK= 1MHz定時器模式 */
#define WDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL /* TSMCLK*2POWER15=32ms 復位狀態 */
#define WDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.192ms " */
#define WDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.512ms " */
#define WDT_MDLY_0_064 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER6=0.512ms " */
/* ACLK=32.768KHz 定時器模式*/
#define WDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=1000ms " */
#define WDT_ADLY_250 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER13=250ms " */
#define WDT_ADLY_16 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9=16ms " */
#define WDT_ADLY_1_9 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TACLK*2POWER6=1.9ms " */
/* SMCLK=1MHz看門狗模式 */
#define WDT_MRST_32 WDTPW+WDTCNTCL /* TSMCLK*2POWER15=32ms 復位狀態 */
#define WDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.192ms " */
#define WDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.512ms " */
#define WDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER6=0.512ms " */
/* ACLK=32KHz看門狗模式 */
#define WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=1000ms " */
#define WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER13=250ms " */
#define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9=16ms " */
#define WDT_ARST_1_9 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /* TACLK*2POWER6=1.9ms " */
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 /*采樣信號輸入源選擇控制位 ADC12SC*/
#define SHS_1 1*0x400 /*采樣信號輸入源選擇控制位 TIMER_A.OUT1*/
#define SHS_2 %2
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/huxinhui/archive/2010/01/16/5199105.aspx
『貳』 晶元的寄存器配置地址是物理地址嗎
晶元的寄存器配置地址不一定是物理地址。寄存器配置地址一般是邏輯地址,即由程序員定義的虛擬地址。在程序執行時,虛擬地址需要通過地址映射轉換為物理地址才能在內存中訪問對應的數據或者硬體資源,這個過程是由操作系統負責管理的。因此,寄存器配置地址實際上是在程序運行時動態分配的,而不是固定的物理地址。
拓展:扮野在計算機中,地址分為邏輯地址和物理地址。邏輯地址是臘缺耐由程序員定義的虛擬地址,而物理輪春地址是實際的硬體地址。在程序執行時,邏輯地址需要通過地址映射轉換為物理地址才能在內存中訪問對應的數據或者硬體資源。這個過程是由操作系統的內存管理單元(MMU)負責管理的。通過地址映射,操作系統可以將虛擬地址映射到物理地址,並且實現地址空間的隔離和保護。這樣可以保證每個程序都有自己獨立的地址空間,避免了程序之間的相互干擾和沖突。
『叄』 1602如何與msp430f5529連接,最好有圖,謝謝
/* ********** 硬體連接配悉鎮知置 *********** */
//數據IO口 如下圖選擇的是P2口(可根據硬體連接修改)
#define LCD_Dat_DIR P2DIR
#define LCD_Dat_IN P2IN
#define LCD_Dat_OUT P2OUT
//控制IO口如下圖選擇的是P0口(附件程序默認的是P6,可根睜消據需要修改)旅伍
#define LCD_Con_DIR P6DIR
#define LCD_Con_OUT P6OUT
『肆』 msp430使用
在MSP430F149中TBCTL表示定時器B的控制寄存器。MCx是該寄存器的第5-4位,是定時器B的工作模式控制位,表示定時器的工作方式。
在頭文件中
#define MC_0 (0*0x10u) /* Timer A mode control: 0 - Stop */
這是一個宏定義,MC_0的值即為:0*0x10u,它是一衫襲個無符號乘法運算,結果就是為0,即MC_0的值實際為:0x00(因為這個值比較特殊,所以現用MC_2舉例)如果是#define MC_2 (2*0x10u) ,則MC_2=0x20,二進制為:0010 0000,正好第5位為1。喊早
TBCTL & MC_0 是TBCTL與MC_0按位相與的運鄭塌雀算,其作用就是判斷MCx(TBCTL第5位和第4位的值)是否為0。
『伍』 msp430設置什麼寄存器可以改變串口波特率
這里說到的波特率是片子UART的波特率嗎?
如果是的話就繼續往下看,不是的話就略過。
UART這一塊是MSP430里較復雜的一部分,看一下下面的圖片,整悶旅慎個相關模塊的架螞敬構圖
具體該怎麼鎮逗配置還需要仔細閱讀片子的SPEC,結合官方常式會更容易上手。
祝好運!