-
運動控制技術是機電一體化的核心部分,提高運動控制技術水平對于提高我國的機電一體化技術具有至關重要的作用。運動控制技術的發展是制造自動化前進的旋律,是推動新的產業革命的關鍵技術。對于數控系統來說,最重要的是控制各個電機軸的運動,這是運動控制器接收并依照數控裝置的指令來控制各個電機軸運動從而實現數控加工的,數據加工中的定位控制精度、速度調節的性能等重要指標都與運動控制器直接相關。目前對數控系統的研究都集中在插入PC的NC控制器的研究上,而其核心部分就是對步進、伺服電機進行控制的運動控制卡的研究。對PC-NC來說,運動控制卡的性能很大程度上決定了整個數控系統的性能,而微電子和數字信號處理技術的發展及其應用,使運動控制卡的性能得到了不斷改進,集成度和可靠性大大提高。 本課題通過對運動控制技術的深入研究,并針對國內運動控制技術的研究起步較晚的現狀,結合當前運動控制領域的具體需要,緊跟當前運動控制技術研究的發展趨勢,吸收了數控技術和相關運動控制技術的最新成果,提出了基于PCI和FPGA的方案,研制了一款比較新穎的、功能強大的、具有很大柔性的四軸多功能運動控制卡。 本課題的具體研究主要有以下幾方面: 首先,通過對運動控制卡及運動控制系統等行業現狀的全面調研,和對運動控制技術的深入學習,在比較了幾種常用的運動控制方案的基礎上,提出了基于FPGA的運動控制設計方案,并規劃了板卡的總體設計。 其次,根據總體設計,規劃了板卡的結構,詳細劃分并實現了FPGA各部分的功能;利用光電隔離原理設計了數字輸入/輸出電路。 再次,利用FPGA的資源實現了PCI從設備接口,達到跟控制卡通信的目的,針對運動控制中的一些具體問題,如運動平穩性、實時控制以及多軸聯動等,在FPGA上設計了四軸運動控制電路,定義了各個寄存器的具體功能,設計了功能齊全的加/減速控制電路、變頻分配電路、倍頻分頻電路和三個功能各異的計數器電路等,自動降速點運動、A/B相編碼器倍頻計數電路等特殊功能。最后,進行了本運動控制卡的測試,從測試和應用結果來看,該卡達到預期的要求。
標簽:
FPGA
PCI
接口
上傳時間:
2013-07-27
上傳用戶:zgu489
-
該課題通過對開放式數控技術的全面調研和對運動控制技術的深入研究,并針對國內運動控制技術的研究起步較晚的現狀,結合激光雕刻領域的具體需要,緊跟當前運動控制技術研究的發展趨勢,吸收了世界開放式數控技術和相關運動控制技術的最新成果,采納了基于DSP和FPGA的方案,研制了一款比較新穎的、功能強大的、具有很大柔性的四軸多功能運動控制卡.該論文主要內容如下:首先,通過對制造業、開放式數控系統、運動控制卡等行業現狀的全面調研,基于對運動系統控制技術的深入學習,在比較了幾種常用的運動控制方案的基礎上,確定了基于DSP和FPGA的運動控制設計方案,并規劃了板卡的總體結構.其次,針對運動控制中的一些具體問題,如高速、高精度、運動平穩性、實時控制以及多軸聯動等,在FPGA上設計了功能相互獨立的四軸運動控制電路,仔細規劃并定義了各個寄存器的具體功能,設計了功能完善的加/減速控制電路、變頻分配電路、倍頻分頻電路和三個功能各異的計數器電路等,完全實現了S-曲線升降速運動、自動降速點運動、A/B相編碼器倍頻計數電路等特殊功能.再次,介紹了DSP在運動控制中的作用,合理規劃了DSP指令的形成過程,并對DSP軟件的具體實現進行了框架性的設計.然后,根據光電隔離原理設計了數字輸入/輸出電路;結合DAC原理設計了四路模擬輸出電路;實現了PCI接口電路的設計;并針對常見的干擾現象,提出了有效的抗干擾措施.最后,利用運動控制卡強大的運動控制功能,并針對激光雕刻行業進行大幅圖形掃描時需要實時處理大量的圖形數據的特別需要,在板卡第四軸完全實現了激光控制功能,并基于FPGA內部的16KBit塊RAM,開辟了大量數據區以便進行大幅圖形的實時處理.
標簽:
FPGA
DSP
運動控制
上傳時間:
2013-06-09
上傳用戶:youlongjian0
-
LT®3837 從一個 4.5V 至 20V 輸入獲取工作電壓,但可通過采用一個 VCC 穩壓器和 / 或變壓器上的一個偏壓繞組使該轉換器的輸入範圍向上擴展。
標簽:
DCDC
反激式控制器
輸入電壓
轉換器
上傳時間:
2013-11-01
上傳用戶:
-
單片機指令系統原理
51單片機的尋址方式
學習匯編程序設計,要先了解CPU的各種尋址法,才能有效的掌握各個命令的用途,尋址法是命令運算碼找操作數的方法。在我們學習的8051單片機中,有6種尋址方法,下面我們將逐一進行分析。
立即尋址
在這種尋址方式中,指令多是雙字節的,一般第一個字節是操作碼,第二個字節是操作數。該操作數直接參與操作,所以又稱立即數,有“#”號表示。立即數就是存放在程序存儲器中的常數,換句話說就是操作數(立即數)是包含在指令字節中的。
例如:MOV A,#3AH這條指令的指令代碼為74H、3AH,是雙字節指令,這條指令的功能是把立即數3AH送入累加器A中。MOV DPTR,#8200H在前面學單片機的專用寄存器時,我們已學過,DPTR是一個16位的寄存器,它由DPH及DPL兩個8位的寄存器組成。這條指令的意思就是把立即數的高8位(即82H)送入DPH寄存器,把立即數的低8位(即00H)送入DPL寄存器。這里也特別說明一下:在80C51單片機的指令系統中,僅有一條指令的操作數是16位的立即數,其功能是向地址指針DPTR傳送16位的地址,即把立即數的高8位送入DPH,低8位送入DPL。
直接尋址
直接尋址方式是指在指令中操作數直接以單元地址的形式給出,也就是在這種尋址方式中,操作數項給出的是參加運算的操作數的地址,而不是操作數。例如:MOV A,30H 這條指令中操作數就在30H單元中,也就是30H是操作數的地址,并非操作數。
在80C51單片機中,直接地址只能用來表示特殊功能寄存器、內部數據存儲器以及位地址空間,具體的說就是:1、內部數據存儲器RAM低128單元。在指令中是以直接單元地址形式給出。我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話的意思就是這0-127共128位的任何一位,例如0位是以00H這個單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。2、位尋址區。20H-2FH地址單元。3、特殊功能寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出。例如下面我們分析的一條指令 MOV IE,#85H 前面的學習我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。
關于數據存儲器RAM的內部情況,請查看我們課程的第十二課。
直接尋址是唯一能訪問特殊功能寄存器的尋址方式!
大家來分析下面幾條指令:MOV 65H,A ;將A的內容送入內部RAM的65H單元地址中MOV A,direct ;將直接地址單元的內容送入A中MOV direct,direct;將直接地址單元的內容送直接地址單元MOV IE,#85H ;將立即數85H送入中斷允許寄存器IE
前面我們已學過,數據前面加了“#”的,表示后面的數是立即數(如#85H,就表示85H就是一個立即數),數據前面沒有加“#”號的,就表示后面的是一個地址地址(如,MOV 65H,A這條指令的65H就是一個單元地址)。
寄存器尋址
寄存器尋址的尋址范圍是:1、4個工作寄存器組共有32個通用寄存器,但在指令中只能使用當前寄存器組(工作寄存器組的選擇在前面專用寄存器的學習中,我們已知道,是由程序狀態字PSW中的RS1和RS0來確定的),因此在使用前常需要通過對PSW中的RS1、RS0位的狀態設置,來進行對當前工作寄存器組的選擇。2、部份專用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和進位位CY。
寄存器尋址方式是指操作數在寄存器中,因此指定了寄存器名稱就能得到操作數。例如:MOV A,R0這條指令的意思是把寄存器R0的內容傳送到累加器A中,操作數就在R0中。INC R3這條指令的意思是把寄存器R3中的內容加1
從前面的學習中我產應可以理解到,其實寄存器尋址方式就是對由PSW程序狀態字確定的工作寄存器組的R0-R7進行讀/寫操作。
寄存器間接尋址
寄存間接尋址方式是指寄存器中存放的是操作數的地址,即操作數是通過寄存器間接得到的,因此稱為寄存器間接尋址。
MCS-51單片機規定工作寄存器的R0、R1做為間接尋址寄存器。用于尋址內部或外部數據存儲器的256個單元。為什么會是256個單元呢?我們知道,R0或者R1都是一個8位的寄存器,所以它的尋址空間就是2的八次方=256。例:MOV R0,#30H ;將值30H加載到R0中 MOV A,@R0 ;把內部RAM地址30H內的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H內的值放到累加器A中
大家想想,如果用DPTR做為間址寄存器,那么它的尋址范圍是多少呢?DPTR是一個16位的寄存器,所以它的尋址范圍就是2的十六次方=65536=64K。因用DPTR做為間址寄存器的尋址空間是64K,所以訪問片外數據存儲器時,我們通常就用DPTR做為間址寄存器。例:MOV DPTR,#1234H ;將DPTR值設為1234H(16位) MOVX A,@DPTR ;將外部RAM或I/O地址1234H內的值放到累加器A中
在執行PUSH(壓棧)和POP(出棧)指令時,采用堆棧指針SP作寄存器間接尋址。例:PUSH 30H ;把內部RAM地址30H內的值放到堆棧區中堆棧區是由SP寄存器指定的,如果執行上面這條命令前,SP為60H,命令執行后會把內部RAM地址30H內的值放到RAM的61H內。
那么做為寄存器間接尋址用的寄存器主要有哪些呢?我們前面提到的有四個,R0、R1、DPTR、SP
寄存器間接尋址范圍總結:1、內部RAM低128單元。對內部RAM低128單元的間接尋址,應使用R0或R1作間址寄存器,其通用形式為@Ri(i=0或1)。
2、外部RAM 64KB。對外部RAM64KB的間接尋址,應使用@DPTR作間址尋址寄存器,其形式為:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的單元的內容送入累加器A中。外部RAM的低256單元是一個特殊的尋址區,除可以用DPTR作間址寄存器尋址外,還可以用R0或R1作間址寄存器尋址。例如MOVX A,@R0;這條指令的意思是,把R0指定的外部RAM單元的內容送入累加器A。
堆棧操作指令(PUSH和POP)也應算作是寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。
寄存器間接尋址方式不可以訪問特殊功能寄存器!!
寄存器間接尋址也須以寄存器符號的形式表示,為了區別寄存器尋址我寄存器間接尋址的區別,在寄存器間接尋址方式式中,寄存器的名稱前面加前綴標志“@”。
基址寄存器加變址寄存器的變址尋址
這種尋址方式以程序計數器PC或DPTR為基址寄存器,累加器A為變址寄存器,變址尋址時,把兩者的內容相加,所得到的結果作為操作數的地址。這種方式常用于訪問程序存儲器ROM中的數據表格,即查表操作。變址尋址只能讀出程序內存入的值,而不能寫入,也就是說變址尋址這種方式只能對程序存儲器進行尋址,或者說它是專門針對程序存儲器的尋址方式。例:MOVC A,@A+DPTR這條指令的功能是把DPTR和A的內容相加,再把所得到的程序存儲器地址單元的內容送A假若指令執行前A=54H,DPTR=3F21H,則這條指令變址尋址形成的操作數地址就是54H+3F21H=3F75H。如果3F75H單元中的內容是7FH,則執行這條指令后,累加器A中的內容就是7FH。
變址尋址的指令只有三條,分別如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC
第一條指令JMP @A+DPTR這是一條無條件轉移指令,這條指令的意思就是DPTR加上累加器A的內容做為一個16位的地址,執行JMP這條指令是,程序就轉移到A+DPTR指定的地址去執行。
第二、三條指令MOVC A,@A+DPTR和MOVC A,@A+PC指令這兩條指令的通常用于查表操作,功能完全一樣,但使用起來卻有一定的差別,現詳細說明如下。我們知道,PC是程序指針,是十六位的。DPTR是一個16位的數據指針寄存器,按理,它們的尋址范圍都應是64K。我們在學習特殊功能寄存器時已知道,程序計數器PC是始終跟蹤著程序的執行的。也就是說,PC的值是隨程序的執行情況自動改變的,我們不可以隨便的給PC賦值。而DPTR是一個數據指針,我們就可以給空上數據指針DPTR進行賦值。我們再看指令MOVC A,@A+PC這條指令的意思是將PC的值與累加器A的值相加作為一個地址,而PC是固定的,累加器A是一個8位的寄存器,它的尋址范圍是256個地址單元。講到這里,大家應可明白,MOVC A,@A+PC這條指令的尋址范圍其實就是只能在當前指令下256個地址單元。所在,這在我們實際應用中,可能就會有一個問題,如果我們需要查詢的數據表在256個地址單元之內,則可以用MOVC A,@A+PC這條指令進行查表操作,如果超過了256個單元,則不能用這條指令進行查表操作。剛才我們已說到,DPTR是一個數據指針,這個數據指針我們可以給它賦值操作的。通過賦值操作。我們可以使MOVC A,@A+DPTR這條指令的尋址范圍達到64K。這就是這兩條指令在實際應用當中要注意的問題。
變址尋址方式是MCS-51單片機所獨有的一種尋址方式。
位尋址
80C51單片機有位處理功能,可以對數據位進行操作,因此就有相應的位尋址方式。所謂位尋址,就是對內部RAM或可位尋址的特殊功能寄存器SFR內的某個位,直接加以置位為1或復位為0。
位尋址的范圍,也就是哪些部份可以進行位尋址:
1、我們在第十二課學習51單片機的存儲器結構時,我們已知道在單片機的內部數據存儲器RAM的低128單元中有一個區域叫位尋址區。它的單元地址是20H-2FH。共有16個單元,一個單元是8位,所以位尋址區共有128位。這128位都單獨有一個位地址,其位地址的名字就是00H-7FH。這里就有一個比較麻煩的問題需要大家理解清楚了。我們在前面的學習中00H、01H。。。。7FH等等,所表示的都是一個字節(或者叫單元地址),而在這里,這些數據都變成了位地址。我們在指令中,或者在程序中如何來區分它是一個單元地址還是一個位地址呢?這個問題,也就是我們現在正在研究的位尋址的一個重要問題。其實,區分這些數據是位地址還是單元地址,我們都有相應的指令形式的。這個問題我們在后面的指令系統學習中再加以論述。
2、對專用寄存器位尋址。這里要說明一下,不是所有的專用寄存器都可以位尋址的。具體哪些專用寄存器可以哪些專用寄存器不可以,請大家回頭去看看我們前面關于專用寄存器的相關文章。一般來說,地址單元可以被8整除的專用寄存器,通常都可以進行位尋址,當然并不是全部,大家在應用當中應引起注意。
專用寄存器的位尋址表示方法:
下面我們以程序狀態字PSW來進行說明
D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P
1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示為D5H MOV C,D5H
2、位名稱表示:表示該位的名稱,例如PSW的位5是F0,所以可以用F0表示 MOV C,F0
3、單元(字節)地址加位表示:D0H單元位5,表示為DOH.5
MOV C,D0H.5
4、專用寄存器符號加位表示:例如PSW.5
MOV C,PSW.5
這四種方法實現的功能都是相同的,只是表述的方式不同而已。
例題:
1. 說明下列指令中源操作數采用的尋址方式。
MOV R5,R7 答案:寄存器尋址方式
MOV A,55H 直接尋址方式
MOV A,#55H 立即尋址方式
JMP @A+DPTR 變址尋址方式
MOV 30H,C 位尋址方式
MOV A,@R0 間接尋址方式
MOVX A,@R0 間接尋址方式
改錯題
請判斷下列的MCS-51單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。
MOV R0,@R3 答案:間址寄存器不能使用R2~R7。
MOVC A,@R0+DPTR 變址尋址方式中的間址寄存器不可使用R0,只可使用A。
ADD R0,R1 運算指令中目的操作數必須為累加器A,不可為R0。
MUL AR0 乘法指令中的乘數應在B寄存器中,即乘法指令只可使用AB寄存器組合。
標簽:
單片機指令
系統原理
上傳時間:
2013-11-11
上傳用戶:caozhizhi
-
單片機音樂中音調和節拍的確定方法:調號-音樂上指用以確定樂曲主音高度的符號。很明顯一個八度就有12個半音。A、B、C、D、E、F、G。經過聲學家的研究,全世界都用這些字母來表示固定的音高。比如,A這個音,標準的音高為每秒鐘振動440周。
升C調:1=#C,也就是降D調:1=BD;277(頻率)升D調:1=#D,也就是降E調:1=BE;311升F調:1=#F,也就是降G調:1=BG;369升G調:1=#G,也就是降A調:1=BA;415升A調:1=#A,也就是降B調: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調歌曲,或叫“唱A調”。1=C,就是說,這首歌曲的“導”要唱得同C一樣高,或者說“這歌曲唱C調”。同樣是“導”,不同的調唱起來的高低是不一樣的。各調的對應的標準頻率為: 單片機演奏音樂時音調和節拍的確定方法 經常看到一些剛學單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。 一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調”和“節拍”。音調表示一個音符唱多高的頻率,節拍表示一個音符唱多長的時間。 在音樂中所謂“音調”,其實就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標準音高,其頻率f=440Hz。當兩個聲音信號的頻率相差一倍時,也即f2=2f1時,則稱f2比f1高一個倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個倍頻程,在音樂學中稱它相差一個八度音。在一個八度音內,有12個半音。以1—i八音區為例, 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個音階的分度基本上是以對數關系來劃分的。如果我們只要知道了這十二個音符的音高,也就是其基本音調的頻率,我們就可根據倍頻程的關系得到其他音符基本音調的頻率。 知道了一個音符的頻率后,怎樣讓單片機發出相應頻率的聲音呢?一般說來,常采用的方法就是通過單片機的定時器定時中斷,將單片機上對應蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發出聲音,為了讓單片機發出不同頻率的聲音,我們只需將定時器予置不同的定時值就可實現。那么怎樣確定一個頻率所對應的定時器的定時值呢?以標準音高A為例: A的頻率f = 440 Hz,其對應的周期為:T = 1/ f = 1/440 =2272μs
由上圖可知,單片機上對應蜂鳴器的I/O口來回取反的時間應為:t = T/2 = 2272/2 = 1136μs這個時間t也就是單片機上定時器應有的中斷觸發時間。一般情況下,單片機奏樂時,其定時器為工作方式1,它以振蕩器的十二分頻信號為計數脈沖。設振蕩器頻率為f0,則定時器的予置初值由下式來確定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時器待確定的計數初值。因此定時器的高低計數器的初值為: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256
將t=1136μs代入上面兩式(注意:計算時應將時間和頻率的單位換算一致),即可求出標準音高A在單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數器的予置初值為 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據上面的求解方法,我們就可求出其他音調相應的計數器的予置初值。 音符的節拍我們可以舉例來說明。在一張樂譜中,我們經常會看到這樣的表達式,如1=C 、1=G …… 等等,這里1=C,1=G表示樂譜的曲調,和我們前面所談的音調有很大的關聯, 、 就是用來表示節拍的。以 為例加以說明,它表示樂譜中以四分音符為節拍,每一小結有三拍。比如:
其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時長為四分音符的一半,即為八分音符長,3、4的時長為八分音符的一半,即為十六分音符長,5的時長為四分音符的一半,即為八分音符長,6的時長為四分音符長。那么一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400—500ms 。我們以一拍的時長為400ms為例,則當以四分音符為節拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms。可見,在單片機上控制一個音符唱多長可采用循環延時的方法來實現。首先,我們確定一個基本時長的延時程序,比如說以十六分音符的時長為基本延時時間,那么,對于一個音符,如果它為十六分音符,則只需調用一次延時程序,如果它為八分音符,則只需調用二次延時程序,如果它為四分音符,則只需調用四次延時程序,依次類推。通過上面關于一個音符音調和節拍的確定方法,我們就可以在單片機上實現演奏音樂了。具體的實現方法為:將樂譜中的每個音符的音調及節拍變換成相應的音調參數和節拍參數,將他們做成數據表格,存放在存儲器中,通過程序取出一個音符的相關參數,播放該音符,該音符唱完后,接著取出下一個音符的相關參數……,如此直到播放完畢最后一個音符,根據需要也可循環不停地播放整個樂曲。另外,對于樂曲中的休止符,一般將其音調參數設為FFH,FFH,其節拍參數與其他音符的節拍參數確定方法一致,樂曲結束用節拍參數為00H來表示。下面給出部分音符(三個八度音)的頻率以及以單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數器的予置初值 : C調音符
頻率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調音符 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調音符 頻率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
-
剖析Intel IA32 架構下C 語言及CPU 浮點數機制
Version 0.01
哈爾濱工業大學 謝煜波
(email: xieyubo@126.com 網址:http://purec.binghua.com)
(QQ:13916830 哈工大紫丁香BBSID:iamxiaohan)
前言
這兩天翻看一本C 語言書的時候,發現上面有一段這樣寫到
例:將同一實型數分別賦值給單精度實型和雙精度實型,然后打印輸出。
#include <stdio.h>
main()
{
float a
double b
a = 123456.789e4
b = 123456.789e4
printf(“%f\n%f\n”,a,b)
}
運行結果如下:
標簽:
Version
xieyubo
Intel
email
上傳時間:
2013-12-25
上傳用戶:徐孺
-
問題描述
序列Z=<B,C,D,B>是序列X=<A,B,C,B,D,A,B>的子序列,相應的遞增下標序列為<2,3,5,7>。
一般地,給定一個序列X=<x1,x2,…,xm>,則另一個序列Z=<z1,z2,…,zk>是X的子序列,是指存在一個嚴格遞增的下標序列〈i1,i2,…,ik〉使得對于所有j=1,2,…,k使Z中第j個元素zj與X中第ij個元素相同。
給定2個序列X和Y,當另一序列Z既是X的子序列又是Y的子序列時,稱Z是序列X和Y的公共子序列。
你的任務是:給定2個序列X、Y,求X和Y的最長公共子序列Z。
標簽:
lt
序列
上傳時間:
2014-01-25
上傳用戶:netwolf
-
ADT600-1的基地址0x300,中斷為7, 3個定時器采用級連,CLK0的時鐘源是模塊上的8M震蕩器,中斷源為71054定時器的輸出OUT2。采集電壓范圍為+/-5V,請按《ADT200/ADT600技術手冊 版本B》上的說明對SW1,W5,W6,W9跳線。若你想修改中斷號和基地址,請修改config.h相應的常量ADT_IRQ, ADT_BASE定義,然后重新編譯安裝,即運行make all
注意:不要在其他文件中修改。
標簽:
ADT
600
300
基地址
上傳時間:
2016-02-12
上傳用戶:evil
-
ADT600-1的基地址0x300,中斷為7, 3個定時器采用級連,CLK0的時鐘源是模塊上的8M震蕩器,中斷源為71054定時器的輸出OUT2。采集電壓范圍為+/-5V,請按《ADT200/ADT600技術手冊 版本B》上的說明對SW1,W5,W6,W9跳線。若你想修改中斷號和基地址,請修改config.h相應的常量ADT_IRQ, ADT_BASE定義,然后重新編譯安裝,即運行make all
注意:不要在其他文件中修改。
標簽:
ADT
600
300
基地址
上傳時間:
2013-12-10
上傳用戶:tonyshao
-
ADT600-1的基地址0x300,中斷為7, 3個定時器采用級連,CLK0的時鐘源是模塊上的8M震蕩器,中斷源為71054定時器的輸出OUT2。采集電壓范圍為+/-5V,請按《ADT200/ADT600技術手冊 版本B》上的說明對SW1,W5,W6,W9跳線。若你想修改中斷號和基地址,請修改config.h相應的常量ADT_IRQ, ADT_BASE定義,然后重新編譯安裝,即運行make all
注意:不要在其他文件中修改。
標簽:
ADT
600
300
基地址
上傳時間:
2013-12-25
上傳用戶:wl9454