freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于msp430單片機(jī)的時(shí)鐘設(shè)計(jì)-資料下載頁

2025-06-27 18:29本頁面
  

【正文】 序暫存于RAM中。硬件仿真方式是在目標(biāo)硬件系統(tǒng)的真實(shí)環(huán)境中進(jìn)行調(diào)試,除了驗(yàn)證程序,還可以檢驗(yàn)?zāi)繕?biāo)系統(tǒng)的硬件設(shè)計(jì)性能。主機(jī)將代碼通過JTAG仿真器下載到目標(biāo)系統(tǒng)的Flash中運(yùn)行。選擇軟件模擬方式調(diào)試時(shí),目標(biāo)系統(tǒng)的運(yùn)行是在調(diào)試主機(jī)上以軟件模擬實(shí)現(xiàn)的,用戶可以利用軟件模擬調(diào)試在目標(biāo)硬件系統(tǒng)產(chǎn)生之前驗(yàn)證程序的設(shè)計(jì)思想和邏輯結(jié)構(gòu)。由于CSPY軟件模擬調(diào)試完全使用軟件模擬目標(biāo)處理器,不需要硬件,因此,對(duì)于許多應(yīng)用來說這是一種高效而廉價(jià)的調(diào)試方法。IAR CSPY模擬調(diào)試器提供了如下功能:a)精確模擬指令的執(zhí)行。b)程序的分析。c)中斷的模擬。d)立即斷點(diǎn)設(shè)置和程序恢復(fù)運(yùn)行。e)外圍設(shè)備的模擬(使用CSPY的宏系統(tǒng))。f)在軟件模擬調(diào)試時(shí)基本操作與硬件仿真基本相同。由于軟件模擬程序的運(yùn)行與真實(shí)硬件無關(guān),中斷的觸發(fā)不能從硬件上實(shí)現(xiàn),如端口PP2的邊沿觸發(fā)中斷、定時(shí)器中斷、串口數(shù)據(jù)傳輸中斷等,因此,為了驗(yàn)證程序的功能可以通過編寫相應(yīng)的宏定義文件()協(xié)助調(diào)試。除了普通斷點(diǎn),CSPY軟件模擬調(diào)試器可以設(shè)置立即斷點(diǎn)使程序暫停運(yùn)行。當(dāng)處理器要從某一位置讀取數(shù)據(jù)或剛寫回?cái)?shù)據(jù)時(shí),允許CSPY宏函數(shù)調(diào)用,動(dòng)作完成后指令將繼續(xù)執(zhí)行。對(duì)于像串口和定時(shí)器之類的設(shè)備,這種斷點(diǎn)在模擬存儲(chǔ)器映射時(shí)是很有用的。當(dāng)處理器讀取一個(gè)存儲(chǔ)器器映射區(qū)域時(shí),一個(gè)CSPY宏函數(shù)可以插入并提供一個(gè)適當(dāng)?shù)臄?shù)值。相反地,當(dāng)處理器要寫入一個(gè)數(shù)據(jù)到一個(gè)存儲(chǔ)器映射區(qū)域時(shí),一個(gè)CSPY宏函數(shù)可以根據(jù)所寫數(shù)值完成適當(dāng)?shù)墓δ堋?IAR C430編譯器IAR C430編譯器除提供C語言的標(biāo)準(zhǔn)特性,還增加了許多為利用MSP430專用工具而設(shè)計(jì)的擴(kuò)展功能。編譯器與MSP430 IAR系統(tǒng)匯編一起提供,與它集成在一起,共享連接器和庫管理工具。A. IAR C430編譯器的特性:語言工具:。,具有可選用的源(代碼)。,包括高效的I/O。,多達(dá)255個(gè)有效字符。性能:。代碼產(chǎn)生:。,包括可重定位的二進(jìn)制、ASM、ASM+、XREF等。目標(biāo)支持:。Pragma偽指令。B. IAR C430區(qū)別于標(biāo)準(zhǔn)C的地方:IAR C430在數(shù)據(jù)類型上有以下一些方面區(qū)別與標(biāo)準(zhǔn)C,具有特殊性。a)外圍模塊變量外圍模塊變量(Sfrb)也稱作特殊功能寄存器變量,直接位于內(nèi)部RAM單元。Sfrb范圍為0X00至0XFF,Sfrw范圍為0X100至0X1FFH,外圍模塊變量使符號(hào)名與此范圍的字節(jié)或者字相聯(lián)系。該地址處寄存器可以符號(hào)化被尋址,但沒有分配存儲(chǔ)器空間。例如:P1的中斷觸發(fā)沿選擇寄存器的地址為24H,P1的方向選擇寄存器的地址為22H,ADC12的控制寄存器的地址為01A2H。可以使用如下外圍模塊變量定義:Sfrb P1IES=0X24HSfrb P1DIR=0X22HSfrw ADC12CTL1=0X01A2H經(jīng)過定義,以后可以直接通過對(duì)應(yīng)的符號(hào)訪問這些寄存器。P1DIR=0X01H 。 b)指針變量IAR C430的指針變量包括代碼指針和數(shù)據(jù)指針,都可以指向0000H~0FFFFH范圍的存儲(chǔ)空間。c)枚舉類型用enum關(guān)鍵字,可以使聲明的每一個(gè)變量具有適合它的值所需的最短正數(shù)類型,包括char、short、int或long。d)浮點(diǎn)類型 在標(biāo)準(zhǔn)IEEE格式中,浮點(diǎn)使用4字節(jié)數(shù)來表示。低于最小極限值的浮點(diǎn)數(shù)被看作零而溢出給不定的結(jié)果。浮點(diǎn)運(yùn)算符(+、*、/)的精度近似為7位十進(jìn)制數(shù)。對(duì)于IAR C430來說,float、double和long double數(shù)據(jù)類型沒有什么區(qū)別。e)位域表達(dá)式中的位域具有與基本類型相同的數(shù)據(jù)類型(signed、unsigned char、short、int或者long)。具有基本類型char、short和long的位域是對(duì)ANSIC整數(shù)位域的擴(kuò)充。位域變量的封裝在從LSB位置開始的特定類型元素中。 C430頭文件:用戶程序通過頭文件訪問庫定義,頭文件使用include偽指令與之相結(jié)合。為了避免浪費(fèi)編譯時(shí)間,定義被劃分到許多不同的頭部定義,每一個(gè)文件覆蓋特定的函數(shù)區(qū)域,用戶可以根據(jù)使用的內(nèi)容選擇不同的頭文件。IAR調(diào)試環(huán)境提供了MSP430各系列的標(biāo)準(zhǔn)頭文件,定義了系列中包含的寄存器的物理地址。在程序中可以直接使用寄存器名或者寄存器中位的名稱,這樣就避免使用實(shí)際的物理地址,使程序設(shè)計(jì)簡(jiǎn)潔、高效。例如:include Void main(void){ WDTCTL=WDTPW + WDTHOLD。 //停止看門狗定時(shí)器 P1DIR |= 0X01。 // For (。) { Unsigned int I。 P1OUT ?=0x01。 // i=50000。 //延時(shí) do (i)。 while(i!=0)。 }}其中include 為文件包含語句,使用文件包含語句后,msp430x14x系列的寄存器資源就可以用名稱訪問。如看門狗控制寄存器WDTCTL、端口P1方向選擇寄存器P1DIR、控制位WDTPW和WDTHOLD等。開發(fā)流程如圖51所示。開 始編輯C語言源文件編譯C語言源文件連接目標(biāo)文件(包含調(diào)試選項(xiàng))CSPY調(diào)試編譯文件連接目標(biāo)文件(不包含調(diào)試選項(xiàng))生成程序代碼,加載到PROM錯(cuò)誤正確圖51 開發(fā)流程圖6 系統(tǒng)軟件設(shè)計(jì)初試化開 始進(jìn)入LPM0低功耗模式等待中斷啟動(dòng)看門狗定時(shí)器產(chǎn)生10毫秒定時(shí)中斷中斷返回啟動(dòng)P1口中斷是否有鍵按下延時(shí)執(zhí)行按鍵掃描程序判斷鍵值執(zhí)行相應(yīng)程序中斷返回(a)(b)(c)否是圖61 系統(tǒng)流程圖整個(gè)系統(tǒng)的程序流程圖如圖61所示。整個(gè)系統(tǒng)的基本工作過程為:系統(tǒng)通電之后將會(huì)對(duì)單片機(jī)、鍵盤、LCD等進(jìn)行初始化,然后進(jìn)入LPM0低功耗模式等待中斷。中斷主要有兩個(gè):一個(gè)是由看門狗定時(shí)器產(chǎn)生的10毫秒的定時(shí)中斷,提供基準(zhǔn)時(shí)鐘;另一個(gè)就是P1口的按鍵掃描中斷,判斷是否有鍵按下以及判斷鍵值并執(zhí)行相應(yīng)的程序。在整個(gè)系統(tǒng)軟件設(shè)計(jì)中,程序設(shè)計(jì)包括主程序、鍵盤程序和顯示電路程序。鍵盤掃描法是一種常用的識(shí)別法,在這種方法中,只要CPU空閑,就調(diào)用鍵盤掃描程序,查詢鍵盤并給予處理,CPU的利用率比較高,所以在鍵盤程序設(shè)計(jì)中采用的就是掃描法。顯示部分用的是液晶顯示器TC1602,每一行可以顯示16個(gè)字符,可顯示兩行。TC1602內(nèi)部存有英文字母和十進(jìn)制數(shù)的ASCII碼,當(dāng)單片機(jī)向其輸入頻率時(shí),TC1602可根據(jù)輸入的數(shù)值調(diào)用其內(nèi)部的ASCII碼,并在液晶屏和數(shù)碼管上顯示。在軟件部分的設(shè)計(jì)中用到了看門狗定時(shí)器(WDT),它是MSP430系列單片機(jī)中常用的一種部件。在工業(yè)現(xiàn)場(chǎng),往往會(huì)由于供電電源、空間電磁干擾或其他原因引起強(qiáng)烈的干擾噪聲。這些干擾作用于數(shù)字器件,極易使其產(chǎn)生誤動(dòng)作,引起MSP430發(fā)生“程序跑飛”事故。若不進(jìn)行有效處理,程序就不能回到正常工作狀態(tài),從而失去應(yīng)有的控制功能??撮T狗定時(shí)器正是為了解決這類問題而產(chǎn)生的,尤其是在具有循環(huán)結(jié)構(gòu)的程序任務(wù)中更為有效。在正常操作期間,一次WDT定時(shí)時(shí)間到,將產(chǎn)生一次器件復(fù)位。如果通過編制程序使WDT定時(shí)時(shí)間稍大于程序執(zhí)行一遍所用的時(shí)間,并且程序執(zhí)行過程中都有對(duì)看門狗定時(shí)器清零的指令,使計(jì)數(shù)器重新計(jì)數(shù),則程序正常進(jìn)行,就會(huì)在WDT定時(shí)時(shí)間到達(dá)之前對(duì)WDT清零,不會(huì)產(chǎn)生WDT溢出,如果由于干擾使程序跑飛,則不會(huì)在WDT定時(shí)時(shí)間到達(dá)之前執(zhí)行WDT清零指令,WDT就會(huì)溢出,從而產(chǎn)生系統(tǒng)復(fù)位,CPU需要重新運(yùn)行用戶程序,這樣程序就可以又恢復(fù)正常運(yùn)行狀態(tài)。MSP430看門狗除了具有上述系統(tǒng)檢測(cè)的特定用途之外,還可以作為內(nèi)部定時(shí)器來使用,當(dāng)選擇的時(shí)間到達(dá)以后,和其他定時(shí)器一樣產(chǎn)生一個(gè)定時(shí)中斷。本次設(shè)計(jì)的程序中與看門狗有關(guān)的一部分如下:pragma vector=WDT_VECTOR __interrupt void watchdog_timer (void){ seconds = __bcd_add_short (seconds, 0x01)。 if (seconds == 0x60) { seconds = 0。 minutes = __bcd_add_short (minutes, 0x01)。 if (minutes == 0x60 ) { minutes = 0。 hours = __bcd_add_short (hours, 0x01)。 if (hours == 0x13 ) { hours = 0x01。 } } } display_time ()。}pragma vector=TIMERA0_VECTOR__interrupt void ta1_isr(void){ IE1 amp。= ~WDTIE。 disp_led ()。 CCR0+=60000。 IE1 |= WDTIE。 }程序中__bcd_add_short()為MSP430單片機(jī)自帶的一個(gè)BCD碼的轉(zhuǎn)換函數(shù),它的作用是將兩個(gè)16進(jìn)制的數(shù)相加,并將值返回。例如:兩個(gè)16進(jìn)制的數(shù)0x09和0x01相加后的值應(yīng)為0x0a,但是經(jīng)__bcd_add_short()函數(shù)后返回的值為0x10。 LED數(shù)碼管顯示器模塊在這個(gè)模塊中是采用數(shù)碼管顯示時(shí)、分、秒,數(shù)碼管采用共陽極的接法,由74HC244進(jìn)行驅(qū)動(dòng)。LED的顯示代碼(0~9)如下:0——7BH 1——12H 2——4FH 3——7FH 4——36H5——3DH 6——7DH 7——1BH 8——7FH 9——3FH數(shù)碼管部分顯示時(shí)間的程序?yàn)椋簐oid disp_led (void){ unsigned char i=0。 unsigned char temp=0x80。 for (i=0。 i5。i++)。 { P4DIR=0xFF。 P5DIR=0xFF。 P4OUT=temp。 temp=temp1。 P5OUT=seg [disp_BCD[i]]。 LCD_delay (500)。 } }其中LCD_delay()函數(shù)是一個(gè)延時(shí)函數(shù),因?yàn)樵陲@示部分和按鍵部分都要遇到延時(shí)的問題,所以將其作為公共函數(shù)供調(diào)用,這個(gè)函數(shù)是這樣定義的:void LCD_delay (unsigned int i){ for (。 i0。 i)。} LCD液晶顯示器模塊在這個(gè)模塊中在“”中定義了一些公共函數(shù),作為顯示驅(qū)動(dòng)函數(shù),內(nèi)容如下:ifndef __LCD_1602_test_hdefine __LCD_1602_test_hinclude define SET_LCD_1602_EN P3OUT |= 0x04 //pin 2define CLR_LCD_1602_EN P3OUT amp。= ~0x04 define SET_LCD_1602_RS P3OUT |= 0x01 //pin 0define CLR_LCD_1602_RS P3OUT amp。= ~0x01define SET_LCD_1602_RW P3OUT |= 0x02 //pin 1define CLR_LCD_1602_RW P3OUT amp。= ~0x02define LCD_I0 P2OUTvoid LCD_delay (unsigned int i)。void LCD_en_mand (unsigned char mand)。void LCD_en_dat (unsigned char temp)。void LCD_init (void)。void LCD_set_xy (unsigned char x, unsigned char y)。void LCD_write_char (unsigned x, unsigned char y, unsigned char dat)。void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)。endif頭文件中對(duì)LCD的3個(gè)控制性引腳RS、RW和EN的狀態(tài)進(jìn)行了定義,以便使它們?cè)诓煌臓顟B(tài)時(shí)選擇不同的工作方式,完成不同的功能。例如define SET_LCD_1602_RS P3OUT |= 0x01,這一句的作用就是將LCD的RS端置1,這個(gè)時(shí)候LCD的D0~D7口與數(shù)據(jù)寄存器進(jìn)行通信,而define CLR_LCD_1602_RS P3OUT amp。= ~0x01這一句就是將RS端置0,使D0~D7口與指令寄存器進(jìn)行通信。在上面還定義了一些功能函數(shù),有起延時(shí)功能的LCD_delay(unsigned int i)控制功能的LCD_en_mand(unsigned char mand)、數(shù)據(jù)功能的LCD_en_dat(unsigned char temp);復(fù)位功能的LCD_init(void)以及寫字符串的LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)等功能函數(shù)。其中都用到了上面對(duì)RS、RW和EN狀態(tài)定義的語句。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1