儀器總線及虛擬儀器_第1頁(yè)
儀器總線及虛擬儀器_第2頁(yè)
儀器總線及虛擬儀器_第3頁(yè)
儀器總線及虛擬儀器_第4頁(yè)
儀器總線及虛擬儀器_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、五.儀器編程2013-101。匯編編程單字節(jié)數(shù)據(jù)表 單字節(jié)表用于簡(jiǎn)單數(shù)據(jù)換算場(chǎng)合,如代碼變換等。表格中,一個(gè)X值對(duì)應(yīng)一個(gè)字節(jié)的Y 值例1: 在MCS-51 單片機(jī)中,以片內(nèi)RAM 20H 單元中的X,查TAB 表中的Y 值,并將Y 存于2AH單元中,式編程。解: 源程序如下: 子程序 SLTB: MOV DPTR, #TAB MOV A, 20H MOVC A,A+DPTR MOV 2AH, A RET 子程序返回例2: 已知:RO低4位有一個(gè)十六進(jìn)制數(shù)(0-F中一個(gè)) 編出程序: 能將文轉(zhuǎn)換成相應(yīng)ASC碼并送入RO的程序。 MCS-51系列解: 查表方法:用MOVC A, A+PC ORG

2、0400H MOV A, R0 ; A R0 ANL A, #0FH ; 屏蔽高4位(要R0的底4位) ADD A, #03H ; 地址調(diào)整 #03=ASCTAB-PC =3字節(jié)=03H=字節(jié)數(shù) MOVC A, A+PC ; 查表 MOV R0., A ; 存結(jié)果 SJMP $ASCTAB: DB 0, 1, 2, 3, 4 DB 5, 6, 7, 8, 9 定義字節(jié)偽指令 DB A, B, C, D, E, F END例2(ASCTAB+1)=0 (ASCTAB+2) =1 (ASCTAB+3)=22.C編程圖形視窗可實(shí)現(xiàn)對(duì)虛擬儀器中的多種測(cè)試信號(hào)的描繪。TC/TC+ 圖形函數(shù)豐富, 如 所

3、用顯示器性能不同,相應(yīng)的常數(shù)設(shè)置也不同。以 640480 象素,16色VGA 顯示器為例說明幾種常用的圖形及彩色控制函數(shù)的使用方法。void far initgraph (int *gdriver, int *gmode, char * path); 這是一個(gè)圖形模式初始化設(shè)置的過程。當(dāng) gdriver=9, gmode=2, 表示VGA 型顯示器,分辨率640480 16色。CGA 彩色圖形卡MCGA多色圖形陣列增強(qiáng)圖形適配器(EGA,EGA64,EGAMONO)例:畫圓例:用紅色筆在藍(lán)紙(背景)上畫一個(gè)圓的C程序如下:# include # include main ( ) int gdr

4、iver, gmode;gdriver=VGA;gmode=2;initgragp (gdriver,gmode, “d:tc”);set bk color (BLUE); /*背景為藍(lán)色*/set color (RED); /*紅筆*/circle (320,240,200); /* 以(320,240)為圓心,200為半徑畫一個(gè)圓*/get ch ( ); /*等擊任何鍵*/close graph ( ); /* 返回文本模式*/簡(jiǎn)單畫線函數(shù)用當(dāng)前顏色,當(dāng)前畫線類型和定度,在(x 0,y0) 到(x1 ,y1)之間畫一條直線,不改動(dòng)當(dāng)前位置(CP)。 void far line (int

5、xo, int yo, int x1 , int y1); 從(x 0,y0) 到(x1 ,y1)畫一條直線。 void far lineto (int x, int y); 從當(dāng)前坐標(biāo)到(x, y)畫線。 void far rectangle (int left, int top, int right, int bottom); 按所給數(shù)據(jù)畫一個(gè)長(zhǎng)方形。 void far arc (int x, int y, int stangle, int endangle, int radins). 畫一條弧線。 用當(dāng)前繪圖顏色,繪出以(x, y)為圓心和radius 給出的半徑,從起始角srangle

6、 到終止角度endangle 的圓弧,當(dāng) stangle=0且enddangle =360 則畫一個(gè)圓。 void far circle (intx,int y, int radius); 畫一個(gè)圓。3.儀器的混合編程混合編程技術(shù)PC應(yīng)用系統(tǒng)與儀器設(shè)計(jì)中,實(shí)時(shí)性很強(qiáng)的操作過程=常用匯編語(yǔ)言直接編程,結(jié)果可供主程序調(diào)用。所以一個(gè)實(shí)用的儀器程序常常是用 高級(jí)語(yǔ)言 混合編寫。 匯編語(yǔ)言 常見 C語(yǔ)言 混編。 匯編語(yǔ)言 1 如何編寫可被C語(yǔ)言調(diào)用的匯編過程一 個(gè)匯編過程若要被C語(yǔ)言調(diào)用。執(zhí)行時(shí)又可順利進(jìn)行參數(shù)互傳。將匯編語(yǔ)言程序執(zhí)行結(jié)果返回到C程序中,經(jīng)按以下的約定編寫。3.混合編程1)被調(diào)匯編過程的

7、結(jié)構(gòu)規(guī)范(1)匯編程序要用 .MODEL 指示字開頭,以便在匯編過程中自動(dòng)產(chǎn)生適當(dāng)?shù)念愋驼{(diào)用和過程返回。其中多 small , compact 模式將自動(dòng)產(chǎn)生NEAR 調(diào)用。對(duì)Huge, Large, Medium模式將自動(dòng)產(chǎn)生FAR調(diào)用。 *注; .MODEL 指示字要求MASM 5.0版以上。對(duì)5.0 版以下,要求被匯編程序直接用NEAR,F(xiàn)AR具體說明。(2) 匯編程序的代碼段和數(shù)據(jù)段,要用 .CODE, DATA 說明, 5.0以下的MASM仍用 SEGMENT , GROUP, ASSUME 說明。(3)一個(gè)被調(diào)用的匯編過程名,一定要用 PUBLIC說明為一個(gè)公共塊。這個(gè)過程名要用下

8、劃線“” 標(biāo)示,如: PUBLIC 過程名由此相對(duì)應(yīng),C程序中要將所要調(diào)用的匯編過程說明為一個(gè)外部引用函數(shù): extern void 過程名( void)混合編程方法匯編過程中,某些可供C 程序使用的變量也應(yīng)用PUBLIC說明。并用下劃線“標(biāo)志。PUBLIC-變量名;由此呼應(yīng),在C程序中要把該變量表達(dá)為以下形式: entern int 變量名在匯編過程中,變量類型的定義須與C程序中的變量說明相一致。對(duì)應(yīng)列表:匯編過程中,要用BP寄存器作參數(shù)傳遞指針。因高級(jí)語(yǔ)言在調(diào)用匯編過程時(shí),是通過堆棧來傳遞參數(shù)的。在進(jìn)入?yún)R編程序時(shí),要立即用 PUSH BP 指令空出BP 寄存器。然后用 MDV BP,SP指

9、令,把BP寄存器定義為堆棧指針。= 以有效實(shí)現(xiàn) 二種語(yǔ)言程序的參數(shù)傳遞。空出B內(nèi)容進(jìn)入?yún)R編子程序,BP 不堆棧變操作的影響,還可直接訪問數(shù)據(jù),SP不能直接訪問數(shù)據(jù)。 混合編程方法進(jìn)入子匯編程序。并把執(zhí)行 PUSH BP 二條指令的堆棧。 MOV BP,SP定義BP為堆棧指針 (SP) BP指針與BP指向如圖示:用8位ADC器件組成的數(shù)據(jù)采集電路C程序與匯編語(yǔ)言 混合編程;2 儀器功能程序的混合編程方法舉例 本例用匯編程序完成ADC 0809對(duì)被測(cè)波形的數(shù)據(jù)采集,共采512點(diǎn),然后將采集到波形數(shù)據(jù)傳遞給C主程序的adc (512,d) 調(diào)用函數(shù): ( 8位數(shù)據(jù)采集系統(tǒng))主程序用C語(yǔ)言編寫:ent

10、ern void adc ( int n, int *x);int d 512;adc ( 512, d);被調(diào)數(shù)據(jù)采集函數(shù)-adc 用匯編語(yǔ)言編寫:-TEXT SEGMENT PUBLIC CODE or . MODEL( 5.0版以上)small- TEXT ENDS . CODE- DATA SEGMENT WORD PUBLIC DATA .DATA-DATA ENDS .PUBLIC-adc-BSS SEGMENT WORD PUBLIC BSS-BSS ENDSADC 0809 對(duì)被測(cè)波形的數(shù)據(jù)采集DGRDUP GROUP DATA, -BSSASSUME CS: -TEXT, D

11、S: DEROUP, SS: DGROUP-TEXT SEGMENT 匯編為808680286 386,486, 586 指令函數(shù)PUBLIC-adc; - - - - - - - - - - - - - - - - - - - - - - - - - - adc PRDC NEARpush bp PC機(jī)中;用BP 作數(shù)據(jù)指針 PC機(jī)中push si 16位通用存器,作目的變址存器中mov bp,sp 16 位通用存器 cxPC 中 16位通用存器mov cx, bp+6 地址 (基地變址尋找方式) ;取得數(shù)據(jù)點(diǎn)總數(shù)512 16位地址編移量mov si, bp+8; 取得數(shù)據(jù)存貯區(qū)首址 dx1

12、6位通用對(duì)器st: mov dx, 3e8h AL; 對(duì)INO通道進(jìn)行波形采集 (圖 5-12) ADC 0809 對(duì)被測(cè)波形的數(shù)據(jù)采集out dx, al 啟動(dòng)ADC過程 AL DX 字節(jié)(al累加器8位)call delay 直接問接調(diào)用近遠(yuǎn)過程(子程序) 數(shù)據(jù)傳送指令in al ,dx dx AL; 采到一個(gè)數(shù)據(jù) 1字節(jié),1次,無標(biāo)志mov ah,0 0 AH mov si,ax(ax-通用16 存器);存到指定單元中 ax siinc si si +1 siinc si loop st 現(xiàn)cx-1 若cx0; 512個(gè)數(shù)據(jù)尚未裁定,再回st 采集 則循環(huán)至st所指指令。pop sipop bp 棧頂字 si bp 恢復(fù)堆棧ret 過程(子程序) 返回 控制傳遞指令A(yù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論