概述 HT46R32/HT46R34是8位高性能精簡指令集單片機,專門為需要A/D轉(zhuǎn)換的產(chǎn)品而設(shè)計,例如傳感器信號輸入。內(nèi)置放大器/比較器和PWM調(diào)制功能使得這款單片機處理模擬信號的能力更加強大。 低功耗、I/O使用靈活、可編程分頻器、計數(shù)器、振蕩類型選擇、多通道A/D轉(zhuǎn)換運算放大器/比較器、脈沖測量功能、暫停和喚醒功能,使這款單片機可以廣泛應(yīng)用于傳感器的信號處理、馬達控制、工業(yè)控制、消費類產(chǎn)品、子系統(tǒng)控制等等。
上傳時間: 2013-11-13
上傳用戶:哈哈hah
HT46R23/HT46C23是8位高性能精簡指令集單片機,專門為需要A/D轉(zhuǎn)換的產(chǎn)品而設(shè)計,例如傳感器信號輸入。掩膜版本HT46C23與OTP版本HT46R23引腳和功能完全相同。低功耗、I/O使用靈活、可編程分頻器、計數(shù)器、振蕩類型選擇、多通道A/D轉(zhuǎn)換、脈沖測量功能、I2C通信、暫停和喚醒功能,使這款單片機可以廣泛應(yīng)用于傳感器的A/D轉(zhuǎn)換、馬達控制、工業(yè)控制、消費類產(chǎn)品等系統(tǒng)中。
上傳時間: 2013-11-02
上傳用戶:aa54
單片機音樂中音調(diào)和節(jié)拍的確定方法:調(diào)號-音樂上指用以確定樂曲主音高度的符號。很明顯一個八度就有12個半音。A、B、C、D、E、F、G。經(jīng)過聲學家的研究,全世界都用這些字母來表示固定的音高。比如,A這個音,標準的音高為每秒鐘振動440周。 升C調(diào):1=#C,也就是降D調(diào):1=BD;277(頻率)升D調(diào):1=#D,也就是降E調(diào):1=BE;311升F調(diào):1=#F,也就是降G調(diào):1=BG;369升G調(diào):1=#G,也就是降A(chǔ)調(diào):1=BA;415升A調(diào):1=#A,也就是降B調(diào):1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所謂1=A,就是說,這首歌曲的“導”要唱得同A一樣高,人們也把這首歌曲叫做A調(diào)歌曲,或叫“唱A調(diào)”。1=C,就是說,這首歌曲的“導”要唱得同C一樣高,或者說“這歌曲唱C調(diào)”。同樣是“導”,不同的調(diào)唱起來的高低是不一樣的。各調(diào)的對應(yīng)的標準頻率為: 單片機演奏音樂時音調(diào)和節(jié)拍的確定方法 經(jīng)??吹揭恍﹦倢W單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。 一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個音符唱多高的頻率,節(jié)拍表示一個音符唱多長的時間。 在音樂中所謂“音調(diào)”,其實就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標準音高,其頻率f=440Hz。當兩個聲音信號的頻率相差一倍時,也即f2=2f1時,則稱f2比f1高一個倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個倍頻程,在音樂學中稱它相差一個八度音。在一個八度音內(nèi),有12個半音。以1—i八音區(qū)為例, 12個半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個音階的分度基本上是以對數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。 知道了一個音符的頻率后,怎樣讓單片機發(fā)出相應(yīng)頻率的聲音呢?一般說來,常采用的方法就是通過單片機的定時器定時中斷,將單片機上對應(yīng)蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機發(fā)出不同頻率的聲音,我們只需將定時器予置不同的定時值就可實現(xiàn)。那么怎樣確定一個頻率所對應(yīng)的定時器的定時值呢?以標準音高A為例: A的頻率f = 440 Hz,其對應(yīng)的周期為:T = 1/ f = 1/440 =2272μs 由上圖可知,單片機上對應(yīng)蜂鳴器的I/O口來回取反的時間應(yīng)為:t = T/2 = 2272/2 = 1136μs這個時間t也就是單片機上定時器應(yīng)有的中斷觸發(fā)時間。一般情況下,單片機奏樂時,其定時器為工作方式1,它以振蕩器的十二分頻信號為計數(shù)脈沖。設(shè)振蕩器頻率為f0,則定時器的予置初值由下式來確定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時器待確定的計數(shù)初值。因此定時器的高低計數(shù)器的初值為: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 將t=1136μs代入上面兩式(注意:計算時應(yīng)將時間和頻率的單位換算一致),即可求出標準音高A在單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數(shù)器的予置初值為 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據(jù)上面的求解方法,我們就可求出其他音調(diào)相應(yīng)的計數(shù)器的予置初值。 音符的節(jié)拍我們可以舉例來說明。在一張樂譜中,我們經(jīng)常會看到這樣的表達式,如1=C 、1=G …… 等等,這里1=C,1=G表示樂譜的曲調(diào),和我們前面所談的音調(diào)有很大的關(guān)聯(lián), 、 就是用來表示節(jié)拍的。以 為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如: 其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時長為四分音符的一半,即為八分音符長,3、4的時長為八分音符的一半,即為十六分音符長,5的時長為四分音符的一半,即為八分音符長,6的時長為四分音符長。那么一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400—500ms 。我們以一拍的時長為400ms為例,則當以四分音符為節(jié)拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms。可見,在單片機上控制一個音符唱多長可采用循環(huán)延時的方法來實現(xiàn)。首先,我們確定一個基本時長的延時程序,比如說以十六分音符的時長為基本延時時間,那么,對于一個音符,如果它為十六分音符,則只需調(diào)用一次延時程序,如果它為八分音符,則只需調(diào)用二次延時程序,如果它為四分音符,則只需調(diào)用四次延時程序,依次類推。通過上面關(guān)于一個音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機上實現(xiàn)演奏音樂了。具體的實現(xiàn)方法為:將樂譜中的每個音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲器中,通過程序取出一個音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個音符的相關(guān)參數(shù)……,如此直到播放完畢最后一個音符,根據(jù)需要也可循環(huán)不停地播放整個樂曲。另外,對于樂曲中的休止符,一般將其音調(diào)參數(shù)設(shè)為FFH,F(xiàn)FH,其節(jié)拍參數(shù)與其他音符的節(jié)拍參數(shù)確定方法一致,樂曲結(jié)束用節(jié)拍參數(shù)為00H來表示。下面給出部分音符(三個八度音)的頻率以及以單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數(shù)器的予置初值 : C調(diào)音符 頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC調(diào)音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C調(diào)音符 頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上傳時間: 2013-10-20
上傳用戶:哈哈haha
Σ-ΔA/D技術(shù)具有高分辨率、高線性度和低成本的特點。本文基于TI公司的MSP430F1121單片機,介紹了采用內(nèi)置比較器和外圍電路構(gòu)成類似于Σ-△的高精度A/D實現(xiàn)方案,適合用于對溫度、壓力和電壓等緩慢變化信號的采集應(yīng)用。 在各種A/D轉(zhuǎn)換器中,最常用是逐次逼近法(SAR)A/D,該類器件具有轉(zhuǎn)換時間固定且快速的特點,但難以顯著提高分辨率;積分型A/D 有較強的抗干擾能力,但轉(zhuǎn)換時間較長;過采樣Σ-ΔA/D由于其高分辨率,高線性度及低成本的特點,正得到越來越多的應(yīng)用。根據(jù)這些特點,本文以TI公司的MSP430F1121單片機實現(xiàn)了一種類似于Σ-ΔA/D技術(shù)的高精度轉(zhuǎn)換器方案。 MSP430F1121是16位RISC結(jié)構(gòu)的FLASH型單片機,該芯片有14個雙向I/O口并兼有中斷功能,一個16位定時器兼有計數(shù)和定時功能。I/O口輸出高電平時電壓接近Vcc,低電平時接近Vss,因此,一個I/O口可以看作一位DAC,具有PWM功能。 該芯片具有一個內(nèi)置模擬電壓比較器,只須外接一只電阻和電容即可構(gòu)成一個類似于Σ-Δ技術(shù)的高精度單斜率A/D。一般而言,比較器在使用過程中會受到兩種因素的影響,一種是比較器輸入端的偏置電壓的積累;另一種是兩個輸入端電壓接近到一程度時,輸出端會產(chǎn)生振蕩。 MSP430F1121單片機在比較器兩輸入端對應(yīng)的單片機端口與片外輸入信號的連接線路保持不變的情況下,可通過軟件將比較器兩輸入端與對應(yīng)的單片機端口的連接線路交換,并同時將比較器的輸出極性變換,這樣抵消了比較器的輸入端累積的偏置電壓。通過在內(nèi)部將輸出連接到低通濾波器后,即使在比較器輸入端兩比較電壓非常接近,經(jīng)過濾波后也不會出現(xiàn)輸出端的振蕩現(xiàn)象,從而消除了輸出端震蕩的問題。利用內(nèi)置比較器實現(xiàn)高精度A/D圖1是一個可直接使用的A/D轉(zhuǎn)換方案,該方案是一個高精度的積分型A/D轉(zhuǎn)換器。其基本原理是用單一的I/O端口,執(zhí)行1位的數(shù)模轉(zhuǎn)換,以比較器的輸出作反饋,來維持Vout與Vin相等。圖1:利用MSP430F1121實現(xiàn)的實用A/D轉(zhuǎn)換器電路方案。
上傳時間: 2013-11-10
上傳用戶:lliuhhui
九.輸入/輸出保護為了支持多任務(wù),80386不僅要有效地實現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護。 這里下載本文源代碼。 <一>輸入/輸出保護80386采用I/O特權(quán)級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現(xiàn)輸入/輸出保護。 1.I/O敏感指令輸入輸出特權(quán)級(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問I/O空間中所有地址的最外層特權(quán)級。IOPL的值在如下圖所示的標志寄存器中。 標 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級執(zhí)行的程序所訪問。I/O許可位圖在任務(wù)狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設(shè)置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當前特權(quán)級不在I/O特權(quán)級外層時,可以正常執(zhí)行所列的全部I/O敏感指令;當特權(quán)級在I/O特權(quán)級外層時,執(zhí)行CLI和STI指令將引起通用保護異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯碼為0的通用保護異常。 由于每個任務(wù)使用各自的EFLAGS值和擁有自己的TSS,所以每個任務(wù)可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權(quán)級3執(zhí)行的應(yīng)用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問I/O地址時發(fā)生沖突,從而避免任務(wù)甲和任務(wù)乙使用使用獨享設(shè)備時發(fā)生沖突。 因此,在IOPL的基礎(chǔ)上又采用了I/O許可位圖。I/O許可位圖由二進制位串組成。位串中的每一位依次對應(yīng)一個I/O地址,位串的第0位對應(yīng)I/O地址0,位串的第n位對應(yīng)I/O地址n。如果位串中的第位為0,那么對應(yīng)的I/O地址m可以由在任何特權(quán)級執(zhí)行的程序訪問;否則對應(yīng)的I/O地址m只能由在IOPL特權(quán)級或更內(nèi)層特權(quán)級執(zhí)行的程序訪問。如果在I/O外層特權(quán)級執(zhí)行的程序訪問位串中位值為1的位所對應(yīng)的I/O地址,那么將引起通用保護異常。 I/O地址空間按字節(jié)進行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應(yīng)的I/O許可位圖中的位都為0時,該I/O指令才能被正常執(zhí)行,如果對應(yīng)位中任一位為1,就會引起通用保護異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進制位串最大長度是64K個位,即位圖的有效部分最大為8K字節(jié)。一個任務(wù)實際需要使用的I/O許可位圖大小通常要遠小于這個數(shù)目。 當前任務(wù)使用的I/O許可位圖存儲在當前任務(wù)TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲,所以位串所含的位數(shù)總被認為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內(nèi)偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達8K字節(jié),所以開始偏移應(yīng)小于56K,但必須大于等于104,因為TSS中前104字節(jié)為TSS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問許可檢查細節(jié)保護模式下處理器在執(zhí)行I/O指令時進行許可檢查的細節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯碼為0的通用保護故障;(6)若不越界,則從位圖中讀對應(yīng)字節(jié)及下一個字節(jié);(7)把讀出的兩個字節(jié)與屏蔽碼進行與運算,若結(jié)果不為0表示檢查未通過,則產(chǎn)生出錯碼為0的通用保護故障;(8)進行I/O訪問。設(shè)某一任務(wù)的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應(yīng)I/O端口00H—3FH DB 10000000B ;對應(yīng)I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應(yīng)I/O端口50H—0FFFFH DB 0FFH ;位圖結(jié)束字節(jié)TSSLen = $TSSSEG ENDS 再假設(shè)IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會引起通用保護異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細節(jié)可見,不論是否必要,當進行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節(jié)。例如,上面的第(8)條指令要對I/O位圖中的兩個位進行檢查,其低位是某個字節(jié)的最高位,高位是下一個字節(jié)的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節(jié)。另一方面,最多檢查四個連續(xù)的位,即最多也只需讀取兩個字節(jié)。所以每次要讀取兩個字節(jié)。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時產(chǎn)生越界,必須在I/O許可位圖的最后填加一個全1的字節(jié),即0FFH。此全1的字節(jié)應(yīng)填加在最后一個位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進行。當TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節(jié),于是對較小I/O地址訪問的許可檢查根據(jù)位圖進行,而對較大I/O地址訪問的許可檢查總被認為不可訪問而引起通用保護故障。因為這時會發(fā)生字節(jié)越界而引起通用保護異常,所以在這種情況下,可認為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節(jié)約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標志保護輸入輸出的保護與存儲在標志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實現(xiàn)輸入輸出保護。類似地,對EFLAGS中的IF位也必須加以保護,否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權(quán)級執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級下對這三個字段的處理情況。 不同特權(quán)級對標志寄存器特殊字段的處理 特權(quán)級 VM標志字段 IOPL標志字段 IF標志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權(quán)級0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內(nèi)層特權(quán)級執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級不滿足上述條件的情況下,當執(zhí)行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標志中的VM位總為0。 <三>演示輸入輸出保護的實例(實例九)下面給出一個用于演示輸入輸出保護的實例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過任務(wù)門調(diào)用任務(wù),實現(xiàn)任務(wù)嵌套。 1.演示步驟實例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實模式下做必要準備后,切換到保護模式;(2)進入保護模式的臨時代碼段后,把演示任務(wù)的TSS段描述符裝入TR,并設(shè)置演示任務(wù)的堆棧;(3)進入演示代碼段,演示代碼段的特權(quán)級是0;(4)通過任務(wù)門調(diào)用測試任務(wù)1。測試任務(wù)1能夠順利進行;(5)通過任務(wù)門調(diào)用測試任務(wù)2。測試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導致通用保護異常;(6)通過任務(wù)門調(diào)用測試任務(wù)3。測試任務(wù)3演示I/O敏感指令如何引起通用保護異常;(7)通過任務(wù)門調(diào)用測試任務(wù)4。測試任務(wù)4演示特權(quán)指令如何引起通用保護異常;(8)從演示代碼轉(zhuǎn)臨時代碼,準備返回實模式;(9)返回實模式,并作結(jié)束處理。
上傳時間: 2013-12-11
上傳用戶:nunnzhy
單片機應(yīng)用系統(tǒng)抗干擾技術(shù):第1章 電磁干擾控制基礎(chǔ). 1.1 電磁干擾的基本概念1 1.1.1 噪聲與干擾1 1.1.2 電磁干擾的形成因素2 1.1.3 干擾的分類2 1.2 電磁兼容性3 1.2.1 電磁兼容性定義3 1.2.2 電磁兼容性設(shè)計3 1.2.3 電磁兼容性常用術(shù)語4 1.2.4 電磁兼容性標準6 1.3 差模干擾和共模干擾8 1.3.1 差模干擾8 1.3.2 共模干擾9 1.4 電磁耦合的等效模型9 1.4.1 集中參數(shù)模型9 1.4.2 分布參數(shù)模型10 1.4.3 電磁波輻射模型11 1.5 電磁干擾的耦合途徑14 1.5.1 傳導耦合14 1.5.2 感應(yīng)耦合(近場耦合)15 .1.5.3 電磁輻射耦合(遠場耦合)15 1.6 單片機應(yīng)用系統(tǒng)電磁干擾控制的一般方法16 第2章 數(shù)字信號耦合與傳輸機理 2.1 數(shù)字信號與電磁干擾18 2.1.1 數(shù)字信號的開關(guān)速度與頻譜18 2.1.2 開關(guān)暫態(tài)電源尖峰電流噪聲22 2.1.3 開關(guān)暫態(tài)接地反沖噪聲24 2.1.4 高速數(shù)字電路的EMI特點25 2.2 導線阻抗與線間耦合27 2.2.1 導體交直流電阻的計算27 2.2.2 導體電感量的計算29 2.2.3 導體電容量的計算31 2.2.4 電感耦合分析32 2.2.5 電容耦合分析35 2.3 信號的長線傳輸36 2.3.1 長線傳輸過程的數(shù)學描述36 2.3.2 均勻傳輸線特性40 2.3.3 傳輸線特性阻抗計算42 2.3.4 傳輸線特性阻抗的重復性與阻抗匹配44 2.4 數(shù)字信號傳輸過程中的畸變45 2.4.1 信號傳輸?shù)娜肷浠?5 2.4.2 信號傳輸?shù)姆瓷浠?6 2.5 信號傳輸畸變的抑制措施49 2.5.1 最大傳輸線長度的計算49 2.5.2 端點的阻抗匹配50 2.6 數(shù)字信號的輻射52 2.6.1 差模輻射52 2.6.2 共模輻射55 2.6.3 差模和共模輻射比較57 第3章 常用元件的可靠性能與選擇 3.1 元件的選擇與降額設(shè)計59 3.1.1 元件的選擇準則59 3.1.2 元件的降額設(shè)計59 3.2 電阻器60 3.2.1 電阻器的等效電路60 3.2.2 電阻器的內(nèi)部噪聲60 3.2.3 電阻器的溫度特性61 3.2.4 電阻器的分類與主要參數(shù)62 3.2.5 電阻器的正確選用66 3.3 電容器67 3.3.1 電容器的等效電路67 3.3.2 電容器的種類與型號68 3.3.3 電容器的標志方法70 3.3.4 電容器引腳的電感量71 3.3.5 電容器的正確選用71 3.3.6 電容器使用注意事項73 3.4 電感器73 3.4.1 電感器的等效電路74 3.4.2 電感器使用的注意事項74 3.5 數(shù)字集成電路的抗干擾性能75 3.5.1 噪聲容限與抗干擾能力75 3.5.2 施密特集成電路的噪聲容限77 3.5.3 TTL數(shù)字集成電路的抗干擾性能78 3.5.4 CMOS數(shù)字集成電路的抗干擾性能79 3.5.5 CMOS電路使用中注意事項80 3.5.6 集成門電路系列型號81 3.6 高速CMOS 54/74HC系列接口設(shè)計83 3.6.1 54/74HC 系列芯片特點83 3.6.2 74HC與TTL接口85 3.6.3 74HC與單片機接口85 3.7 元器件的裝配工藝對可靠性的影響86 第4章 電磁干擾硬件控制技術(shù) 4.1 屏蔽技術(shù)88 4.1.1 電場屏蔽88 4.1.2 磁場屏蔽89 4.1.3 電磁場屏蔽91 4.1.4 屏蔽損耗的計算92 4.1.5 屏蔽體屏蔽效能的計算99 4.1.6 屏蔽箱的設(shè)計100 4.1.7 電磁泄漏的抑制措施102 4.1.8 電纜屏蔽層的屏蔽原理108 4.1.9 屏蔽與接地113 4.1.10 屏蔽設(shè)計要點113 4.2 接地技術(shù)114 4.2.1 概述114 4.2.2 安全接地115 4.2.3 工作接地117 4.2.4 接地系統(tǒng)的布局119 4.2.5 接地裝置和接地電阻120 4.2.6 地環(huán)路問題121 4.2.7 浮地方式122 4.2.8 電纜屏蔽層接地123 4.3 濾波技術(shù)126 4.3.1 濾波器概述127 4.3.2 無源濾波器130 4.3.3 有源濾波器138 4.3.4 鐵氧體抗干擾磁珠143 4.3.5 貫通濾波器146 4.3.6 電纜線濾波連接器149 4.3.7 PCB板濾波器件154 4.4 隔離技術(shù)155 4.4.1 光電隔離156 4.4.2 繼電器隔離160 4.4.3 變壓器隔離 161 4.4.4 布線隔離161 4.4.5 共模扼流圈162 4.5 電路平衡結(jié)構(gòu)164 4.5.1 雙絞線在平衡電路中的使用164 4.5.2 同軸電纜的平衡結(jié)構(gòu)165 4.5.3 差分放大器165 4.6 雙絞線的抗干擾原理及應(yīng)用166 4.6.1 雙絞線的抗干擾原理166 4.6.2 雙絞線的應(yīng)用168 4.7 信號線間的串擾及抑制169 4.7.1 線間串擾分析169 4.7.2 線間串擾的抑制173 4.8 信號線的選擇與敷設(shè)174 4.8.1 信號線型式的選擇174 4.8.2 信號線截面的選擇175 4.8.3 單股導線的阻抗分析175 4.8.4 信號線的敷設(shè)176 4.9 漏電干擾的防止措施177 4.10 抑制數(shù)字信號噪聲常用硬件措施177 4.10.1 數(shù)字信號負傳輸方式178 4.10.2 提高數(shù)字信號的電壓等級178 4.10.3 數(shù)字輸入信號的RC阻容濾波179 4.10.4 提高輸入端的門限電壓181 4.10.5 輸入開關(guān)觸點抖動干擾的抑制方法181 4.10.6 提高器件的驅(qū)動能力184 4.11 靜電放電干擾及其抑制184 第5章 主機單元配置與抗干擾設(shè)計 5.1 單片機主機單元組成特點186 5.1.1 80C51最小應(yīng)用系統(tǒng)186 5.1.2 低功耗單片機最小應(yīng)用系統(tǒng)187 5.2 總線的可靠性設(shè)計191 5.2.1 總線驅(qū)動器191 5.2.2 總線的負載平衡192 5.2.3 總線上拉電阻的配置192 5.3 芯片配置與抗干擾193 5.3.1去耦電容配置194 5.3.2 數(shù)字輸入端的噪聲抑制194 5.3.3 數(shù)字電路不用端的處理195 5.3.4 存儲器的布線196 5.4 譯碼電路的可靠性分析197 5.4.1 過渡干擾與譯碼選通197 5.4.2 譯碼方式與抗干擾200 5.5 時鐘電路配置200 5.6 復位電路設(shè)計201 5.6.1 復位電路RC參數(shù)的選擇201 5.6.2 復位電路的可靠性與抗干擾分析202 5.6.3 I/O接口芯片的延時復位205 5.7 單片機系統(tǒng)的中斷保護問題205 5.7.1 80C51單片機的中斷機構(gòu)205 5.7.2 常用的幾種中斷保護措施205 5.8 RAM數(shù)據(jù)掉電保護207 5.8.1 片內(nèi)RAM數(shù)據(jù)保護207 5.8.2 利用雙片選的外RAM數(shù)據(jù)保護207 5.8.3 利用DS1210實現(xiàn)外RAM數(shù)據(jù)保護208 5.8.4 2 KB非易失性隨機存儲器DS1220AB/AD211 5.9 看門狗技術(shù)215 5.9.1 由單穩(wěn)態(tài)電路實現(xiàn)看門狗電路216 5.9.2 利用單片機片內(nèi)定時器實現(xiàn)軟件看門狗217 5.9.3 軟硬件結(jié)合的看門狗技術(shù)219 5.9.4 單片機內(nèi)配置看門狗電路221 5.10 微處理器監(jiān)控器223 5.10.1 微處理器監(jiān)控器MAX703~709/813L223 5.10.2 微處理器監(jiān)控器MAX791227 5.10.3 微處理器監(jiān)控器MAX807231 5.10.4 微處理器監(jiān)控器MAX690A/MAX692A234 5.10.5 微處理器監(jiān)控器MAX691A/MAX693A238 5.10.6 帶備份電池的微處理器監(jiān)控器MAX1691242 5.11 串行E2PROM X25045245 第6章 測量單元配置與抗干擾設(shè)計 6.1 概述255 6.2 模擬信號放大器256 6.2.1 集成運算放大器256 6.2.2 測量放大器組成原理260 6.2.3 單片集成測量放大器AD521263 6.2.4 單片集成測量放大器AD522265 6.2.5 單片集成測量放大器AD526266 6.2.6 單片集成測量放大器AD620270 6.2.7 單片集成測量放大器AD623274 6.2.8 單片集成測量放大器AD624276 6.2.9 單片集成測量放大器AD625278 6.2.10 單片集成測量放大器AD626281 6.3 電壓/電流變換器(V/I)283 6.3.1 V/I變換電路..283 6.3.2 集成V/I變換器XTR101284 6.3.3 集成V/I變換器XTR110289 6.3.4 集成V/I變換器AD693292 6.3.5 集成V/I變換器AD694299 6.4 電流/電壓變換器(I/V)302 6.4.1 I/V變換電路302 6.4.2 RCV420型I/V變換器303 6.5 具有放大、濾波、激勵功能的模塊2B30/2B31305 6.6 模擬信號隔離放大器313 6.6.1 隔離放大器ISO100313 6.6.2 隔離放大器ISO120316 6.6.3 隔離放大器ISO122319 6.6.4 隔離放大器ISO130323 6.6.5 隔離放大器ISO212P326 6.6.6 由兩片VFC320組成的隔離放大器329 6.6.7 由兩光耦組成的實用線性隔離放大器333 6.7 數(shù)字電位器及其應(yīng)用336 6.7.1 非易失性數(shù)字電位器x9221336 6.7.2 非易失性數(shù)字電位器x9241343 6.8 傳感器供電電源的配置及抗干擾346 6.8.1 傳感器供電電源的擾動補償347 6.8.2 單片集成精密電壓芯片349 6.8.3 A/D轉(zhuǎn)換器芯片提供基準電壓350 6.9 測量單元噪聲抑制措施351 6.9.1 外部噪聲源的干擾及其抑制351 6.9.2 輸入信號串模干擾的抑制352 6.9.3 輸入信號共模干擾的抑制353 6.9.4 儀器儀表的接地噪聲355 第7章 D/A、A/D單元配置與抗干擾設(shè)計 7.1 D/A、A/D轉(zhuǎn)換器的干擾源357 7.2 D/A轉(zhuǎn)換原理及抗干擾分析358 7.2.1 T型電阻D/A轉(zhuǎn)換器359 7.2.2 基準電源精度要求361 7.2.3 D/A轉(zhuǎn)換器的尖峰干擾362 7.3 典型D/A轉(zhuǎn)換器與單片機接口363 7.3.1 并行12位D/A轉(zhuǎn)換器AD667363 7.3.2 串行12位D/A轉(zhuǎn)換器MAX5154370 7.4 D/A轉(zhuǎn)換器與單片機的光電接口電路377 7.5 A/D轉(zhuǎn)換器原理與抗干擾性能378 7.5.1 逐次比較式ADC原理378 7.5.2 余數(shù)反饋比較式ADC原理378 7.5.3 雙積分ADC原理380 7.5.4 V/F ADC原理382 7.5.5 ∑Δ式ADC原理384 7.6 典型A/D轉(zhuǎn)換器與單片機接口387 7.6.18 位并行逐次比較式MAX 118387 7.6.28 通道12位A/D轉(zhuǎn)換器MAX 197394 7.6.3 雙積分式A/D轉(zhuǎn)換器5G14433399 7.6.4 V/F轉(zhuǎn)換器AD 652在A/D轉(zhuǎn)換器中的應(yīng)用403 7.7 采樣保持電路與抗干擾措施408 7.8 多路模擬開關(guān)與抗干擾措施412 7.8.1 CD4051412 7.8.2 AD7501413 7.8.3 多路開關(guān)配置與抗干擾技術(shù)413 7.9 D/A、A/D轉(zhuǎn)換器的電源、接地與布線416 7.10 精密基準電壓電路與噪聲抑制416 7.10.1 基準電壓電路原理417 7.10.2 引腳可編程精密基準電壓源AD584418 7.10.3 埋入式齊納二極管基準AD588420 7.10.4 低漂移電壓基準MAX676/MAX677/MAX678422 7.10.5 低功率低漂移電壓基準MAX873/MAX875/MAX876424 7.10.6 MC1403/MC1403A、MC1503精密電壓基準電路430 第8章 功率接口與抗干擾設(shè)計 8.1 功率驅(qū)動元件432 8.1.1 74系列功率集成電路432 8.1.2 75系列功率集成電路433 8.1.3 MOC系列光耦合過零觸發(fā)雙向晶閘管驅(qū)動器435 8.2 輸出控制功率接口電路438 8.2.1 繼電器輸出驅(qū)動接口438 8.2.2 繼電器—接觸器輸出驅(qū)動電路439 8.2.3 光電耦合器—晶閘管輸出驅(qū)動電路439 8.2.4 脈沖變壓器—晶閘管輸出電路440 8.2.5 單片機與大功率單相負載的接口電路441 8.2.6 單片機與大功率三相負載間的接口電路442 8.3 感性負載電路噪聲的抑制442 8.3.1 交直流感性負載瞬變噪聲的抑制方法442 8.3.2 晶閘管過零觸發(fā)的幾種形式445 8.3.3 利用晶閘管抑制感性負載的瞬變噪聲447 8.4 晶閘管變流裝置的干擾和抑制措施448 8.4.1 晶閘管變流裝置電氣干擾分析448 8.4.2 晶閘管變流裝置的抗干擾措施449 8.5 固態(tài)繼電器451 8.5.1 固態(tài)繼電器的原理和結(jié)構(gòu)451 8.5.2 主要參數(shù)與選用452 8.5.3 交流固態(tài)繼電器的使用454 第9章 人機對話單元配置與抗干擾設(shè)計 9.1 鍵盤接口抗干擾問題456 9.2 LED顯示器的構(gòu)造與特點458 9.3 LED的驅(qū)動方式459 9.3.1 采用限流電阻的驅(qū)動方式459 9.3.2 采用LM317的驅(qū)動方式460 9.3.3 串聯(lián)二極管壓降驅(qū)動方式462 9.4 典型鍵盤/顯示器接口芯片與單片機接口463 9.4.1 8位LED驅(qū)動器ICM 7218B463 9.4.2 串行LED顯示驅(qū)動器MAX 7219468 9.4.3 并行鍵盤/顯示器專用芯片8279482 9.4.4 串行鍵盤/顯示器專用芯片HD 7279A492 9.5 LED顯示接口的抗干擾措施502 9.5.1 LED靜態(tài)顯示接口的抗干擾502 9.5.2 LED動態(tài)顯示接口的抗干擾506 9.6 打印機接口與抗干擾技術(shù)508 9.6.1 并行打印機標準接口信號508 9.6.2 打印機與單片機接口電路509 9.6.3 打印機電磁干擾的防護設(shè)計510 9.6.4 提高數(shù)據(jù)傳輸可靠性的措施512 第10章 供電電源的配置與抗干擾設(shè)計 10.1 電源干擾問題概述513 10.1.1 電源干擾的類型513 10.1.2 電源干擾的耦合途徑514 10.1.3 電源的共模和差模干擾515 10.1.4 電源抗干擾的基本方法516 10.2 EMI電源濾波器517 10.2.1 實用低通電容濾波器518 10.2.2 雙繞組扼流圈的應(yīng)用518 10.3 EMI濾波器模塊519 10.3.1 濾波器模塊基礎(chǔ)知識519 10.3.2 電源濾波器模塊521 10.3.3 防雷濾波器模塊531 10.3.4 脈沖群抑制模塊532 10.4 瞬變干擾吸收器件532 10.4.1 金屬氧化物壓敏電阻(MOV)533 10.4.2 瞬變電壓抑制器(TVS)537 10.5 電源變壓器的屏蔽與隔離552 10.6 交流電源的供電抗干擾方案553 10.6.1 交流電源配電方式553 10.6.2 交流電源抗干擾綜合方案555 10.7 供電直流側(cè)抑制干擾措施555 10.7.1 整流電路的高頻濾波555 10.7.2 串聯(lián)型直流穩(wěn)壓電源配置與抗干擾556 10.7.3 集成穩(wěn)壓器使用中的保護557 10.8 開關(guān)電源干擾的抑制措施559 10.8.1 開關(guān)噪聲的分類559 10.8.2 開關(guān)電源噪聲的抑制措施560 10.9 微機用不間斷電源UPS561 10.10 采用晶閘管無觸點開關(guān)消除瞬態(tài)干擾設(shè)計方案564 第11章 印制電路板的抗干擾設(shè)計 11.1 印制電路板用覆銅板566 11.1.1 覆銅板材料566 11.1.2 覆銅板分類568 11.1.3 覆銅板的標準與電性能571 11.1.4 覆銅板的主要特點和應(yīng)用583 11.2 印制板布線設(shè)計基礎(chǔ)585 11.2.1 印制板導線的阻抗計算585 11.2.2 PCB布線結(jié)構(gòu)和特性阻抗計算587 11.2.3 信號在印制板上的傳播速度589 11.3 地線和電源線的布線設(shè)計590 11.3.1 降低接地阻抗的設(shè)計590 11.3.2 減小電源線阻抗的方法591 11.4 信號線的布線原則592 11.4.1 信號傳輸線的尺寸控制592 11.4.2 線間串擾控制592 11.4.3 輻射干擾的抑制593 11.4.4 反射干擾的抑制594 11.4.5 微機自動布線注意問題594 11.5 配置去耦電容的方法594 11.5.1 電源去耦595 11.5.2 集成芯片去耦595 11.6 芯片的選用與器件布局596 11.6.1 芯片選用指南596 11.6.2 器件的布局597 11.6.3 時鐘電路的布置598 11.7 多層印制電路板599 11.7.1 多層印制板的結(jié)構(gòu)與特點599 11.7.2 多層印制板的布局方案600 11.7.3 20H原則605 11.8 印制電路板的安裝和板間配線606 第12章 軟件抗干擾原理與方法 12.1 概述607 12.1.1 測控系統(tǒng)軟件的基本要求607 12.1.2 軟件抗干擾一般方法607 12.2 指令冗余技術(shù)608 12.2.1 NOP的使用609 12.2.2 重要指令冗余609 12.3 軟件陷阱技術(shù)609 12.3.1 軟件陷阱609 12.3.2 軟件陷阱的安排610 12.4 故障自動恢復處理程序613 12.4.1 上電標志設(shè)定614 12.4.2 RAM中數(shù)據(jù)冗余保護與糾錯616 12.4.3 軟件復位與中斷激活標志617 12.4.4 程序失控后恢復運行的方法618 12.5 數(shù)字濾波619 12.5.1 程序判斷濾波法620 12.5.2 中位值濾波法620 12.5.3 算術(shù)平均濾波法621 12.5.4 遞推平均濾波法623 12.5.5 防脈沖干擾平均值濾波法624 12.5.6 一階滯后濾波法626 12.6 干擾避開法627 12.7 開關(guān)量輸入/輸出軟件抗干擾設(shè)計629 12.7.1 開關(guān)量輸入軟件抗干擾措施629 12.7.2 開關(guān)量輸出軟件抗干擾措施629 12.8 編寫軟件的其他注意事項630 附錄 電磁兼容器件選購信息632
標簽: 單片機 應(yīng)用系統(tǒng) 抗干擾技術(shù)
上傳時間: 2013-10-20
上傳用戶:xdqm
用MDK 生成bin 文件1用MDK 生成bin 文件Embest 徐良平在RV MDK 中,默認情況下生成*.hex 的可執(zhí)行文件,但是當我們要生成*.bin 的可執(zhí)行文件時怎么辦呢?答案是可以使用RVCT 的fromelf.exe 工具進行轉(zhuǎn)換。也就是說首先將源文件編譯鏈接成*.axf 的文件,然后使用fromelf.exe 工具將*.axf 格式的文件轉(zhuǎn)換成*.bin格式的文件。下面將具體說明這個操作步驟:1. 打開Axf_To_Bin 文件中的Axf_To_Bin.uv2 工程文件;2. 打開Options for Target ‘Axf_To_Bin’對話框,選擇User 標簽頁;3. 構(gòu)選Run User Programs After Build/Rebuild 框中的Run #1 多選框,在后邊的文本框中輸入C:\Keil\ARM\BIN31\fromelf.exe --bin -o ./output/Axf_To_Bin.bin ./output/Axf_To_Bin.axf 命令行;4. 重新編譯文件,在./output/文件夾下生成了Axf_To_Bin.bin 文件。在上面的步驟中,有幾點值得注意的是:1. C:\Keil\ARM\BIN31\表示RV MDK 的安裝目錄;2. fromelf.exe 命令的具體語法格式如下:命令的格式為:fromelf [options] input_file命令選項如下:--help 顯示幫助信息--vsn 顯示版本信息--output file 輸出文件(默認的輸出為文本格式)--nodebug 在生成的映象中不包含調(diào)試信息--nolinkview 在生成的映象中不包含段的信息二進制輸出格式:--bin 生成Plain Binary 格式的文件--m32 生成Motorola 32 位十六進制格式的文件--i32 生成Intel 32 位十六進制格式的文件--vhx 面向字節(jié)的位十六進制格式的文件t--base addr 設(shè)置m32,i32 格式文件的基地址--text 顯示文本信息文本信息的標志-v 打印詳細信息-a 打印數(shù)據(jù)地址(針對帶調(diào)試信息的映象)-d 打印數(shù)據(jù)段的內(nèi)容-e 打印表達式表print exception tables-f 打印消除虛函數(shù)的信息-g 打印調(diào)試表print debug tables-r 打印重定位信息-s 打印字符表-t 打印字符串表-y 打印動態(tài)段的內(nèi)容-z 打印代碼和數(shù)據(jù)大小的信息
標簽: MDK bin 可執(zhí)行文件
上傳時間: 2013-12-17
上傳用戶:AbuGe
ADT BinaryTree 的實現(xiàn)及驗證程序采用的主要數(shù)據(jù)結(jié)構(gòu):二叉樹、棧、隊算法思想:1、 先序建樹、輸出樹、后序遍歷用遞歸方法。性能分析:O( n )2、 先序遍歷、中序遍歷:性能分析:O( n )(1) 若遇到新節(jié)點非空則先入棧,然后訪問其左子樹。(2) 若為空則將棧頂結(jié)點出棧,訪問其右子樹。(3) 循環(huán)1、2直到棧為空且無節(jié)點可入棧。先序與中序的區(qū)別是:先序在入棧時訪問節(jié)點,中序在出棧時訪問節(jié)點。3、 層遍歷:性能分析:O( n )(1) 根節(jié)點入隊(2) 節(jié)點出隊并訪問(3) 若節(jié)點有左孩子,則左孩子入隊;有右孩子,則右孩子入隊。(4) 重復2、3直到隊列為空。4、 線索樹:算法與先序遍歷、中序遍歷一樣,只是將訪問節(jié)點的Visit函數(shù)改為連接前驅(qū)與后繼的操作。性能分析:O(
標簽: BinaryTree ADT 性能分析 樹
上傳時間: 2014-12-20
上傳用戶:SimonQQ
附有本人超級詳細解釋(看不懂的面壁十天?。? 一、 實際問題: 希爾排序(Shell Sort)是插入排序的一種。因D.L.Shell于1959年提出而得名。它又稱“縮小增量分類法”,在時間效率上比插入、比較、冒泡等排序算法有了較大改進。能對無序序列按一定規(guī)律進行排序。 二、數(shù)學模型: 先取一個小于n的整數(shù)d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數(shù)的記錄放在同一個組中。先在各組內(nèi)進行直接插人排序;然后,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。該方法實質(zhì)上是一種分組插入方法。 三、算法設(shè)計: 1、將相隔某個增量dlta[k]的元素構(gòu)成一個子序列。在排序過程中,逐次減小這個增量,最后當h減到1時,進行一次插入排序,排序就完成。增量序列一般采用:dlta[k]=2t-k+1-1,其中t為排序趟數(shù),1≤k≤t≤[log2 (n+1)],其中n為待排序序列的長度。按增量序列dlta[0..t-1]。 2、按增量dlta[k](1≤k≤t≤[log2 (n+1)])進行一趟希爾插入排序。 3、在主函數(shù)中控制程序執(zhí)行流程。 4、時間復雜度:1≤k≤t≤[log2 (n+1)]時為O(n3/2)。
上傳時間: 2013-12-11
上傳用戶:天涯
LZW壓縮和解壓縮程序 lzw.c 主要的功能模塊 bitio.c/bitio.h 一些支撐函數(shù),支持以比特(bit)為單位的文件I/O 用法: 壓縮 lzw E <in-file> <out-file> 解壓縮 lzw D <in-file> <out-file> 壓縮時,讀入<in-file>中內(nèi)容,壓縮后存入<out-file>中,得到壓縮文件。 解壓縮時,讀入<in-file>中內(nèi)容,將結(jié)果存入<out-file>中,得到原文件。 本代碼在linux+gcc/windows+vc下經(jīng)過測試,為了使讀者容易理解算法本身, 算法實現(xiàn)中僅采用了簡單的錯誤處理機制和優(yōu)化。
上傳時間: 2015-06-08
上傳用戶:chenbhdt
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1