北航微機(jī)原理實(shí)驗(yàn)(源程序)-教師手冊(cè)_第1頁(yè)
北航微機(jī)原理實(shí)驗(yàn)(源程序)-教師手冊(cè)_第2頁(yè)
北航微機(jī)原理實(shí)驗(yàn)(源程序)-教師手冊(cè)_第3頁(yè)
北航微機(jī)原理實(shí)驗(yàn)(源程序)-教師手冊(cè)_第4頁(yè)
北航微機(jī)原理實(shí)驗(yàn)(源程序)-教師手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩61頁(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、目錄第一章:匯編基礎(chǔ)與硬件基礎(chǔ) (2實(shí)驗(yàn)二TPC2300A集成開發(fā)環(huán)境 (2內(nèi)容1.2.2 分段存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)變量的定義 (2內(nèi)容1.2.3 匯編程序設(shè)計(jì)-數(shù)據(jù)串操作 (3內(nèi)容1.2.4 匯編程序設(shè)計(jì)-循環(huán)和分支程序 (3內(nèi)容1.2.5 匯編程序設(shè)計(jì)-子程序及其調(diào)用 (4內(nèi)容1.2.6 匯編程序設(shè)計(jì)-DOS中斷調(diào)用 (5實(shí)驗(yàn)三TPC-2003A接口箱系統(tǒng)硬件及邏輯電路 (6內(nèi)容1.3.2 I/O譯碼電路 (6第二章基礎(chǔ)實(shí)驗(yàn) (7實(shí)驗(yàn)一8253接口芯片基礎(chǔ) (7內(nèi)容2.1.1 8253用于手動(dòng)脈沖計(jì) (7內(nèi)容2.1.2 8253用于分頻 (8實(shí)驗(yàn)二8255接口芯片基礎(chǔ) (9內(nèi)容2.2.1 825

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

3、3內(nèi)容3.3.2:直流電機(jī)測(cè)速 (25實(shí)驗(yàn)四8255綜合實(shí)驗(yàn) (28內(nèi)容3.4.1:步進(jìn)電機(jī)控制 (28第一章:匯編基礎(chǔ)與硬件基礎(chǔ);* *;實(shí)驗(yàn)二TPC2300A集成開發(fā)環(huán)境;* *;內(nèi)容1.2.2 分段存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)變量的定義;*;* *;* 編寫程序統(tǒng)計(jì)字符串str的字符個(gè)數(shù),*;*存于counts單元。字符串以“$”為結(jié)束符,*;* 長(zhǎng)度小于255個(gè)字符。*;* *;* 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 ;存儲(chǔ)字符的個(gè)數(shù)mov ah,4chint21hmycode endsend start;*end of program 1-2-2.asm*內(nèi)容1.2.3 匯編程序設(shè)計(jì)-數(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*;內(nèi)容1.2.4 匯編程序設(shè)計(jì)-循環(huán)和分支程序;*;* 在字節(jié)存儲(chǔ)單元d1、d2和d3中存有三個(gè)*;*不相等無符號(hào)數(shù),由大到小排列后存于d1、d2、d2,*;* 注意使用無符號(hào)數(shù)比較時(shí)的轉(zhuǎn)移指令。*;* 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*;內(nèi)容1.2.5 匯編程序設(shè)計(jì)-子程序及其調(diào)用;* *;*

8、計(jì)算3個(gè)帶符號(hào)數(shù)的絕對(duì)值之和,三個(gè)數(shù)長(zhǎng)度為*;* 字類型,要求用子程序計(jì)算絕對(duì)值,用主程序?qū)崿F(xiàn)*;* 累加;整理實(shí)驗(yàn)結(jié)果。*;* 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 ;絕對(duì)值之和mov ah,4chint 21hsubabs proc nearand al, aljns bckneg albck: retsubabs endpmycode endsend start;*end of program 1-2-5.asm*;內(nèi)容1.2.6 匯編程序設(shè)計(jì)-DOS中斷調(diào)用;*;* 利用DOS中斷6號(hào)功能調(diào)用,在屏幕上顯示字符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調(diào)用,功能好06,dl中為在屏幕上顯示的字符int 21hinc dl ;下一個(gè)字符ASCIIloop next ;顯示下一個(gè)字符mov ah,4chint 21hcode endsend start;*end of program 1-2-6.asm*;實(shí)驗(yàn)三TPC-2003A接口箱系統(tǒng)硬件及邏輯電路內(nèi)容1.3.2 I/O譯碼電路;*;* Create Data: 26/06/2009 YHB *;* Prog ID:

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

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

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

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

15、'-'F',其ASCII碼值為計(jì)數(shù)值加37H, A+37h=41hnum: add dl,30hmov ah,02h ;中斷功能號(hào)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*;內(nèi)容2.1.2 8253用于分頻; ;*; ;* 用1MHz的頻率源,輸出1Hz的頻率,*; ;* 用示波器或者邏輯筆觀察*;* *;* Create Data

16、: 26/06/2009 YHB *;* Prog ID: 2-1-2.asm *;*; ioport equ 0ec00h-0280h ;0ec00h替換為本機(jī)基地址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)計(jì)數(shù)初值1000mov dx,io8253aout dx,al ;先

17、寫入低字節(jié)mov al,ahout dx,al ;后寫入高字節(jié)mov dx,io8253dmov al,76h ;設(shè)8253通道1工作方式2out dx,al ;寫入控制字mov ax,1000 ;寫入循環(huán)計(jì)數(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*;實(shí)驗(yàn)二8255接口芯片基礎(chǔ)內(nèi)容2.2.1 8255作為基本輸入輸出;*;* *;* 端口設(shè)置: C口輸入,A口輸出*;* *;*

18、Create Data: 26/06/2009 YHB *;* Prog ID: 2-2-1.asm *;*;ioport equ 0d400h-0280h ;0d400h替換為本機(jī)基地址io55a equ ioport+288hio55ctl equ ioport+28bhio55c equ ioport+28ahcode segmentassume cs:codestart: mov dx,io55ctl ;設(shè)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*;內(nèi)容2.2.2 8255方式0的應(yīng)用-紅綠燈控制;*;*;* *;* 十字路口紅綠燈模擬*;* 端口各燈的設(shè)置: *;* 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替換為本機(jī)基地址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 ;中斷功能號(hào)09hint 21hctn: mov dx,io55ctlmov al,90hout dx,al ;設(shè)置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 ;延時(shí)子程序,采用寄存器自減實(shí)現(xiàn)mov cx,0ffffhcxdown: mov s

23、i,0ffffhsidown: dec sijnz sidownloop cxdownretdelay endpcode endsend start;*end of program 2-2-2.asm*;內(nèi)容2.2.3 8255對(duì)8253GATE的控制;*;* 8255對(duì)8253計(jì)數(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計(jì)數(shù)器2io53_1 equ ioport+281h ;8253計(jì)數(shù)器1io53_0 equ ioport+280h ;8253計(jì)數(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 ;計(jì)數(shù)器0,方式3,先讀寫低8位,再讀寫高8位out dx,al ;送控制端口mov dx,io53_0mov ax,10000 ;輸入時(shí)鐘1MHZ,計(jì)數(shù)初值50000,輸出時(shí)鐘周期

26、50msout dx,alnopnopmov al,ahout dx,almov dx,io53ctlmov al,54h ;計(jì)數(shù)器1,方式2,只讀寫低8位out dx,al ;送控制端口mov dx,io53_1mov al,100 ;輸入CLK1接OUT0,計(jì)數(shù)初值100out dx,al ;送初值mov dx,io53ctlmov al,94h ;計(jì)數(shù)器2,方式2,只讀寫低8位out dx,almov dx,io53_2mov al,0fh ;計(jì)數(shù)初值out dx,alctn: mov dx,io53_2;讀當(dāng)前計(jì)數(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,轉(zhuǎn)seth,mov dx,io55cmov al,0h ;否者,設(shè)置PC0為低電平out dx,aljmp ctnseth: mov dx,io55c ;設(shè)置PC0為高電平mov al,0ffhout dx,aljmp ctnstp: mov ah,4ch ;退出程序,返回DOSint 21hleddisp proc nearpush dxin al,dx ;讀當(dāng)前計(jì)數(shù)值mov bx,o

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

29、00h由本機(jī)接口卡實(shí)際基地址代替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,二進(jìn)制計(jì)數(shù)out dx,almov al,0fh ;計(jì)數(shù)初值mov dx,io53_0out dx,alctn: call leddisp ;調(diào)LED顯示子程序push dx ;保存8253-2通道端口地址mov ah,06hmov dl,0ffhint 21hpop dxjz ctn ;沒有鍵按下時(shí),繼續(xù)循環(huán)mov ah,4ch ;有鍵按下,退出int 21hleddisp proc nearpush dxin al,dx ;讀當(dāng)前計(jì)數(shù)值mov bx,offset led ;bx為數(shù)碼表的起始地址xlat ;求出相應(yīng)的段碼代表的LED數(shù)字,存于al mov dx,io5

32、5a ;從8255的A口輸出out dx,alpop dxretleddisp endpcode endsend start;*end of program 2-2-3.asm*;第三章綜合實(shí)驗(yàn)實(shí)驗(yàn)一AD/DA接口芯片基礎(chǔ)內(nèi)容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替換為本機(jī)基地址io0809a equ ioport+298hcode segmentassume

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

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

35、下,則結(jié)束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*;內(nèi)容3.1.2:DAC0832的波形輸出功能;*;* *;* DAC0832的

36、波形輸出功能*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-1-2.asm *;*;ioport equ 0ec00h-0280h ;0ec00h替換為本機(jī)基地址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 ;若無則轉(zhuǎn)LLL,zf=1無鍵按下,zf=0有鍵按下則結(jié)束mov ah,4ch ;返回DOSint 21hcode endsend start;*end of program 3-1-2.asm*;實(shí)驗(yàn)一8253/8255綜合實(shí)驗(yàn)內(nèi)容3.2.1: 繼電器控制;*;*;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-2-1.asm *;*;ioport equ 0ec00h-0280h ;0ec00h由本機(jī)接口卡實(shí)際基地址代替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 ;設(shè)8255為A口輸入,C口輸出,控制口mov al,90h ;控制字lll: out dx,almov al,01 ;將PC0置位out dx,al ;送控制字到控制口call delay ;延時(shí)5smov al,0 ;將PC0復(fù)位out dx,alcall delay ;延時(shí)5sjmp lll ;轉(zhuǎn)llldelay proc near

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

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

41、在LED上輸出F0的計(jì)數(shù)值*;* *;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-2-2.asm *;*;data segmentioport equ 0ec00h-0280h ;0ec00h由本機(jī)接口卡實(shí)際基地址代替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)計(jì)數(shù)初值1000mov dx,io53_0out dx,al ;先寫入低字節(jié)out dx,al ;后寫入高字節(jié)mov dx,io53ctlmov al,76h ;設(shè)8253通道1工作方式2out dx,almov ax,1000 ;寫入循環(huán)計(jì)數(shù)初值1000mov dx,io53_1out dx,al ;先寫低字節(jié)mov a

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

45、 ;求出相應(yīng)的段碼代表的LED數(shù)字,存于al mov dx,io55a ;從8255的A口輸出out dx,alpop dxretleddisp endpcode endsend start;*end of program 3-2-2.asm*;內(nèi)容3.2.3 直流電機(jī)轉(zhuǎn)速顯示與計(jì)算;* *;* 在屏幕上顯示編碼器脈沖數(shù)*;* 及計(jì)數(shù)器時(shí)間,手工計(jì)算出直流電機(jī)轉(zhuǎn)速*;* Create Data: 26/06/2009 YHB *;* Prog ID: 3-2-3.asm *;*;ioport equ 0ec00h-0280h ;0ec00h由本機(jī)的接口卡基地址代替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計(jì)數(shù)器2io53_1 equ ioport+281h ;8253計(jì)數(shù)器1io53_0 equ ioport+280h ;8253計(jì)數(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 ;計(jì)數(shù)器0,方式3,先讀寫低8位,再讀寫高8位out dx,al ;送控制端口mov dx,io53_0mov ax,50000 ;輸入時(shí)鐘1MHZ,計(jì)數(shù)初值50000,輸出時(shí)鐘周期50msout dx,alnopnopmov al,ahout dx,almov dx,io53ctlmov al,54h ;計(jì)數(shù)器1,方式2,只讀寫低8位out dx,al ;送控制端口mov dx,io53_1mov al,0 ;輸入CLK1接OUT0,計(jì)數(shù)初值100out dx,al ;送初值mov dx,io53ctlmov al,0b4h ;計(jì)數(shù)器2,方式2,先讀寫低8位,再讀寫高8位out dx,al ;CLK2接直流電機(jī)計(jì)數(shù)器mov dx,io53_2mov al,0ffh ;計(jì)數(shù)初值out dx,alnopnopout dx,alctn: mov dh,04mov dl,03mov ah,02int 10hmov dx,offset

溫馨提示

  • 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)論