北航微機原理實驗(源程序)-教師手冊_第1頁
北航微機原理實驗(源程序)-教師手冊_第2頁
北航微機原理實驗(源程序)-教師手冊_第3頁
北航微機原理實驗(源程序)-教師手冊_第4頁
北航微機原理實驗(源程序)-教師手冊_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄第一章:匯編基礎與硬件基礎 (2實驗二TPC2300A集成開發(fā)環(huán)境 (2內容1.2.2 分段存儲結構和數(shù)據(jù)變量的定義 (2內容1.2.3 匯編程序設計-數(shù)據(jù)串操作 (3內容1.2.4 匯編程序設計-循環(huán)和分支程序 (3內容1.2.5 匯編程序設計-子程序及其調用 (4內容1.2.6 匯編程序設計-DOS中斷調用 (5實驗三TPC-2003A接口箱系統(tǒng)硬件及邏輯電路 (6內容1.3.2 I/O譯碼電路 (6第二章基礎實驗 (7實驗一8253接口芯片基礎 (7內容2.1.1 8253用于手動脈沖計 (7內容2.1.2 8253用于分頻 (8實驗二8255接口芯片基礎 (9內容2.2.1 825

2、5作為基本輸入輸出 (9內容2.2.2 8255方式0的應用-紅綠燈控制 (9內容2.2.3 8255對8253GATE的控制 (11內容2.2.4: 手動脈沖計數(shù)輸出顯示 (13第三章綜合實驗 (14實驗一AD/DA接口芯片基礎 (14內容3.1.1:ADC0809的數(shù)據(jù)采集功能 (14內容3.1.2:DAC0832的波形輸出功能 (16實驗一8253/8255綜合實驗 (16內容3.2.1: 繼電器控制 (16內容3.2.2: 自動計數(shù)輸出顯示 (18內容3.2.3 直流電機轉速顯示與計算 (19實驗三8253/8255/DAC0832綜合實驗 (23內容3.3.1:直流電機轉速控制 (2

3、3內容3.3.2:直流電機測速 (25實驗四8255綜合實驗 (28內容3.4.1:步進電機控制 (28第一章:匯編基礎與硬件基礎;* *;實驗二TPC2300A集成開發(fā)環(huán)境;* *;內容1.2.2 分段存儲結構和數(shù)據(jù)變量的定義;*;* *;* 編寫程序統(tǒng)計字符串str的字符個數(shù),*;*存于counts單元。字符串以“$”為結束符,*;* 長度小于255個字符。*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 1-2-2.asm *;*;mydata segmentstr db 'assemble language$'counts

4、 db ?mydata endsmycode segmentassumecs:code,ds:datastart: mov ax,datamov ds, axmov cl,0mov bx, offset strnext: cmp bx '$'jz exitinc clinc bxjmp nextexit: mov counts,cl ;存儲字符的個數(shù)mov ah,4chint21hmycode endsend start;*end of program 1-2-2.asm*內容1.2.3 匯編程序設計-數(shù)據(jù)串操作;*;* *;* 將buffa開始的連續(xù)字節(jié)單元數(shù)*;* 傳送到b

5、uffb開始的連續(xù)字操作數(shù)單元*;* (不考慮數(shù)據(jù)塊的重疊*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 1-2-3.asm *;*;data segmentbufa dw 0234h,2345h,987fhdw 0c234h,0012h,1234h,7890hbufb dw 7dup(?data endscode segmentassume cs:code,ds:datamov ax,datamov ds, axmov si,offset bufamov di,offset bufbmov cx,14next: mov ax,simov di

6、,axinc siinc diloop next ;循環(huán)傳送,直到傳送完mov ah,4chint 21hcode endsend start;*end of progme 1-2-3.asm*;內容1.2.4 匯編程序設計-循環(huán)和分支程序;*;* 在字節(jié)存儲單元d1、d2和d3中存有三個*;*不相等無符號數(shù),由大到小排列后存于d1、d2、d2,*;* 注意使用無符號數(shù)比較時的轉移指令。*;* Create Data: 26/06/2009 YHB *;* Prog ID: 1-2-4.asm *;*;data segmentd1 db 30hd2 db 0e2hd3 db 80hdata e

7、ndscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,d1mov bl,d2mov cl,d3cmp al,blja lplxchg al,bllpl: cmp al,clja lp2xchg al,cllp2: cmp bl,clja lp3xchg bl,cllp3: mov d1,almov d2,blmov d3,clmov ah,4chint 21hcode endsend start;*end of program 1-2-4.asm*;內容1.2.5 匯編程序設計-子程序及其調用;* *;*

8、計算3個帶符號數(shù)的絕對值之和,三個數(shù)長度為*;* 字類型,要求用子程序計算絕對值,用主程序實現(xiàn)*;* 累加;整理實驗結果。*;* Create Data: 26/06/2009 YHB *;* Prog ID: 1-2-5.asm *;*;mydata segmentdata dw -20h, 34h, 21h,23a5h,1200habsm dw 0mydata endsmycode segmentassume cs:mycode, ds:mydatastart: mov ax,mydatamov ds,axmov si, offset datamov cx, 5xor bx,bxrept:

9、 mov ax,sicall subabsadd bx,axinc siinc siloop reptmov absm,bx ;絕對值之和mov ah,4chint 21hsubabs proc nearand al, aljns bckneg albck: retsubabs endpmycode endsend start;*end of program 1-2-5.asm*;內容1.2.6 匯編程序設計-DOS中斷調用;*;* 利用DOS中斷6號功能調用,在屏幕上顯示字符AZ *;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 1-2-6.a

10、sm *;*;code segmentassume cs:codestart: mov dl,'A'mov cx,26next: mov ah,06h ;DOS調用,功能好06,dl中為在屏幕上顯示的字符int 21hinc dl ;下一個字符ASCIIloop next ;顯示下一個字符mov ah,4chint 21hcode endsend start;*end of program 1-2-6.asm*;實驗三TPC-2003A接口箱系統(tǒng)硬件及邏輯電路內容1.3.2 I/O譯碼電路;*;* Create Data: 26/06/2009 YHB *;* Prog ID:

11、 1-3-2.asm *;*;ioport equ 0ec00h-0280h; 0ec00h替換為本機基地址outport1 equ ioport+2a0houtport2 equ ioport+2a8hcode segmentassume cs:codestart: mov dx,outport1out dx,alcall delay ;調延時子程序mov dx,outport2out dx,alcall delay ;調延時子程序mov ah,1 ;bios中斷調用,判斷有無鍵入字符,int 16hje start ;zf=1無鍵入,轉start繼續(xù),zf=0有鍵入,結束mov ah,4c

12、hint 21hdelay proc near ;延時子程序mov bx,2000 ;修改計數(shù)值可改變LED亮滅頻率lll: mov cx,0ll: loop lldec bxjne lllretdelay endpcode endsend start;*end of program 1-3-2.asm*;第二章基礎實驗實驗一8253接口芯片基礎內容2.1.1 8253用于手動脈沖計; ;*;*; Create Data: 26/06/2009 YHB *;* Prog ID: 2-1-1.asm *;*;ioport equ 0d400h-0280h ; 0ec00h替換為本機基地址io53

13、ctl equ ioport+283hio53_0 equ ioport+280hcode segmentassume cs:codestart: mov al,14h ;設置8253通道0為工作方式2,二進制計數(shù)mov dx,io53ctl ;8253 控制口端口out dx,al ;送控制字mov dx,io53_0 ;計數(shù)器0端口mov al,0fh ;設計數(shù)初值0FH (0aQout dx,al ;送計數(shù)初值lll: in al,dx ;讀計數(shù)初值call disp ;調顯示子程序push dx ;保護端口值,防止中斷調用破壞mov ah,06h ;6號中斷,mov dl,0ffh ;

14、表示該功能調用是輸入,如果dl不是0ffh,表示把dl中的asciia碼輸出int 21hpop dxjz lll ;循環(huán)顯示mov ah,4ch ;退出int 21hdisp proc near ;顯示子程序push dx ;dx為端口地址,先保存起來,防止后面調用中斷功能時使用dl寄存器時破壞dx值and al,0fh ;首先取低四位,al值是讀取的計數(shù)器的當前計數(shù)值mov dl,alcmp dl,9 ;判斷當前計數(shù)值是否<=9jle num ;若為'0'-'9',其ASCII碼值為計數(shù)值加30H,0+30h=30hadd dl,7 ;否為'A

15、'-'F',其ASCII碼值為計數(shù)值加37H, A+37h=41hnum: add dl,30hmov ah,02h ;中斷功能號02,顯示ASCII值為dl的字符int 21hmov dl,0dh ;顯示回車符int 21hmov dl,0ah ;顯示換行符int 21hpop dxret ;子程序返回disp endpcode endsend start;*end of program 2-1-1.asm*;內容2.1.2 8253用于分頻; ;*; ;* 用1MHz的頻率源,輸出1Hz的頻率,*; ;* 用示波器或者邏輯筆觀察*;* *;* Create Data

16、: 26/06/2009 YHB *;* Prog ID: 2-1-2.asm *;*; ioport equ 0ec00h-0280h ;0ec00h替換為本機基地址io8253a equ ioport+280hio8253b equ ioport+281hio8253d equ ioport+283hcode segmentassume cs:codestart: mov dx,io8253d ;向8253寫控制字mov al,36h ;使0通道為工作方式3out dx,al ;寫入控制字mov ax,1000 ;寫入循環(huán)計數(shù)初值1000mov dx,io8253aout dx,al ;先

17、寫入低字節(jié)mov al,ahout dx,al ;后寫入高字節(jié)mov dx,io8253dmov al,76h ;設8253通道1工作方式2out dx,al ;寫入控制字mov ax,1000 ;寫入循環(huán)計數(shù)初值1000mov dx,io8253bout dx,al ;先寫低字節(jié)mov al,ahout dx,al ;后寫高字節(jié)mov ah,4ch ;程序退出int 21hcode endsend start;*end of program 2-1-2.asm*;實驗二8255接口芯片基礎內容2.2.1 8255作為基本輸入輸出;*;* *;* 端口設置: C口輸入,A口輸出*;* *;*

18、Create Data: 26/06/2009 YHB *;* Prog ID: 2-2-1.asm *;*;ioport equ 0d400h-0280h ;0d400h替換為本機基地址io55a equ ioport+288hio55ctl equ ioport+28bhio55c equ ioport+28ahcode segmentassume cs:codestart: mov dx,io55ctl ;設8255為C口輸入,A口輸出mov al,8bhout dx,al ;送入控制字inout: mov dx,io55c ;從C口輸入一數(shù)據(jù)in al,dxmov dx,io55a ;

19、從A口輸出剛才自C口out dx,al ;所輸入的數(shù)據(jù)mov dl,0ffh ;判斷是否有按鍵,dos中斷功能06hmov ah,06hint 21hjz inout ;若無,則繼續(xù)自C口輸入,A口輸出;zf=1表示無鍵按下mov ah,4ch ;否則返回DOSint 21hcode endsend start;*end of program 2-2-1.asm*;內容2.2.2 8255方式0的應用-紅綠燈控制;*;*;* *;* 十字路口紅綠燈模擬*;* 端口各燈的設置: *;* L7紅L6黃L5綠0 0 L2紅L1黃L0綠*;* L7L6L5 模擬南北向,L2L1L0模擬東西向*;* *

20、;* Create Data: 26/06/2009 YHB *;* Prog ID: 2-2-2.asm *;*;data segmentioport equ 0ec00h-0280h ;0ec00h替換為本機基地址io55a equ ioport+288hio55b equ ioport+289hio55c equ ioport+28ahio55ctl equ ioport+28bhtraffctl db 24h,44h,81h,82hmsg db 0dh,0ah, 'check L7 L6 L5 and L2 L1 L0 ', 0dh,0ah,'press any

21、 ken to stop program',0ah,0dh,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset msg ;屏幕上顯示提示信息mov ah,09h ;中斷功能號09hint 21hctn: mov dx,io55ctlmov al,90hout dx,al ;設置8255為C口輸出mov dx,io55cmov al,traffctlout dx,al ;南北綠燈,東西紅燈,L7L0 =24hcall delaymov al,traf

22、fctl+1 ;南北黃燈,東西紅燈,L7L0 =44hout dx,alcall delaymov al,traffctl+2 ;南北紅燈,東西綠燈,L7L0 =81hout dx,alcall delaymov al,traffctl+3 ;南北紅燈,東西黃燈,L7L0 =82hout dx,alcall delaypush dxmov ah,06hmov dl,0ffhint 21hpop dxjz ctn ;沒有鍵按下,繼續(xù)循環(huán)exit: mov ah,4chint 21hdelay proc near ;延時子程序,采用寄存器自減實現(xiàn)mov cx,0ffffhcxdown: mov s

23、i,0ffffhsidown: dec sijnz sidownloop cxdownretdelay endpcode endsend start;*end of program 2-2-2.asm*;內容2.2.3 8255對8253GATE的控制;*;* 8255對8253計數(shù)器門控*; create 06/07/2009 by YHB *; program ID: 2-2-3.asm *;*;ioport equ 0ec00h-0280hio55ctl equ ioport+28bh ;8255控制口io55a equ ioport+288h ;8255 A口io55c equ iop

24、ort+28ah ;8255Cio53ctl equ ioport+283h ;8253控制io53_2 equ ioport+282h ;8253計數(shù)器2io53_1 equ ioport+281h ;8253計數(shù)器1io53_0 equ ioport+280h ;8253計數(shù)器0data segmentmess db 'Press any key to exit the program',0aH,0dH,'$'led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hdata

25、endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset mess ;在屏幕上顯示提示信息mov ah,09hint 21h ;顯示提示信息mov dx,io55ctl ;8255,方式0,A口輸出,C口高四位輸入,C口低四位輸出mov al,88hout dx,almov dx,io53ctlmov al,36h ;計數(shù)器0,方式3,先讀寫低8位,再讀寫高8位out dx,al ;送控制端口mov dx,io53_0mov ax,10000 ;輸入時鐘1MHZ,計數(shù)初值50000,輸出時鐘周期

26、50msout dx,alnopnopmov al,ahout dx,almov dx,io53ctlmov al,54h ;計數(shù)器1,方式2,只讀寫低8位out dx,al ;送控制端口mov dx,io53_1mov al,100 ;輸入CLK1接OUT0,計數(shù)初值100out dx,al ;送初值mov dx,io53ctlmov al,94h ;計數(shù)器2,方式2,只讀寫低8位out dx,almov dx,io53_2mov al,0fh ;計數(shù)初值out dx,alctn: mov dx,io53_2;讀當前計數(shù)值并顯示call leddispmov ah,01h ;判斷有無鍵按下i

27、nt 16hjnz stp ;zf=0,有鍵按下,返回,zf=1,無鍵按下,繼續(xù)程序mov dx,io55cin al,dx ;讀C口狀態(tài)and al,80h ;判斷PC7是否為1jnz seth ; 如為1,轉seth,mov dx,io55cmov al,0h ;否者,設置PC0為低電平out dx,aljmp ctnseth: mov dx,io55c ;設置PC0為高電平mov al,0ffhout dx,aljmp ctnstp: mov ah,4ch ;退出程序,返回DOSint 21hleddisp proc nearpush dxin al,dx ;讀當前計數(shù)值mov bx,o

28、ffset led ;bx為數(shù)碼表的起始地址xlat ;求出相應的段碼代表的LED數(shù)字,存于almov dx,io55a ;從8255的A口輸出out dx,alpop dxretleddisp endpcode endsend start;*end of program 2-2-3.asm*;內容2.2.4: 手動脈沖計數(shù)輸出顯示*;* *;* 輸入為脈沖發(fā)生器,在LED上輸出F0的計數(shù)值*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 2-2-3.asm *;*;data segmentioport equ 0ec00h-0280h ;0ec

29、00h由本機接口卡實際基地址代替io55a equ ioport+288hio55b equ ioport+289hio55c equ ioport+28ahio55ctl equ ioport+28bhio53_0 equ ioport+280hio53_1 equ ioport+281hio53_2 equ ioport+282hio53ctl equ ioport+283hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hmesg db 0dh,0ah,'check led for timi

30、ng value, press any key to stop program',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io55ctl ;使8255的A口為輸出方式mov ax,80hout dx,almov dx,io55a ;LED清屏mov al,0out dx,almov dx,offset mesg ;屏幕上顯示提示mov ah,09hint 21hmov dx,io53ctl ;向8253寫控制字mov al,14h ;

31、使0通道為工作方式2,二進制計數(shù)out dx,almov al,0fh ;計數(shù)初值mov dx,io53_0out dx,alctn: call leddisp ;調LED顯示子程序push dx ;保存8253-2通道端口地址mov ah,06hmov dl,0ffhint 21hpop dxjz ctn ;沒有鍵按下時,繼續(xù)循環(huán)mov ah,4ch ;有鍵按下,退出int 21hleddisp proc nearpush dxin al,dx ;讀當前計數(shù)值mov bx,offset led ;bx為數(shù)碼表的起始地址xlat ;求出相應的段碼代表的LED數(shù)字,存于al mov dx,io5

32、5a ;從8255的A口輸出out dx,alpop dxretleddisp endpcode endsend start;*end of program 2-2-3.asm*;第三章綜合實驗實驗一AD/DA接口芯片基礎內容3.1.1:ADC0809的數(shù)據(jù)采集功能;*;* *;* ADC0809的數(shù)據(jù)采集功能*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-1-1.asm *;*;ioport equ 0ec00h-0280h ;0ec00h替換為本機基地址io0809a equ ioport+298hcode segmentassume

33、cs:codestart: mov dx,io0809a ;啟動A/D轉換器out dx,almov cx,0ffh ;延時delay: mov si,0ffh ;選擇顯示刷新速率delay1: dec sijnz delay1loop delayin al,dx ;從A/D轉換器輸入數(shù)據(jù)mov bl,al ;將AL保存到BLmov cl,4shr al,cl ;將AL右移四位;bios 中斷調用mov dh,05 ;光標移動到第5行第5列顯示mov dl,05mov ah,02int 10hcall disp ;調顯示子程序顯示其高四位mov al,bland al,0fh ;高四位清零;b

34、ios 中斷調用mov dh,05 ;光標移動到第5行第8列顯示mov dl,08hmov ah,02int 10hcall disp ;調顯示子程序顯示其低四位mov ah,02 ;dos中斷功能02h,mov dl,20h ;加回車符,將dl中的ascii碼輸出到屏幕int 21hmov dl,20hint 21hpush dxmov ah,06h ;判斷是否有鍵按下,dos中斷功能06hmov dl,0ffh ;表示該功能調用時輸入,如果dl不是0ffh,表示把dl中的asciia碼輸出int 21hpop dxje start ;若沒有轉START,zf=1表示無鍵按下,zf=0有鍵按

35、下,則結束mov ah,4ch ;退出int 21hdisp proc near ;顯示子程序mov dl,alcmp dl,9 ;比較DL是否>9jle ddd ;若不大于則為'0'-'9',加30h為其ASCII碼add dl,7 ;否則為'A'-'F',再加7ddd: add dl,30h ;顯示mov ah,02int 21hretdisp endpcode endsend start;*end of program 3-1-1.asm*;內容3.1.2:DAC0832的波形輸出功能;*;* *;* DAC0832的

36、波形輸出功能*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-1-2.asm *;*;ioport equ 0ec00h-0280h ;0ec00h替換為本機基地址io0832a equ ioport+290hcode segmentassume cs:codestart: mov cl,0mov dx,io0832alll: mov al,clout dx,alinc cl ;cl加1inc clinc clinc clinc clinc clinc clpush dxmov ah,06h ;中斷06功能mov dl,0ffh ;dl=0f

37、fh,表示輸入,判斷是否有鍵按下int 21hpop dxjz lll ;若無則轉LLL,zf=1無鍵按下,zf=0有鍵按下則結束mov ah,4ch ;返回DOSint 21hcode endsend start;*end of program 3-1-2.asm*;實驗一8253/8255綜合實驗內容3.2.1: 繼電器控制;*;*;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-2-1.asm *;*;ioport equ 0ec00h-0280h ;0ec00h由本機接口卡實際基地址代替io53_0 equ ioport+280hio53_1

38、equ ioport+281hio53ctl equ ioport+283hio55a equ ioport+288hio55ctl equ ioport+28bhcode segmentassume cs:codestart: mov dx,io55ctl ;設8255為A口輸入,C口輸出,控制口mov al,90h ;控制字lll: out dx,almov al,01 ;將PC0置位out dx,al ;送控制字到控制口call delay ;延時5smov al,0 ;將PC0復位out dx,alcall delay ;延時5sjmp lll ;轉llldelay proc near

39、 ;延時子程序push dxmov dx,io53ctl ;設8253計數(shù)器為方式3,控制口mov al,36h ;控制字out dx,almov dx,io53_0 ;8253計數(shù)器0mov ax,1000 ;寫入計數(shù)器初值1000out dx,almov al,ahout dx,almov dx,io53ctl ;8253控制口mov al,70h ;設計數(shù)器1為工作方式0out dx,almov dx,io53_1 ;8253計數(shù)器1mov ax,1000 ;寫入計數(shù)器初值500out dx,almov al,ahout dx,alll2: mov ah,06 ;中斷06號調用mov d

40、l,0ffh ;dl=0ffh,表示輸入,是否有鍵按下int 21hjne exit ;zf=0,有鍵按下,若有則轉exit,zf=1無鍵按下mov dx,io55a ;8255A口in al,dx ;查詢8255的PA0是否為高電平and al,01jz ll2 ;若不是則繼續(xù),若是,則結束pop dx ;釋放調用子程序前的端口地址值ret ;定時時間到,子程序返回exit: mov ah,4chdelay endpcode endsend start;*end of program 3-2-1.asm*;內容3.2.2: 自動計數(shù)輸出顯示;* *;* *;* *;* 輸入為1MHz的頻率,

41、在LED上輸出F0的計數(shù)值*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-2-2.asm *;*;data segmentioport equ 0ec00h-0280h ;0ec00h由本機接口卡實際基地址代替io55a equ ioport+288hio55b equ ioport+289hio55c equ ioport+28ahio55ctl equ ioport+28bhio53_0 equ ioport+280hio53_1 equ ioport+281hio53_2 equ ioport+282hio53ctl equ iopo

42、rt+283hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hmesg db 0dh,0ah,'check led for timing value',0dh,0ah,' press any key to stop program',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io55ctl ;使8255的A口為輸出方式mo

43、v ax,80hout dx,almov dx, offset mesg ;在屏幕上顯示提示信息mov ah,09hint 21hmov dx,io53ctl ;向8253寫控制字mov al,36h ;使0通道為工作方式3out dx,almov ax,1000 ;寫入循環(huán)計數(shù)初值1000mov dx,io53_0out dx,al ;先寫入低字節(jié)out dx,al ;后寫入高字節(jié)mov dx,io53ctlmov al,76h ;設8253通道1工作方式2out dx,almov ax,1000 ;寫入循環(huán)計數(shù)初值1000mov dx,io53_1out dx,al ;先寫低字節(jié)mov a

44、l,ahout dx,al ;后寫高字節(jié)mov dx,io53ctlmov al,94h ;計數(shù)器2工作方式2out dx,almov al,0fhmov dx,io53_2out dx,alctn: call leddisp ;調LED顯示子程序push dx ;保存8253-2通道端口地址mov ah,06hmov dl,0ffhint 21hpop dxjz ctn ;沒有鍵按下時,繼續(xù)循環(huán)mov ah,4ch ;有鍵按下,退出int 21hleddisp proc nearpush dxin al,dx ;讀當前計數(shù)值mov bx,offset led ;bx為數(shù)碼表的起始地址xlat

45、 ;求出相應的段碼代表的LED數(shù)字,存于al mov dx,io55a ;從8255的A口輸出out dx,alpop dxretleddisp endpcode endsend start;*end of program 3-2-2.asm*;內容3.2.3 直流電機轉速顯示與計算;* *;* 在屏幕上顯示編碼器脈沖數(shù)*;* 及計數(shù)器時間,手工計算出直流電機轉速*;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-2-3.asm *;*;ioport equ 0ec00h-0280h ;0ec00h由本機的接口卡基地址代替io55ctl equ iop

46、ort+28bh ;8255控制口io55a equ ioport+288h ;8255 A口io55c equ ioport+28ah ;8255Cio53ctl equ ioport+283h ;8253控制io53_2 equ ioport+282h ;8253計數(shù)器2io53_1 equ ioport+281h ;8253計數(shù)器1io53_0 equ ioport+280h ;8253計數(shù)器0data segmentmess db 'Press any key to exit the program',0aH,0dH,'$'mesg1 db 'N

47、o.Rad','$'mesg2 db 'n(T=n*Tout2','$'led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hcount4 db 0count3 db 0count2 db 0count1 db 0data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset mess ;在屏幕上顯示提示信息mov ah,09hint 21h ;顯示提

48、示信息mov dx,io55ctl ;8255,方式0,A口輸出,C口高四位輸入,C口低四位輸出mov al,88hout dx,almov dx,io53ctlmov al,36h ;計數(shù)器0,方式3,先讀寫低8位,再讀寫高8位out dx,al ;送控制端口mov dx,io53_0mov ax,50000 ;輸入時鐘1MHZ,計數(shù)初值50000,輸出時鐘周期50msout dx,alnopnopmov al,ahout dx,almov dx,io53ctlmov al,54h ;計數(shù)器1,方式2,只讀寫低8位out dx,al ;送控制端口mov dx,io53_1mov al,0 ;輸入CLK1接OUT0,計數(shù)初值100out dx,al ;送初值mov dx,io53ctlmov al,0b4h ;計數(shù)器2,方式2,先讀寫低8位,再讀寫高8位out dx,al ;CLK2接直流電機計數(shù)器mov dx,io53_2mov al,0ffh ;計數(shù)初值out dx,alnopnopout dx,alctn: mov dh,04mov dl,03mov ah,02int 10hmov dx,offset

溫馨提示

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

評論

0/150

提交評論