微型计算机原理及应用实验报告清零实验,北京科技大学微机原理及应用实验报告.docx...
北京科技大學微機原理及應用實驗報告.docx
微機原理及應用實驗報告學院機械工程學院班級機自1104學號41140194姓名李文虎組員王靖宇實驗一 8253定時器計數器(2013年12月19日機電樓305)1. 實驗目的掌握8253方式0的工作原理及編程方法。2. 實驗內容 按圖7虛線連接電路,將計數器0設置為方式0,計數器初值為NN0FH,用手動逐個輸入單脈沖,編程使計數值在屏幕上顯示,并同時用邏輯筆觀察OUT0電平變化當輸入N1個脈沖后OUT0變高電平。3. 參考流程圖4. 程序編碼ioportequ 0c800h-0280h Io8253a equ ioport283hio8253bequ ioport280hcode segment assume cscodestart mov al,14h ; 通道0為工作方式2 mov dx,io8253a out dx,al mov dx,io8253b ;送計數初值為0FH mov al,0fh out dx,allll in al,dx ;讀計數值 call disp ;調顯示子程序 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz lll mov ah,4ch ;退出 int 21h disp proc near ;顯示子程序 push dx and al,0fh ;首先取低四位 mov dl,al cmp dl,9 ;判斷是否9 jle num ;若是則為0-9,ASCII碼加30H add dl,7 ;否則為A-F,ASCII碼加37Hnum add dl,30h mov ah,02h ;顯示 int 21h mov dl,0dh ;加回車符 int 21h mov dl,0ah ;加換行符 int 21h pop dx ret ;子程序返回disp endpcode ends end start5. 實驗現象撥動觸發器開關一次產生一個脈沖,撥動14次后綠燈亮,再撥一次紅燈又亮。重新撥動14次,綠燈再亮6. 實驗心得初次使用DOC系統,對微機原理的編程理解更加深入。實驗二 8253定時器計數器(2013年12月19日機電樓305)1. 實驗目的掌握8253方式0的工作原理及編程方法。2. 實驗內容按圖8連接電路,將計數器0、計數器1分別設置為方式3,計數初值設為1000,用邏輯筆觀察OUT1輸出電平的變化頻率1HZ。3. 編程流程圖4. 程序編碼ioport equ 0c800h-0280h Io8253a equ ioport283hio8253bequ ioport280hio8253c equ ioport282hcode segment assume cscodestart mov al,27h ; mov dx,io8253a out dx,al mov dx,io8253b mov al,10h out dx,al mov al,01100111B mov dx,io8253aout dx,almov dx,io8253cmov al,10h out dx,al mov ah,4ch int 21hcode ends end start5. 實驗現象8253通道0和通道1均工作在方式3,計數初值均為1000。通道0的時鐘輸入為1MHz標準脈沖,產生1000Hz的方波;通道1以通道0輸出的1000Hz方波脈沖為輸入,產生1Hz的方波。邏輯筆(接OUT1)的紅燈和綠燈1秒內交替亮6. 實驗心得掌握了解8253芯片的工作及編程。實驗三2.8255可編程并行接口(2013年12月27日機電樓305)1. 實驗目的掌握8255方式0的工作原理及使用方法。2. 實驗內容1實驗電路如圖6,8255C口接邏輯電平開關K0K7,A口接LED顯示電路L0L7。2編程從8255C口輸入數據,再從A口輸出。3. 編程流程圖4. 程序編碼ioport equ 0c800h-0280hio8255aequ ioport288hio8255bequ ioport28bhio8255cequ ioport28ahcode segment assumecscodestart movdx,io8255b moval,8bhoutdx,alinout movdx,io8255c inal,dx movdx,io8255a outdx,almovdl,0ffh movah,06hint21h jzinoutmovah,4ch int21hcodeendsendstart5. 實驗現象八個開關的狀態,一一對應控制8個LED燈6. 實驗心得對8255A工作在方式0的工作狀態有了深刻的認識和了解。實驗四七段數碼管實驗(2013年12月27日機電樓305)1. 實驗目的掌握數碼管顯示數字的原理2. 實驗內容 靜態顯示按圖10a連接好電路,將8255的A口PA0PA6分別與七段數碼管的段碼驅動輸入端ag相連,位碼驅動輸入端S1接5V選中,S0、dp接地關閉。編程從鍵盤輸入一位十進制數字09,在七段數碼管上顯示出來。3. 編程流程圖4. 程序編碼data segment ioport equ 200h io8255a equ 200h io8255cc equ 203h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah, a num 09h,0dh,0ah, data ends code segment assume cscode,dsdata start mov ax,data mov ds,ax mov dx,io8255cc;使8255的A口為輸出方式 mov al,80h out dx,al sss mov dx,offset mesg1 ;顯示提示信息 mov ah,09h int 21hmov ah,01;從鍵盤接收字符 int 21h cmp al,0 ;是否小于0 jl exit ;若是則退出 cmp al,9 ;是否大于9 jg exit ;若是則退出 sub al,30h ;將所得字符的ASCII碼減30H mov bx,offset led ;bx為數碼表的起始地址 xlat ;求出相應的段碼 mov dx,io8255a;從8255的A口輸出 out dx,al jmp sss ;轉SSS exit mov ah,4ch ;返回DOS int 21h code ends end start 5. 實驗現象鍵盤輸入數字,七段數碼管顯示相應的數字。6. 實驗心得七段數碼管有共陰極、共陽極之分,實驗所用屬于共陰極數碼管,在數碼段程序需弄清。實驗五競賽搶答器實驗(2013年12月27日機電樓305)1. 實驗目的1 了解微機化競賽搶答器的基本原理。2 進一步學習使用并行接口。2. 實驗內容圖12為競賽搶答器模擬的原理圖,邏輯開關K0K7代表競賽搶答按鈕07號,當某邏輯電平開關置“1”時,相當某組搶答按鈕按下。在七段數碼管上將其組號07顯示出,并使微機揚聲器響一下。3. 編程流程圖4. 程序編碼data segment ioportequ 0d400h-0280h io8255aequ ioport28ah io8255bequ ioport28bh io8255cequ ioport288h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;數碼表0-7data endscode segment assume cscode,dsdatastartmov ax,data mov ds,ax mov dx,io8255b ;設8255為A口輸出,C口輸入 mov ax,89h out dx,al mov bx,offset led ;使BX指向段碼首址sssmov dx,io8255a in al,dx ;從8255的C口輸入數據 or al,al ;比較是否為0 je sss ;若為0,則表明無鍵按下,轉sss mov cl,0ffh ;cl作計數器,初值為-1rrshr al,1 ;shr指令影響CF inc cl ;inc指令不影響CF,用于記錄al右移到CF1的次數 jnc rr mov al,cl xlat mov dx,io8255c out dx,al mov dl,7 ;響鈴 ASCII碼為07 mov ah,2 int 21hwaimov ah,1 int 21h cmp al,20h ;是否為空格 jne eee ;不是,轉eee mov al,0 ;是,關滅燈 mov dx,io8255c out dx,al jmp ssseeemov ah,4ch ;返回 int 21hcode ends end start5. 實驗現象每次數碼顯示器只顯示第一個按下的按鈕,后來按下的按鈕沒有輸入。6. 實驗心得競賽搶答器程序采用移位的方法控制編程。實驗六步進電機控制實驗(2013年12月27日機電樓305)1. 實驗目的1 了解步進電機控制的基本原理。2 掌握控制步進電機轉動的編程方法。2. 實驗內容1 按圖14連接線路,利用8255輸出脈沖序列,開關K0K6控制步進電機轉速,K7控制步進電機轉向。8255 CS接288H28FH。PA0PA3接BABD;PC0PC7接K0K7。2 編程當K0K6中某一開關為“1”向上撥時步進電機啟動。K7向上撥電機正轉,向下撥電機反轉。3. 程序流程圖4. 程序編碼data segment ioport equ 0c800h-0280h p55a equ ioport288h ;8255 a port output p55c equ ioport28ah ;8255 c port p55ctl equ ioport28bh ;8255 contrl port buf db 0 ;定義一個字節數據(用來存放開關狀態)mes db k0-k6 are speed control,0ah,0dh db k6 is the lowest speed ,0ah,0dh db k0 is the highest speed,0ah,0dh db k7 is the direction control,0ah,0dh, ;在屏幕上輸出一段符號,顯示程序處于執行狀態data endscode segmentassume cscode,dsdatastart mov ax,data mov ds,ax ;程序的初始化 mov dx,offset mes mov ah,09 int 21h dos功能,;調用顯示字符串 mov dx,p55ctl mov al,8bh ;控制字01001011 c , a output out dx,al ;8255 a 初始化 mov buf,33h ;buf初始化為00110011bout1 mov al,buf ;將buf值置入al寄存器并經a口輸出 mov dx,p55a out dx,al push dx mov ah,06h mov dl,0ffh int 21h ;判斷是否有鍵按下 pop dx je in1 ;無鍵按下,執行掃描開關 mov ah,4ch int 21h ;有鍵按下,返回odsin1 mov dx,p55c in al,dx ;讀取開關狀態test al,00h jnz k0 test al,01h jnz k1 test al,02h jnz k2 test al,03h jnz k3 test al,04h jnz k4 test al,05h jnz k5 test al,06h jnz k6 zx0 call delay ;調用延時子程序 mov al,buf ror al,1 ;右移,正轉 mov buf,al jmp out1 nx0 call delay ;調用延時子程序 mov al,buf rol al,1 ;左移,反轉 mov buf,al jmp out1 delay proc near ;定義循環函數delaydelay1 mov cx,0ffffh delay2 loop delay2 dec bl jnz delay1 ret delay endp code ends end start 5. 實驗現象K7控制電機的正反轉,K0K6分別控制電機的一個轉速。6. 實驗心得及總結(用38線制控制電機的轉速,K7控制正反轉。)程序編程data segment ioport equ 0c800h-0280h p55a equ ioport288h ;8255 a port output p55c equ ioport28ah ;8255 c port p55ctl equ ioport28bh ;8255 contrl port buf db 0 ;定義一個字節數據(用來存放開關狀態)mes db k0-k6 are speed control,0ah,0dh db k6 is the lowest speed ,0ah,0dh db k0 is the highest speed,0ah,0dh db k7 is the direction control,0ah,0dh, ;在屏幕上輸出一段符號,顯示程序處于執行狀態data endscode segmentassume cscode,dsdatastart mov ax,data mov ds,ax ;程序的初始化 mov dx,offset mes mov ah,09 int 21h dos功能,;調用顯示字符串 mov dx,p55ctl mov al,8bh ;控制字01001011 c , a output out dx,al ;8255 a 初始化 mov buf,33h ;buf初始化為00110011bout1 mov al,buf ;將buf值置入al寄存器并經a口輸出 mov dx,p55a out dx,al push dx mov ah,06h mov dl,0ffh int 21h ;判斷是否有鍵按下 pop dx je in1 ;無鍵按下,執行掃描開關 mov ah,4ch int 21h ;有鍵按下,返回odsin1 mov dx,p55c in al,dx ;讀取開關狀態test al,01h jnz k0 test al,02h jnz k1 test al,04h jnz k2 test al,08h jnz k3 test al,10h jnz k4 test al,20h jnz k5 test al,40h jnz k6 zx0 call delay ;調用延時子程序 mov al,buf ror al,1 ;右移,正轉 mov buf,al jmp out1 nx0 call delay ;調用延時子程序 mov al,buf rol al,1 ;左移,反轉 mov buf,al jmp out1 delay proc near ;定義循環函數delaydelay1 mov cx,0ffffh delay2 loop delay2 dec bl jnz delay1 ret delay endp code ends end start 該程序段實現了用三個開關控制電機的八個轉速,通過開關的不同組合,實現不同的高低電平的組合,從而控制電機的不同轉速。實驗七用8255A芯片,將一組8個開關的狀態讀入,存到內存的某個位置,然后將讀入的數據再利用8255A輸出到一個LED顯示器上顯示(設開關的編號為07,每次利用LED顯示編號最小的閉合開關序號,例如,當前序號為1和5的開關薄荷,則利用LED顯示一個“1“)(2013年12月30日機電樓305)1. 實驗目的;掌握8255方式0的工作原理及使用方法。2. 實驗內容用8255A芯片,將一組8個開關的狀態讀入,存到內存的某個位置,然后將讀入的數據再利用8255A輸出到一個LED顯示器上顯示(設開關的編號為07,每次利用LED顯示編號最小的閉合開關序號,例如,當前序號為1和5的開關薄荷,則利用LED顯示一個“1“)3. 程序流程圖4. 程序編碼ioport equ 0c800h-280hio8255a equ ioport288hio8255c equ ioport28ahio8255k equ ioport28bhcode segment assume cscodestart mov dx,io8255k mov al,8bh out dx,alL1 mov dx,io8255cin al.dxmov cl,8L2 test al,01h jnz L3 shr al,1 loop L2L3 and al,01hror al,al mov dx,io8255a out dx,al mov ah,01h int 16h jz L1 mov ah,4ch int 21hcode ends end start5. 實驗現象當只有一個開關閉合時,則與此開關相對應的LED燈亮;當有N個開關依次閉合是,則每次總是尋找到那個較小數所對應的LED燈亮起來。
總結
以上是生活随笔為你收集整理的微型计算机原理及应用实验报告清零实验,北京科技大学微机原理及应用实验报告.docx...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx 作为静态资源服务器,配置静态
- 下一篇: 数字电视-DVB介绍