❶ 如何使用C語言來編寫MSP430的高質量代碼
微處理器一般用於特定環境和特定用途,出於成本、功耗和體積的考慮,一般都要求盡量節省使用資源,並且,由於微處理器硬體一般都不支持有符號數、浮點數的運算,且運算位有限,因此,分配變數時必須仔細。另外要說明的是,速度和存儲器的消耗經常是2個不可兼顧的目標,在多數情況下,編程者必須根據實際情況作出權衡和取捨。
需要注意的事項如下:
1) 通常在滿足運算需求的前提下,盡量選擇為變數定義位元組少的數據類型。
比如最常用的int和char,int是16位的,char是8位的,如果沒有必要,不要使用int,而且使用char也最好使用unsigned char。運行時,可以在變數窗口看到,使用類型為unsigned char的變數是16進制的格式,而使用int的是十進制格式,如果char沒有定義為unsigned,會出現負號,如果沒有必要的話,在430中是不需要負數的。
2) 盡量不用過長的數據類型,如long、long long和double
3) MSP430的C編譯器不支持位定址,所以運算中盡量減少位操作,對於只有「是」和「否」的變數,如果RAM容量允許,則可分配為unsigned char類型,可提高運算速度。如果分配為某位元組的某個位,可以減少存儲器的消耗,但是會降低運算速度
4) 避免使用浮點數,盡量使用定點數進行小數運算。如果必須使用浮點數,則盡量用32位的float,而不是64位的double
5) 盡量將變數分配為無符號數據類型
6) 對於指針變數,如果聲明後其值不再改變,則聲明為const類型,這樣編譯器編譯時能更好的優化生成的代碼
7) 盡可能的使用局部變數而非全局變數或者靜態變數(static)。這樣有利於編譯器編譯時更好的優化生成的代碼
8)避免對局部變數使用 &取地址符。因為這樣會使編譯器無法把此變數放在CPU的寄存器中,而是放在RAM中,從而失去了優化的機會
9) 僅在模塊內使用的變數聲明為static,有利於優化代碼
10) 如果堆棧空間有限,盡量減少函數調用的層次和遞歸調用
11) 如果傳送參數過多,可將參數組成一個數組或者結構體,然後用指針傳遞
12) 某些變數在中斷程序和普通級別程序中都會被用到,所以必須加以保護。
將變數聲明為volatile類型,編譯器優化時就不會移動它,對它的訪問不會被延遲。
為保證對volatile的變數不被打斷,為此,可以在訪問它的部分(即訪問它的函數)前面加上__moniter的聲明
❷ MSP430單片機用C語言編寫程序需要用什麼軟體
MSP430用IAREmbeddedWorkbench軟體編寫程序和編譯代碼。
MSP430單片機稱之為混合信號處理器,是由於其針對實際應用需求,將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個晶元上,以提供「單片機」解決方案。該系列單片機多應用於需要電池供電的攜帶型儀器儀表中。
(2)msp430編程語言擴展閱讀:
MSP430系列部分產品具有快閃記憶體,在系統設計、開發、調試和實際應用中具有明顯優勢。TI公司引入了具有快閃記憶體和JTAG邊界掃描技術的廉價開發工具MSP-Fet430x110,並將國際先進的JTAG技術和Flash在線編程技術引入到MSP430中。
這種將Flash技術與FET開發工具相結合,具有方便、便宜、實用等優點,為用戶提供了更理想的原型開發方式。
❸ 問一個MSP430 C語言編程的問題,希望高手幫下忙。 我剛學這個,一頭霧水。
msp430不能直接用位操作,所以給某個寄存器的某一位賦0或賦1就只能用邏輯運算來完成,例如P1OUT |= BIT0是將P1OUT的第0位置1,P1OUT &= ~BIT2是將P1OUT的第二位清零,看你程序里的這兩句:
IFG1&=~(URXIFG0+UTXIFG0); // 這一句的意思是將IFG1寄存器里的URXIFG0和UTXIFG0位清零
IE1|=URXIE0; // 這一句是將IE1寄存器里的URXIE0位置1
具體URXIIFG0,UTXIFG0,URXIE0是那些寄存器的第幾位,看看頭文件里的掩模位的聲明就明白了。
❹ MSP430上拉電阻用編程語言怎麼設置
舉個例子
void Init_keypad_Port(void)
{
P1SEL&=~KEY_MOD;//設置鍵盤埠為I/O埠
P1DIR|=KEY_MOD;
P1REN|=KEY_MOD+BIT7;
P1OUT|=KEY_MOD;
P1OUT&=~BIT7;//設置模式選擇埠為下拉電阻
P1REN&=~(KEY_MOD+BIT7);
P1DIR&=~(KEY_MOD+BIT7);//設置行埠為輸入口
P1IFG=0;
P1IES&=~BIT7;//設置手動模式埠上升沿中斷
P1IE|=BIT7;//手動模式選擇埠中斷使能
}
這是我編輯項目里的一段程序,裡面有用到,你自己可以在看看書,很容易理解的
PxREN是設置上拉或者下拉的使能寄存器,置一使能,使能後,通過PxOUT設置上拉還是下拉
❺ msp430編程
MSP430系列單片機簡介
原作者: 張俊謨
1、MSP430 單片機的發展
MSP430 系列是一個 16 位的、具有精簡指令集的、超低功耗的混合型單片機,在 1996 年問世,由於它具有極低的功耗、豐富的片內外設和方便靈活的開發手段,已成為眾多單片機系列中一顆耀眼的新星。回憶 MSP430 系列單片機的發展過程,可以看出有這樣三個階段:
開始階段 從 1996 年推出 MSP430 系列開始到 2000 年初,這個階段首先推出有 33X 、 32X 、 31X 等幾個系列,而後於 2000 年初又推出了 11X 、 11X1 系列。
MSP430 的 33X 、 32X 、 31X 等系列具有 LCD 驅動模塊,對提高系統的集成度較有利。每一系列有 ROM 型( C )、 OTP 型( P )、和 EPROM 型( E )等晶元。 EPROM 型的價格昂貴,運行環境溫度范圍窄,主要用於樣機開發。這也表明了這幾個系列的開發模式,即:用戶可以用 EPROM 型開發樣機;用 OTP 型進行小批量生產;而 ROM 型適應大批量生產的產品。
2000 年推出了 11X/11X1 系列。這個系列採用 20 腳封裝,內存容量、片上功能和 I/O 引腳數比較少,但是價格比較低廉。
這個時期的 MSP430 已經顯露出了它的特低功耗等的一系列技術特點,但也有不盡如人意之處。它的許多重要特性,如:片內串列通信介面、硬體乘法器、足夠的 I/O 引腳等,只有 33X 系列才具備。 33X 系列價格較高,比較適合於較為復雜的應用系統。當用戶設計需要更多考慮成本時, 33X 並不一定是最適合的。而片內高精度 A/D 轉換器又只有 32X 系列才有。
尋找突破,引入 Flash 技術 隨著 Flash 技術的迅速發展, TI 公司也將這一技術引入 MSP430 系列中。在 2000 年 7 月推出 F13X/F14X 系列,在 2001 年 7 月到 2002 年又相繼推出 F41X 、 F43X 、 F44X 這些全部是 Flash 型單片機。
F41X 單片機是目前應用比較廣的單片機,它有 48 個 I/O 口, 96 段 LCD 驅動。 F43X 、 F44X 系列是在 13X 、 14X 的基礎上,增加了液晶驅動器,將驅動 LCD 的段數由 3XX 系列的最多 120 段增加到 160 段。並且相應地調整了顯示存儲器在存儲區內的地址,為以後的發展拓展了空間。
MSP430 系列由於具有 Flash 存儲器,在系統設計、開發調試及實際應用上都表現出較明顯的優點。這是 TI 公司推出具有 Flash 型存儲器及 JTAG 邊界掃描技術的廉價開發工具 MSP-FET430X110 ,將國際上先進的 JTAG 技術和 Flash 在線編程技術引入 MSP430 。
這種以 Flash 技術與 FET 開發工具組合的開發方式,具有方便、廉價、實用等優點,給用戶提供了一個較為理想的樣機開發方式。
另外, 2001 年 TI 公司又公布了 BOOTSTRAP 技術,利用它可在燒斷熔絲以後只要幾根線就可更改並運行內部的程序。這為系統軟體的升級提供了又一方便的手段。 BOOTSTRAP 具有很高的保密性,口令可達到 32 個位元組的長度。
蓬勃發展階段 在前一階段,引進新技術和內部進行調整之後,為 MSP430 的功能擴展打下了良好的基礎。於是 TI 公司在 2002 年底和 2003 年期間又陸續推出了 F15X 和 F16X 系列的產品。
在這一新的系列中,有了兩個方面的發展。一是從存儲器方面來說,將 RAM 容量大大增加,如 F1611 的 RAM 容量增加到了 10KB 。這樣一來,希望將實時操作系統( RTOS )引入 MSP430 的,就不會因 RAM 不夠而發愁了。二是從外圍模塊來說,增加了 I 2 C 、 DMA 、 DAC12 和 SVS 等模塊。
在 2003 年中, TI 公司還推出了專門用於電量計量的 MSP430FE42X 和用於水表、氣表、熱表上的具有無磁感測模塊的 MSP430FW42X 單片機。我們相信由於 MSP430 的開放性的基本架構和新技術的應用,新的 MSP430 的產品品種必將會不斷出現。
2、 MSP430 單片機的特點
MSP430 系列單片機的迅速發展和應用范圍的不斷擴大,主要取決於以下的特點。
強大的處理能力 MSP430 系列單片機是一個 16 位的單片機,採用了精簡指令集( RISC )結構,具有豐富的定址方式( 7 種源操作數定址、 4 種目的操作數定址)、簡潔的 27 條內核指令以及大量的模擬指令;大量的寄存器以及片內數據存儲器都可參加多種運算;還有高效的查表處理指令;有較高的處理速度,在 8MHz 晶體驅動下指令周期為 125 ns 。這些特點保證了可編制出高效率的源程序。
在運算速度方面, MSP430 系列單片機能在 8MHz 晶體的驅動下,實現 125ns 的指令周期。 16 位的數據寬度、 125ns 的指令周期以及多功能的硬體乘法器(能實現乘加)相配合,能實現數字信號處理的某些演算法(如 FFT 等)。
MSP430 系列單片機的中斷源較多,並且可以任意嵌套,使用時靈活方便。當系統處於省電的備用狀態時,用中斷請求將它喚醒只用 6us 。
超低功耗 MSP430 單片機之所以有超低的功耗,是因為其在降低晶元的電源電壓及靈活而可控的運行時鍾方面都有其獨到之處。
首先, MSP430 系列單片機的電源電壓採用的是 1.8~3.6V 電壓。因而可使其在 1MHz 的時鍾條件下運行時, 晶元的電流會在 200~400uA 左右,時鍾關斷模式的最低功耗只有 0.1uA 。
其次,獨特的時鍾系統設計。在 MSP430 系列中有兩個不同的系統時鍾系統:基本時鍾系統和鎖頻環( FLL 和 FLL+ )時鍾系統或 DCO 數字振盪器時鍾系統。有的使用一個晶體振盪器( 32768Hz ) , 有的使用兩個晶體振盪器)。由系統時鍾系統產生 CPU 和各功能所需的時鍾。並且這些時鍾可以在指令的控制下,打開和關閉,從而實現對總體功耗的控制。
由於系統運行時打開的功能模塊不同,即採用不同的工作模式,晶元的功耗有著顯著的不同。在系統中共有一種活動模式( AM )和五種低功耗模式( LPM0~LPM4 )。在等待方式下,耗電為 0.7uA ,在節電方式下,最低可達 0.1uA 。
系統工作穩定 上電復位後,首先由 DCOCLK 啟動 CPU ,以保證程序從正確的位置開始執行,保證晶體振盪器有足夠的起振及穩定時間。然後軟體可設置適當的寄存器的控制位來確定最後的系統時鍾頻率。如果晶體振盪器在用做 CPU 時鍾 MCLK 時發生故障, DCO 會自動啟動,以保證系統正常工作;如果程序跑飛,可用看門狗將其復位。
豐富的片上外圍模塊 MSP430 系列單片機的各成員都集成了較豐富的片內外設。它們分別是看門狗( WDT )、模擬比較器 A 、定時器 A ( Timer_A )、定時器 B ( Timer_B )、串口 0 、 1 ( USART0 、 1 )、硬體乘法器、液晶驅動器、 10 位 /12 位 ADC 、 I 2 C 匯流排直接數據存取( DMA )、埠 O ( P0 )、埠 1~6 ( P1~P6 )、基本定時器( Basic Timer )等的一些外圍模塊的不同組合。其中,看門狗可以使程序失控時迅速復位;模擬比較器進行模擬電壓的比較,配合定時器,可設計出 A/D 轉換器; 16 位定時器( Timer_A 和 Timer_B )具有捕獲 / 比較功能,大量的捕獲 / 比較寄存器,可用於事件計數、時序發生、 PWM 等;有的器件更具有可實現非同步、同步及多址訪問串列通信介面可方便的實現多機通信等應用;具有較多的 I/O 埠,最多達 6*8 條 I/O 口線; P0 、 P1 、 P2 埠能夠接收外部上升沿或下降沿的中斷輸入; 12/14 位硬體 A/D 轉換器有較高的轉換速率,最高可達 200kbps ,能夠滿足大多數數據採集應用;能直接驅動液晶多達 160 段;實現兩路的 12 位 D/A 轉換;硬體 I 2 C 串列匯流排介面實現存儲器串列擴展;以及為了增加數據傳輸速度,而採用直接數據傳輸( DMA )模塊。 MSP430 系列單片機的這些片內外設為系統的單片解決方案提供了極大的方便。
方便高效的開發環境 目前 MSP430 系列有 OPT 型、 FLASH 型和 ROM 型三種類型的器件,這些器件的開發手段不同。對於 OPT 型和 ROM 型的器件是使用模擬器開發成功之後在燒寫或掩膜晶元;對於 FLASH 型則有十分方便的開發調試環境,因為器件片內有 JTAG 調試介面,還有可電擦寫的 FLASH 存儲器,因此採用先下載程序到 FLASH 內,再在器件內通過軟體控製程序的運行,由 JTAG 介面讀取片內信息供設計者調試使用的方法進行開發。這種方式只需要一台 PC 機和一個 JTAG 調試器,而不需要模擬器和編程器。開發語言有匯編語言和 C 語言。
MSP430 單片機目前主要以 FLASH 型為主。
適應工業級運行環境 MSP430 系列器件均為工業級的,運行環境溫度為 -40~+ 85 攝氏度 ,所設計的產品適合用於工業環境下。
⒊ MAP430 系列與 89C 51 系列的比較
我國的多數讀者對 89C 51 系列的單片機是很熟悉的,為了加深對 MSP430 系列單片機的認識,我們不妨將兩者進行一下比較。
首先, 89C 51 單片機是 8 位單片機。其指令是採用的被稱為「 CISC 」的復雜指令集,共具有 111 條指令。而 MSP430 單片機是 16 位的單片機,採用了精簡指令集( RISC )結構,只有簡潔的 27 條指令,大量的指令則是模擬指令,眾多的寄存器以及片內數據存儲器都可參加多種運算。這些內核指令均為單周期指令,功能強,運行的速度快。
其次, 89C 51 單片機本身的電源電壓是 5 伏,有兩種低功耗方式:待機方式和掉電方式。正常情況下消耗的電流為 24mA ,在掉電狀態下,其耗電電流仍為 3mA ;即使在掉電方式下,電源電壓可以下降到 2V ,但是為了保存內部 RAM 中的數據,還需要提供約 50uA 的電流。而 MSP430 系列單片機在低功耗方面的優越之處,則是 89C 51 系列不可比擬的。正因為如此, MSP430 更適合應用於使用電池供電的儀器、儀表類產品中。
再者, 89C 51 系列單片機由於其內部匯流排是 8 位的,其內部功能模塊基本上都是 8 位的雖然經過各種努力其內部功能模塊有了顯著增加,但是受其結構本身的限制很大,尤其模擬功能部件的增加更顯困難。 MSP430 系列其基本架構是 16 位的,同時在其內部的數據匯流排經過轉換還存在 8 位的匯流排,在加上本身就是混合型的結構,因而對它這樣的開放型的架構來說,無論擴展 8 位的功能模塊,還是 16 位的功能模塊,即使擴展模 / 數轉換或數 / 模轉換這類的功能模塊也是很方便的。這也就是為什麼 MSP430 系列產品和其中功能部件迅速增加的原因。
最後,就是在開發工具上面。對於 89C 51 來說,由於它是最早進入中國的單片機,人們對它在熟悉不過了,再加上我國各方人士的努力,創造了不少適合我們使用的開發工具。但是如何實現在線編程還是一個很大的問題。對於 MSP430 系列而言,由於引進了 Flash 型程序存儲器和 JTAG 技術,不僅使開發工具變得簡便,而且價格也相對低廉,並且還可以實現在線編程。
❻ MSP430 c語言編程問題
volatile 是C語言的關鍵字,簡單的說,是用來阻止編譯優化的。這個可以查網路,說的很詳細。
@ 是IAR的語法,不是C語言的標准語法。簡單的說,就是指明變數的地址是在什麼位置。
宏定義的作用主要是文字替換,主要還是看展開之後的內容。
比如:
#define IFG1_ (0x0002u)
DEFC( IFG1 ,IFG1_)
展開之後 的內容
__no_init volatile unsigned char IFG1 @ 0x0002u
這個意思就很比較好理解了。
❼ msp430單片機C語言編程
MSP430主要看是什麼系列的,如果是早期的可以用Proteus模擬,比如msp430f149等,如果是新系列如msp430F5438A的話暫時不方便軟體模擬,除非你自己可以在proteus中製作那個控制器的模型(一般不太可能,太難!!)。我用的是Proteus7.10。如果要硬體模擬,最好買一個開發板和模擬器。至於DS18B20驅動或者是液晶驅動(LCD1602,LCD12864,TFT)的程序可以發給你。
❽ 啊,MSP430用什麼軟體編程
MSP430用IAR Embedded Workbench軟體編寫程序和編譯代碼。
MSP430單片機稱之為混合信號處理器,是由於其針對實際應用需求,將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個晶元上,以提供「單片機」解決方案。該系列單片機多應用於需要電池供電的攜帶型儀器儀表中。
(8)msp430編程語言擴展閱讀:
MSP430系列的部分產品具有Flash存儲器,在系統設計、開發調試及實際應用上都表現出較明顯的優點。TI公司推出具有Flash型存儲器及JTAG邊界掃描技術的廉價開發工具MSP-FET430X110,將國際上先進的JTAG技術和Flash在線編程技術引入MSP430。
這種以Flash 技術與FET開發工具組合的開發方式,具有方便、廉價、實用等優點,給用戶提供了一個較為理想的樣機開發方式。