縱觀微處理器的發展,一是朝著具有復雜數據運算、高速通信、信息處理等功能的高性能計算機系統方向發展;二是產生了一種將中央處理器,存儲器,I/O接口電路以及連接他們的總線都集成一塊芯片上的計算機。單片機在設計上主要突出了控制功能,調整了接口配置,在單一芯片上制成了結構完整的計算機。
目前最常用的3中可編程處理器:微控制器(MCU)、微處理器(MPU)、數字信號處理器(DSP);
單片機可應用的領域:工業控制(工業機器人)、智能化儀器儀表(溫度濕度的測量)、日常生活鐘的電器產品(MP3)、計算機網絡與通信(以太網)、計算機外部設備(微型打印機);
單片機的結構特點:時鐘頻率比通用MPU和DSP低;功耗低;字長一般為8-32位;內存有限,通常小于1mb;具有幾個到上百個輸入/輸出引腳;
單片機應用特點:小巧靈活、成本低、易于產品化(組裝成智能式控制設備以及各種智能儀器儀表)、面向控制、抗干擾能力強、可以方便地實現多機和分布式控制,提高效率和可靠性;
MSP430是16位超低功耗、具有精簡指令集的混合信號處理器(因其針對實際應用需求,將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個芯片上,以提供“單片”解決方案(豐富的片內外設));
MSP430的特點:1.最顯著:超低功耗(電源電壓為1.8-3.6V,最高工作頻率25MHz)2.強大的處理能力(16位,采用精簡指令集結構,一個時鐘周期可執行一條指令)3.高性能模擬技術以及豐富的片內外圍模塊4.系統工作穩定5.方便高效的開發環境
MSP430發展和應用:推出X1XX--X6XX系列,其中X3xx、X4xx、X6xx具有LCD驅動模塊,對提高系統的集成度較有利
MSP430微控制器架構:CPU具有16位數據總線、7種尋址模式,采用精簡指令集(代碼更短、更緊湊、執行速度更快),微控制器采用馮諾依曼架構(程序指令存儲器和數據存儲器共用一個存儲空間,地址線和數據線共用一組;哈佛結構是程序存儲器和數據存儲器分開的,地址和數據是兩組獨立的總線),CPU、多種外設和時鐘系統通過存儲器地址總線和存儲器數據總線相連。
MSP430主要功能部件:CPU、存儲器、外圍模塊;存儲器分為程序存儲器(以字方式訪問)和數據存儲器(以字(16位)或字節(8位)方式訪問),字通常編址在偶數單元,這個地址存放字的低字節,后面緊鄰的奇數地址包含字的高字節,8位運算數據訪問可以從偶數或奇數地址開始,16運算數據訪問只能從偶數地址開始。
MSP430所有內存包括RAM、ROM、Flash、信息內存、特殊功能寄存器、外設寄存器;
Flash:字母F標識,可擦除以及重新變成代碼空間;ROM字母C,價格低廉、適用于大容量;FRam字母FR,具備動態區功能統一存儲器,訪問速度快,實現零功率狀態保持;存儲器的每個儲存單元由一個字節構成。
中斷向量表位于存儲空間的最后一段區域,從0FFE0h到)0FFFEh,中斷向量優先級隨字地址的增加而遞增。
所有的代碼、表、編碼常量都存儲在FLash/ROM內,其起始地址取決于Flash/ROM的容量。軟件能從Flash/ROM中存儲并讀出字或字節表。MSP430的Flash中含有信息內存地址空間(只存數據),還含有引導內存地址空間,引導程序在此,是一個能對Flash編程的外部接口之一(還有一個JTAG),此區域不會被其他應用程序訪問,也不會被意外覆蓋。
RAM結尾地址取決于設備中的RAM的容量,RAM可以用來存儲代碼或數據;
外設模塊包含了所有映射到地址空間的片上外設寄存器,這些模塊可以通過字或字節指令訪問。
一些外設功能被映射到帶有特殊功能的內存中,特殊功能寄存器有:中斷使能寄存器,中斷標志寄存器,使能標志寄存器;特殊功能寄存器僅能通過字節指令訪問。
MSP430 CPU適用于高性能、低功耗應用,RISC(精簡指令集)類型CPU體系結構基于正交的短指令集(27條指令),采用3級指令流水線進行譯碼,包含ALU、4個專用寄存器,12個通用寄存器。將常用的值和變量存到通用寄存器中,節省CPU周期。
ALU(算術邏輯單元)處理加法、減法、比較和邏輯運算(AND、OR、XOR)。ALU運算會影響狀態寄存器中的溢出、零標志、負標志和進位標志位。
4個專用寄存器(R0--R3)12個通用寄存器(R4--R15):R0:程序計數器(PC):16位的程序計數器存放著下一條將要從程序存儲器中取出的指令的地址,程序計數器的實現依賴于指令使用的字節數(2、4、6總是偶數),由于指令是16位的,故PC一定是在偶數地址對齊。
R1可用于保存堆棧指針(SP/R1)用戶可以使用堆棧存儲數據(PUSH指令來存數據、POP指令來取數據)。用戶和編譯器均可使用堆棧為子函數傳遞參數(PUSH、POP用于調用函數,被調用的函數使用SP來計算偏移);系統進入子函數之前,把PC值存儲到堆棧中,從子函數返回時,再取出堆棧中的值,重新賦值給PC。系統堆棧在系統進入中斷服務程序時,首先保護程序計數器(PC),然后將中斷矢量地址送入程序計數器,再執行中斷服務程序,中斷服務程序執行完畢,遇到返回指令時,將堆棧的內容送到程序計數器中,程序又回到原來的地方繼續執行,在函數調用之前保存的寄存器變量、局部變量和參數都不會變。
R2狀態寄存器(SR):用來存儲狀態位和控制位,CPU根據運算結果,自動改變系統標志,SR的預留位用來支持常量發生器。“8位 V”是溢出位,v=1 表示算術結果溢出有符號變量的范圍;“7位SCG1”系統時鐘生成器0,SCG1=1 表示DCO生成器被關閉;“6位SCG0”系統時鐘生成器1,SCG0=1 代表FLL+循環控制被關閉;“5位OSOFF 振蕩器關閉 OSOFF=1關閉LFXT1”;“4位CPUOFF CPU關閉 CPUOFF=1禁用CPU內核”;“3位GIE一般中斷使能 GIE=1使能可屏蔽中斷”“2--0位”是狀態位,N——求反標識“N=1字節或字運算結果為負”Z——零標識“Z=1字節或字運算結果為0” C——進位標識 “C=1字節或字運算結果產生進位”。
R2/R3(常量發生寄存器(CG1/CG2))根據源寄存器尋址模式(AS)的值,常量發生寄存器可以不需要通過代碼字或代碼內存訪問即可生成6個常用的常量。可以實現仿真指令。
R4-R15通用寄存器可以用來保存數據值、地址指針或者索引值,可以通過字節或字指令訪問它們。
寄存器尋址模式可以直接操作通用寄存器或特殊功能及寄存器。
RISC和CISC體系結構主要特征:RISC結構簡單,易于設計,程序執行效率高;CISC:功能豐富,指令執行更加靈活;
系統復位:3種復位信號:掉電復位(BOR)、上電復位(POR)、上電清零(PUC);POR為高電平時,狀態寄存器復位,程序計數器指向0FFFEh,外設寄存器全部恢復到上電狀態;PUC將PC和SR復位,僅復位某些外設寄存器。
3種時鐘:輔助時鐘(ACLK一般用于低速外設模塊)、主系統時鐘(MCLK主要用于CPU和系統)、子系統時鐘(SMCLK高速外設模塊);
XT1振蕩器(在PUC后開始工作):工作在低頻(LF)模式(XTS=0)時,提供支持32768Hz的超低功耗模式,晶振只需經過XIN和XOUT兩個引腳連接;工作在高頻(HF)模式時(XTS=1),支持高頻晶振或諧振器。XT1在LF時通過XT1DRIVE提高驅動,在HF時,通過XT1DRIVE適應不同的晶振或振蕩器。在XT1BYPASS下輸入到XT1的外部時鐘信號(4MHz-32MHz),XT1自動關閉電源;
XT2振蕩器(高速振蕩器):產生XT2CLK時鐘信號,當XT2CLK信號沒有用作ACLK、MCLK、SMCLK,可用控制位XT2OFF關閉XT2。系統頻率和系統的工作電壓密切相關;
片內數字控制振蕩器(DCO):是數字可控的RC振蕩器,其頻率隨供電電壓、環境溫度變化而具有一定的不穩定性;可以用控制位SCG0關閉;
MPS430的中斷源有內部中斷和外部中斷,分為復位中斷、不可屏蔽中斷(NMI不能被狀態寄存器中的通用中斷使能(GIE)位禁用)、可屏蔽中斷;所有可屏蔽中斷均能被CPU的中斷控制識別,所以GIE必須置位;系統復位中斷(振蕩器/閃存和硬復位)是不可能屏蔽中斷,具有最高的中斷向量和處理優先級;
不可屏蔽中斷(NMI)有兩個等級:系統NMI(SNMI)和用戶(UNMI)。
可屏蔽中斷:每個都在外設寄存器或獨立模塊中有獨立的使能或禁用標志,可屏蔽中斷都能被狀態寄存器(SR)中的通用中斷使能位(GIE)禁用。當發生可屏蔽中斷事件時,必須是GIE和中斷事件有關的模塊都中斷允許時,該中斷才能有可能被響應;
中斷向量:最多可有64個中斷源,指向響應中斷服務程序的起始位置
中斷是應用程序的外部事件,外設中斷使能位和gie均置位中斷請求發出后就會調用ISR,中斷延遲時間為中斷事件開始到中斷服務程序執行之間的時間間隔,CPU識別并調用ISR6個時鐘周期:中斷發生時,程序計數器(PC)和狀態寄存器(SR)被壓入到棧中,SCG0異常,將SR清零,設置GIE禁止中斷,此時其他ISR將不會被調用,中斷服務程序結尾的reti指令會將程序流重定位,且自動彈出棧中SR和PC值。ISR處理時間必須小于中斷請求的時間間隔,否則棧會溢出。
端口能直接用于輸入/輸出,輸入/輸出操作都是通過傳送指令完成的,端口P1——P11和PJ都可以按位尋址,每一位可獨立用于輸入/輸出;相鄰兩個端口組合成端口對(分別命名為:PA、PB、PC、PD等),通過字節形式訪問單獨端口,通過字形式訪問端口對;MSP430只有數據端口,可用端口的某一位或幾位來傳送狀態信息,來確定外設狀態。
端口特點:1.類型豐富:有P1——P11、PJ、S、COM端口;2.功能豐富:P1、P2口有中斷能力;3.寄存器豐富:P1和P2具有9個(或7個)寄存器,其他有6個(或4個)寄存器,通過設置寄存器,(1每個I/O口可以獨立編程,2輸入或輸出可任意組合,3P1、P2所有I/O口都具有邊沿可選的輸入中斷功能,4能使用所有指令對寄存器操作,5可設置I/O口的上拉或下拉功能,6可配置I/O驅動能力);端口的數據輸出特性:MSP430輸入端口的最大漏電流為50na,輸入端口的漏電流對系統的耗電影響很大;每個端口的輸出晶體管都能夠限制輸出電流(最大約為25mA);
端口P1和P2具有輸入/輸出、中斷和外部模塊功能;可以通過9個(或7個)控制寄存器的設置來實現:1.PxDIR輸入/輸出方向寄存器:相互獨立的8為分別定義了8個引腳的輸入/輸出方向,8位在PUC(上電清零)后都被復位。使用輸入/輸出功能時,應該先定義端口的方向,作為輸入時,只能讀,作為輸出時,可讀可寫,對某位置位時,表示對應引腳設置為輸出方向,否則為輸入方向,“|=”按位或運算;2.PxIN輸入寄存器:是只讀寄存器,用戶不能對其寫入,對這種只讀寄存器寫入,會在寫操作有效期間增加電流消耗;3.PxOUT輸出寄存器:可讀可寫,讀寄存器時,讀的值為上一次寫入的值,若某引腳設置為輸入方向,則對該寄存器寫操作不會改變引腳之前的狀態;4.PxREN上拉或下拉電阻使能寄存器(提高信號的驅動能力):該寄存器的每一位可以使能或禁用I/O引腳的上拉/下拉電阻,通過設置PxOUT相應位來選擇引腳上拉或下拉功能:"0為禁止,1為使能”;5.PxSEL功能選擇寄存器:P1和P2端口還具有其他片內外設功能,為減少引腳,將這些功能與芯片外的聯系通過復用P1和P2引腳的方式來實現,P1SEL和P2SEL用來選擇引腳的I/O端口功能與外圍模塊功能,”0:選擇引腳為I/O端口,1:選擇引腳為外圍模塊功能“;6.PxDS輸出驅動強度寄存器:每位設置引腳的輸出強度為高驅動強度(“1”)或低驅動強度(“0”),默認值為低驅動強度;7.PxIE中斷使能寄存器:該寄存器的8位與該端口的8個引腳一一對應,某一位置位表示允許對應的引腳在電平變化(上升沿或下降沿)時產生中斷;8.PxIES中斷觸發沿選擇寄存器:如果允許Px口某個引腳中斷,還需定義該引腳的中斷觸發方式,該寄存器8位對應Px口的8個引腳(”0:上升沿使相應標志置位,1:下降沿使相應標志置位“);9.PxIFG(”0:沒有中斷請求;1:有中斷請求“)中斷標志寄存器:用來表示對應引腳是否產生了有PxIES設定的電平跳變,如果GIE置位,引腳對應的中斷使能寄存器PxIE位置位,則會向CPU請求中斷處理;中斷標志共用一個中斷向量,屬于多源中斷,須用軟件來判定是對哪一個事件服務,并將相應的標志復位,外部中斷事件的時間必須保持不低于1.5倍的MCLK的時間,以保證中斷請求被接受,且使相應的中斷標志位置位。
端口COM和S實現與液晶片的直接接口,COM端口為液晶片的公共端,S端口為液晶片的段碼端;
定時功能模塊是MSP430應用系統中經常用到的重要部分,可用來實現定時控制、延遲、頻率測量、脈寬測量和信號產生、信號檢測等等。定時信號可以用軟件和硬件兩種方法來獲得。
看門狗定時器(WDT):特性:8種軟件可選的定時時間,看門狗工作模式,定時器工作模式,帶密碼保護的WDT控制寄存器,適中源可選擇,為降低功耗,可停止,時鐘失效保護;看門狗寄存器:1.計數單元(WDTCNT)是不能通過軟件直接訪問的32位增計數器,是由所選定的時鐘電路產生的固定周期脈沖信號對計數器進行加法計數。2.控制寄存器(WDTCTL)是一個16位寄存器,高8位用于存放訪問密碼,低8位6位(WDT時鐘源有SMCLK和ACLK,時鐘源的選擇由控制位WDTSSEL確定;WDTHOLD(1是禁用)看門狗定時器停止位;WDTTMSEL:工作模式選擇(0看門狗模式1間隔定時器模式))用于WDT控制,其余兩位用于NMI(不可屏蔽中斷)的控制;
看門狗的工作模式:關閉狀態、定時模式、看門狗模式;處于定時模式下的 WDT 中斷屬于可屏蔽中斷。其中斷優先級介于定時器 A 與定時器 B 之間;
看門狗模式下: 用戶軟件一都需要進行如下操作: 進行WDT的初始化:設置合適的時間。 周期性地對WDTCNT清零:防止WDT溢出。
WDT為什么能抗干擾:將WDT定時時間稍大于程序執行一遍所用的時間,而且程序執行過程中都有對看門狗定時器清零指令,不會產生溢出,使計數器清零(喂狗)重新計數,如果干擾使程序跑飛,不會在WDT定時時間到之前執行WDT清零指令,WDT溢出,從而產生系統復位,CPU需要重新運行用戶程序,這樣程序就可以回到正常狀態;
定時器 A (MSP430Flash型單片機都含有定時器A)由一個16位定時器和多路捕獲/比較通道(提高I/O 端口處理事務的能力和速度)組成,4種計數模式:00停止模式、01增計數模式、10連續計數模式、11增/減計數模式;停止模式:用于定時器暫停,不發生復位,寄存器所有現行內容在該模式結束后仍可用; 增計數模式:(增到TAxCCR0降到0)捕獲/比較寄存器TAxCCR0為Timer_A增計數模式的周期寄存器,適用于周期小于65536的連續計數情況;連續計數模式:定時器從當前值計數到0FFFFH后,又從0開始重新計數,TAxCCR0工作方式和其他捕獲/比較寄存器相同,不再作為周期寄存器;需要對稱波形通常需要用到增/減計數模式,該模式計數方向鎖定,先增計數到TAxCCR0然后反向減計數到0;
增計數模式和連續計數模式區別:在連續計數模式中,很多時候會用到CCR0、CCR1等信號,鬧鐘的例子最形象了,在周期循環定時中,CCR0、CCR1對應不同時刻的事件
模數轉換器(ADC)從信號系統中采集信號電壓,經過信號處理后,將其轉換為等效的數字量。A/D轉換,通常按取樣、保持、量化、編碼四個步驟進行(基本過程);
取樣:是對模擬信號周期性抽取樣值;保持:在下一個取樣脈沖到來前,暫時保持取得的樣值脈沖幅度;量化:將樣值電壓變換為量化單位電壓整數倍的過程;編碼:量化后的離散量用相應的二進制碼表示;數字量計算方法:ADC內核一般要使用兩個參考電壓VR+和VR-,一般這兩個電壓可以是用戶接入或者是使用內部參考電壓。VR+是定義的轉換最大值,VR-則是轉換的最小值;公式:N = 4095*(Vin-Vr-)/(Vr+ - Vr-);
程序:
//ADC中斷程序:
#pragma vector=ADC_VECTOR
_interrupt void ADC12ISR(void)
{
uchar j;
while(ADC12CTL1&0x01)==1);//如果ADC忙,則等待,否則讀取ADC轉換數值
Flag=1;
TEMP=ADC12MEM0;//讀取ADC轉換值
Data_do(TEMP);//處理ADC值,用于顯示,數字量
Voltage_do(TEMP);//處理ADC值,用于顯示,模擬電壓值
for(j=0;j<15;j++)
{
LCD_DisplayADC();//顯示ADC數據,ADC數字量;
LCD_DisplayVoltage();//顯示ADC的電壓值;
}
}
|